Pythonによるテキスト類似度解析
2201 ワード
**
一、テキスト分析プロセス:
1.文書2を読み込む.計算する複数の文書を分詞3.ドキュメントを指定形式に整理し、後続の計算を容易にする.語の頻度5を算出する.オプション、低周波数語をフィルタ6.コーパスを介して辞書7を作成する.比較するドキュメント8をロードする.比較するドキュメントをdoc 2 bowで疎ベクトル9に変換する.疎ベクトルをさらに処理する、新しい語彙ライブラリ、10を得る.TF-idfモデルによる新規ライブラリ処理によりtfidf 11が得る.token 2 idにより特徴数12が得る.疎行列の類似度を算出する、インデックス13を作成する.最終類似度結果を得る
二、コード例
結果:42.85%の類似度
Building prefix dict from the default dictionary … Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache Loading model cost 1.007 seconds. Prefix dict has been built succesfully. [0. 0.42851594]
Process finished with exit code 0
一、テキスト分析プロセス:
1.文書2を読み込む.計算する複数の文書を分詞3.ドキュメントを指定形式に整理し、後続の計算を容易にする.語の頻度5を算出する.オプション、低周波数語をフィルタ6.コーパスを介して辞書7を作成する.比較するドキュメント8をロードする.比較するドキュメントをdoc 2 bowで疎ベクトル9に変換する.疎ベクトルをさらに処理する、新しい語彙ライブラリ、10を得る.TF-idfモデルによる新規ライブラリ処理によりtfidf 11が得る.token 2 idにより特徴数12が得る.疎行列の類似度を算出する、インデックス13を作成する.最終類似度結果を得る
二、コード例
from gensim import corpora,models,similarities
import jieba
from collections import defaultdict
# 1.
doc1 = "F:/result/1.txt"
doc2 = "F:/result/3.txt"
d1 = open(doc1,encoding="utf-8").read()
d2 = open(doc2,encoding="utf-8").read()
# 2.
data1 = jieba.cut(d1)
data2 = jieba.cut(d2)
# 3. ,
data11 = ""
for item in data1:
data11+=item+" "
data22 = ""
for item in data2:
data22+=item+" "
documents = [data11,data22]
# 4.
texts = [[word for word in document.split()]
for document in documents]
frequency = defaultdict(int)
for text in texts:
for token in text:
frequency[token]+=1
# 5. 、
texts = [[word for word in text if frequency[token]>1000]
for text in texts] #
# 6.
dictionary = corpora.Dictionary(texts)
dictionary.save("F:/result/wenben3.txt")
# 7.
doc3 = "F:/result/4.txt"
d3 = open(doc3,encoding="utf-8").read()
# 8. doc2bow
data3 = jieba.cut(d3)
data33 = ""
for item in data3:
data33+=item+""
new_doc = data33
new_vec = dictionary.doc2bow(new_doc.split()) #
corpus = [dictionary.doc2bow(text) for text in texts]
# 10. TF-idf , tfidf
tfidf = models.TfidfModel(corpus)
# 11. token2id
featureNum = len(dictionary.token2id.keys())
# 12. ,
index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNum)
sim = index[tfidf[new_vec]]
print(sim)
結果:42.85%の類似度
Building prefix dict from the default dictionary … Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache Loading model cost 1.007 seconds. Prefix dict has been built succesfully. [0. 0.42851594]
Process finished with exit code 0