Pythonは簡単なテキスト類似度分析を実現
1596 ワード
注:本文はリンクを参照してテキスト類似度分析の手順をまとめる:1、ドキュメントを読み取る2、計算する複数のドキュメントを分詞する3、ドキュメントを指定したフォーマットに整理し、後続の計算を容易にする4、単語の語周波数を計算する5、【オプション】単語周波数の低い単語をフィルタする6、コーパス辞書を作成する7、比較するドキュメントをロードする8、比較するドキュメントをdoc 2 bowで単語袋モデルに変換する9、語袋モデルをさらに処理し、新語ライブラリ10を得、新語ライブラリをtfidfmodelで処理し、tfidf 11を得、token 2 idで特徴数12、疎行列類似度を得、インデックス13を確立し、最終類似度結果を得る
import jieba
from gensim import corpora,models,similarities
#
doc0 = " "
doc1 = " "
doc2 = " "
doc3 = " "
doc4 = " "
doc5 = " "
doc6 = " "
doc7 = " "
#
doc_test=" "
#
all_doc = []
all_doc.append(doc0)
all_doc.append(doc1)
all_doc.append(doc2)
all_doc.append(doc3)
all_doc.append(doc4)
all_doc.append(doc5)
all_doc.append(doc6)
all_doc.append(doc7)
#
all_doc_list = []
for doc in all_doc:
doc_list = [word for word in jieba.cut(doc)]
all_doc_list.append(doc_list)
#
print(all_doc_list)
#
doc_test_list = [word for word in jieba.cut(doc_test)]
# Dictionary
dictionary = corpora.Dictionary(all_doc_list)
#
dictionary.keys()
#
print(dictionary.token2id)
# doc2bow ( , ( , ))
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]
doc_test_vec = dictionary.doc2bow(doc_test_list)
# tfidf
tfidf = models.TfidfModel(corpus)
# TFIDF
print(tfidf[doc_test_vec])
# ,
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
sim = index[tfidf[doc_test_vec]]
#
print(sim)