テキスト類似度解析の例
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)