概述
注:本文参考链接
总结文本相似度分析的步骤:
1、读取文档
2、对要计算的多篇文档进行分词
3、对文档进行整理成指定格式,方便后续进行计算
4、计算出词语的词频
5、【可选】对词频低的词语进行过滤
6、建立语料库词典
7、加载要对比的文档
8、将要对比的文档通过doc2bow转化为词袋模型
9、对词袋模型进行进一步处理,得到新语料库
10、将新语料库通过tfidfmodel进行处理,得到tfidf
11、通过token2id得到特征数
12、稀疏矩阵相似度,从而建立索引
13、得到最终相似度结果
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实现简单的文本相似度分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复