文本相似度分析实例

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)

你可能感兴趣的:(Python)