テキスト類似度解析の例

2664 ワード

1.文書2を読み込む.計算する文書を分詞する.ドキュメントを指定形式に整理し、後続の計算を容易にする.語の頻度5を算出する.【オプション】頻度の低い語をフィルタ6.コーパスを介して辞書7を作成する.比較するドキュメント8をロードする.比較するドキュメントをdoc 3 bowで疎ベクトル9に変換する.疎ベクトルをさらに処理する.新語彙ライブラリをtfidfmodelで処理する、tfidf 11を得る.token 2により特徴数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)