1.读取文档
2.对计算的文档进行分词
3.对文档进行整理成指定格式,方便后续进行计算
4.计算出词语的频率
5.【可选】对频率低的词语进行过滤
6.通过语料库建立词典
7.加载要对比的文档
8.将要对比的文档通过doc3bow转换成稀疏向量
9.对稀疏向量进行进一步处理
10.将新语料库通过tfidfmodel进行处理,得到tfidf
11.通过token2得到特征数
12.计算稀疏矩阵相似度,从而建立索引
13.得到最终相似度结果
from gensim import corpora,models,similarities
import jieba
import urllib.request
d1=urllib.request.urlopen("http://127.0.0.1/ljm.html").read().decode("utf-8","ignore")
d2=urllib.request.urlopen("http://127.0.0.1/gcd.html").read().decode("utf-8","ignore") # 1. 读取文档
data1=jieba.cut(d1)
data2=jieba.cut(d2) # 2.对文档进行分词
data11=""
for item in data1:
data11+=item+" "
data21=""
for item in data2:
data21+=item+" "
documents=[data11,data21] # 3.对文档进行整理成指定格式,方便后续进行计算
texts=[[word for word in document.split()]
for document in documents]
from collections import defaultdict
frequency=defaultdict(int)
for text in texts:
for token in text:
frequency[token]+=1 #4.计算出词语的频率
texts=[[token for token in text if frequency[token]>25]
for text in texts] # 5.【可选】对频率低的词语进行过滤
dictionary=corpora.Dictionary(texts)
dictionary.save('D:/Python35/12345.txt')
doc3="D:/Python35/d3.txt" # 6.通过语料库建立词典
d3=urllib.request.urlopen("http://127.0.0.1/dmbj.html").read().decode("utf-8","ignore")
data3=jieba.cut(d3)
data31=""
for item in data3:
data31+=item+" " #7.加载要对比的文档
new_doc=data31
new_vec=dictionary.doc2bow(new_doc.split())
corpus=[dictionary.doc2bow(text) for text in texts] #8.将要对比的文档通过doc3bow转换成稀疏向量
corpora.MmCorpus.serialize('D:/Python35/6562.txt',corpus)
tfidf=models.TfidfModel(corpus) #10.将新语料库通过tfidfmodel进行处理,得到tfidf
featureNum=len(dictionary.token2id.keys()) #11.通过token2得到特征数
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=featureNum) #12.计算稀疏矩阵相似度,从而建立索引
sims=index[tfidf[new_vec]]
print(sims)