步骤:
1、读取文档
2、对要计算的多篇文档进行分词
3、对文档进行整理成指定的格式,方便后续进行计算
4、计算出词语进行过滤
5、可选,对频率低的词语进行过滤
6、通过语料库建立词典
7、加载要对比的文档
8、将要对比的文档通过doc2bow转换为稀疏向量
9、对稀疏向量进行进一步处理,得到新语料库
10、通过T-IDFmodel将新语料库进行处理,得到TF-IDF值
11、通过token2id得到特征数
12、稀疏矩阵的相似度,从而建立索引,得到最终相似度结果
from gensim import corpora,similarities,models import jieba from collections import defaultdict ''' 1、读取文档 2、对要计算的多篇文档进行分词 3、对文档进行整理成指定的格式,方便后续进行计算 4、计算出词语进行过滤 5、可选,对频率低的词语进行过滤 6、通过语料库建立词典 7、加载要对比的文档 8、将要对比的文档通过doc2bow转换为稀疏向量 9、对稀疏向量进行进一步处理,得到新语料库 10、通过T-IDFmodel将新语料库进行处理,得到TF-IDF值 11、通过token2id得到特征数 12、稀疏矩阵的相似度,从而建立索引,得到最终相似度结果 ''' #读取文档 dic1=open('/root/python_test/mining/text1.txt').read() #分词 cut1=jieba.cut(dic1) #组合成相应的格式 documents='' for cut_line in cut1: documents+=cut_line+' ' cur1=[[line for line in document.split()] for document in documents] frequent=defaultdict(int) for index in cur1: for token in index: frequent[token]+=1 #对频率低的分词过滤 curp1=[[word for word in index if frequent[token]>0] for index in cur1] #建立语料库 corpora1=corpora.Dictionary(curp1) corpora1.save('/root/python_test/mining/text3') #加载对比的文档 dic2=open('/root/python_test/mining/sjk.txt').read() #分词 cut2=jieba.cut(dic2) #组合格式 document1='' for cut_line1 in cut2: document1+=cut_line1+' ' document2=document1 #获取对比文件的稀疏向量 new_rec=corpora1.doc2bow(document2.split()) rec2=[corpora1.doc2bow(index) for index in cur1] #获取语料库特征数,即个数 feat2=len(corpora1.token2id.keys()) #对语料库建立tf-idf模型 tfidf=models.TfidfModel(rec2) #获取索引 index1=similarities.SparseMatrixSimilarity(tfidf[rec2],num_features=feat2) #对比获取相似性 sim=index1[tfidf[new_rec]] print(sim)