gensim基于lsa算法的文章相似度计算

在这里插入图片描述
当我们获取了许多文档或者新闻,都会有标题,如何将相似的文档聚成一类了?
计算文档相似度。这里不谈算法,直接运用,看结果,后面讨论算法。(文档标题转化为词向量,余弦距离计算)
首先获取了舆情或者新闻的json:
在这里插入图片描述这里面有许多topicSubject
将其所有topicobject提取出来。
python代码如下:

import json
import codecs  
f = file(r'D:/data/files/task_1923.json')
jsonobj = json.load(f)
#列表用序号来查询
output = codecs.open('D:/data/files/topic.txt', 'w+','gbk')
for i in range(1000):
 
    output.write(str(jsonobj['taskId_1923'][i]['topicSubject']) + '\n')
 
output.close( )   
f.close

结果如下:
在这里插入图片描述接下来的工作就是对这些topic进行合并,求出它们的相似度。
然后将其进行分词处理:
在这里插入图片描述

2016高校校园媒体发展报告

与它相似的话题及相似度:

2016高校校园媒体发展报告

1.0

2016高校校园媒体发展报告

1.0

2016高校校园媒体发展报告

1.0

2016中国高校校园媒体发展报告 摘录

0.866025

2016中国高校校园媒体发展报告 摘录

0.866025

2016中国高校校园媒体发展报告 摘录  中青在线

0.774597

晋中交警高校大队为取暖煤 开道

0.408248

一周综述  户户通 工程建设有重大进展 新媒体发展成果喜人

0.333333

园区与高校联动 探索校园文化产业新模式

0.333333

广东庆祝记者节 慎海雄强调以新发展理念推动媒体融合

0.308607

=======================================

消费金融 创新新升升级2016首届金融科技杭州论坛隆重隆重召开召开

与它相似的话题及相似度:

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.933441

=======================================

2015年我国国文文艺文艺片票房增幅达 68

与它相似的话题及相似度:

2015年我国文艺片票房增幅达68%  光明日报

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

2015年我国文艺片票房增幅达68%

0.906928

研究报告显示 2015年我国文艺片票房增幅达68%

0.820349

015年我国文艺片票房增幅达68% 国内社会 国内 天下 新闻中心 台海网

0.577401

=======================================

冯小刚 喜剧 20年开启我不是潘金莲金莲笑里有料

与它相似的话题及相似度:

冯小刚喜剧20年 开启  我不是潘金莲 笑里有料

1.0

冯小刚 我不是潘金莲  终于过审

0.566947

金新 由 胖子烧饼 风头盖过 学军60年...

0.267261

蒙面唱将猜猜猜 我不是一只小小鸟是谁

0.267261

2016年婚恋受阻 2019年婚姻幸福的人

0.227921

2016年婚恋受阻 2019年婚姻幸福的人

0.227921

时光之味 老家年菜复刻之 蒸白菜卷

0.218218

2017年俄克拉荷马大学费用

0.188982

开心麻花 驴得水 公映 最出乎意料喜剧带笑来袭

0.169031

5块喝爆款饮料不是梦  南京这39家小吃饮料店啦

0.154303

=======================================

上海海大大数数据金融发展交流暨贵州金融金融城高铁新城招商推介 推介会 隆重 隆重举行 举行

与它相似的话题及相似度:

...上海大数据金融发展交流暨贵州金融城高铁新城招商推介会隆重举行

0.871058

2016贵阳·上海大数据金融发展交流会隆重举行

0.615929

李扬 互联网金融并非特定的金融业态金融模式

0.502907

他为中小企业代言 谱写北京金融传奇!(带领一家中小银行创造金融历史)

0.41062

从内增性发展到借助资本力量实现跨越式发展 BR  文化 金融 为...

0.367271

首届金融科技杭州论坛召开 消费金融前景广阔

0.350181

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.322117

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.322117

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.322117

消费金融 创新升级 2016首届金融科技杭州论坛隆重召开

0.322117

=======================================

云栖大会南京峰会今召开

与它相似的话题及相似度:

云栖大会      南京峰会今召开

1.0

云栖大会      南京峰会今召开

1.0

九三学社秦皇岛市第七次代表大会召开

0.288675

许昌学院召开培养方案外审专家论证会

0.182574

在无锡新能源大会上 这些政企大佬是这样说的

0.182574

出席省党代会的忻州市代表热烈讨论大会报告

0.182574

第六届全国广播学术研讨会召开

0.166667

5块喝爆款饮料不是梦  南京这39家小吃饮料店啦

0.166667

杭州2017白马湖峰会 一场商业WiFi的饕餮盛宴

0.166667

爱果冻科技召开虚拟现实高校学科建设研讨会

0.166667

=======================================

深谋远虑的任正非也没想到它的崛起!

与它相似的话题及相似度:

深谋远虑的任正非也没想到它的崛起!

1.0

当新一代移动通信技术崛起 第三代半导体可以做些什么

0.353553

任正非放话占领图像时代 剑指VR手机

0.316228

专访余承东 华为如何应对异军崛起的OPPO、vivo  界面 科技

0.267261

Medidata 致力用大数据降低临床试验成本

4.34369e-06

搜狗购物搜索 狂欢大趴  让你做个会省钱的剁手族!

2.28919e-06

又到记者节

2.51457e-07

中华人民共和国网络安全法

1.91852e-07

带你逛 谁说ADM只有展览可以看 我偏要在里面蹲...

1.87661e-07

江干龙湖滟澜星座价格走势、 未来发展趋势分析

1.58325e-07

=======================================

取得了不错的效果。
代码如下:

from gensim import corpora,models,similarities
from collections import defaultdict
import codecs
import jieba
f2 = codecs.open(r"D:/data/files/r.txt",'r','utf-8')
documents = f2.readlines()
 
f1 = codecs.open('D:/data/files/topic.txt', 'r')
topicnames = f1.readlines()
f1.close()
# 去掉停用词
#f = codecs.open(r"D:\tomcat\word2vector\hlt_stop_words.txt",'r')
#stopwords = f.readlines()
#stoplist = set(stopwords)
stoplist = {}.fromkeys([ line.rstrip() for line in codecs.open(r"D:\tomcat\word2vector\hlt_stop_words.txt",'r','utf-8') ])
#stoplist = {}.fromkeys(u'的')
texts = [[word for word in document.split() if word not in stoplist]
         for document in documents]
#print "".join(texts[51])
frequency = defaultdict(int)
for text in texts:
    for token in text:
        frequency[token] += 1
texts = [[token for token in text if frequency[token] > 1]
         for text in texts]
 
dictionary = corpora.Dictionary(texts)   # 生成词典
 
 
dictionary.save('D:/tomcat/word2vector/tmp/deerwester.dict')
 
corpus = [dictionary.doc2bow(text) for text in texts]
corpora.MmCorpus.serialize('D:/tomcat/word2vector/tmp/deerwester.mm', corpus)
corpus = corpora.MmCorpus('D:/tomcat/word2vector/tmp/deerwester.mm')
lsi = models.LsiModel(corpus, id2word=dictionary, num_topics=1000)
doc = ["2016高校校园媒体发展报告",
       "消费金融 创新新升升级2016首届金融科技杭州论坛隆重隆重召开召开 ",
       "2015年我国国文文艺文艺片票房增幅达 68",
       "冯小刚 喜剧 20年开启我不是潘金莲金莲笑里有料 ",
       "上海海大大数数据金融发展交流暨贵州金融金融城高铁新城招商推介 推介会 隆重 隆重举行 举行 ",
       "云栖大会南京峰会今召开 ",
       "深谋远虑的任正非也没想到它的崛起!",
       "015年我国文艺片票房增幅达68% 国内社会 国内 天下 新闻中心 台海网",
       "开公司为3万会员崔永元提供非转基因商品",
       "网上曝光 淘宝兼职是真的吗 揭露刷单陷阱 亲身经历",
       "四川新闻战线践行习近平讲话 讲述四川好故事 传递巴蜀正能量",
       "新闻界热议习近平讲话 唯有创新奋斗方能不辱使命",
       "以习近平总书记系列重要讲话精神为指引忠诚担当 攻坚克难  为全面建成小康社会而奋斗",
       " 她曾主持春晚 因做小三离开央视 当演员却再次做小三 ",
       "在职研究生提供住宿吗 "
        ]
 
for j in range(len(doc)):
 
    words = jieba.cut(doc[j], cut_all=False)
    x =  " ".join(words)
 
    texts = [word for word in x.split() if word not in stoplist]
    texts = " ".join(texts)
    #print texts
    vec_bow = dictionary.doc2bow(texts.split())
    vec_lsi = lsi[vec_bow]
 
#print(vec_lsi)
 
    index = similarities.MatrixSimilarity(lsi[corpus])
 
    index.save('D:/tomcat/word2vector/tmp/deerwester.index')
    index = similarities.MatrixSimilarity.load('D:/tomcat/word2vector/tmp/deerwester.index')
 
    sims = index[vec_lsi]
 
#print(list(enumerate(sims)))
    sims = sorted(enumerate(sims), key=lambda item: -item[1])
 
    print(doc[j])
    print("与它相似的话题及相似度:")
    for i in range(10):
        print(topicnames[sims[i][0]])
        print(sims[i][1])
    print "======================================="

您有什么更好的算法吗?欢迎留言!

猜你喜欢

转载自blog.csdn.net/weixin_44151168/article/details/85161907
今日推荐