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)