我是靠谱客的博主 听话皮皮虾,这篇文章主要介绍Python实现简单的文本相似度分析,现在分享给大家,希望可以做个参考。

注:本文参考链接
总结文本相似度分析的步骤:
1、读取文档
2、对要计算的多篇文档进行分词
3、对文档进行整理成指定格式,方便后续进行计算
4、计算出词语的词频
5、【可选】对词频低的词语进行过滤
6、建立语料库词典
7、加载要对比的文档
8、将要对比的文档通过doc2bow转化为词袋模型
9、对词袋模型进行进一步处理,得到新语料库
10、将新语料库通过tfidfmodel进行处理,得到tfidf
11、通过token2id得到特征数
12、稀疏矩阵相似度,从而建立索引
13、得到最终相似度结果

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import jieba from gensim import corpora,models,similarities #目标文档 doc0 = "我不喜欢上海" doc1 = "上海是一个好地方" doc2 = "北京是一个好地方" doc3 = "上海好吃的在哪里" doc4 = "上海好玩的在哪里" doc5 = "上海是好地方" doc6 = "上海路和上海人" doc7 = "喜欢小吃" #测试文档 doc_test="我喜欢上海的小吃" #将目标文档放入列表 all_doc = [] all_doc.append(doc0) all_doc.append(doc1) all_doc.append(doc2) all_doc.append(doc3) all_doc.append(doc4) all_doc.append(doc5) all_doc.append(doc6) all_doc.append(doc7) #用一个列表存放分好的列表词汇 all_doc_list = [] for doc in all_doc: doc_list = [word for word in jieba.cut(doc)] all_doc_list.append(doc_list) #输出列表词汇 print(all_doc_list) #对测试文档分词 doc_test_list = [word for word in jieba.cut(doc_test)] #用Dictionary方法获取词袋 dictionary = corpora.Dictionary(all_doc_list) #词袋中用数字对所有词进行了编号 dictionary.keys() #输出编号与词的对应关系 print(dictionary.token2id) #使用doc2bow制作词料库(一组向量,二维的(编号,频率)) corpus = [dictionary.doc2bow(doc) for doc in all_doc_list] doc_test_vec = dictionary.doc2bow(doc_test_list) #使用tfidf对词料库建模 tfidf = models.TfidfModel(corpus) #获取测试文档每个词的TFIDF值 print(tfidf[doc_test_vec]) #对每个目标文档,分析测试文档的相似度 index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys())) sim = index[tfidf[doc_test_vec]] #输出相似度 print(sim)

最后

以上就是听话皮皮虾最近收集整理的关于Python实现简单的文本相似度分析的全部内容,更多相关Python实现简单内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部