日本語文のドキュメントの類似検索を行う. Latent Dirichlet Allocation による.
次のページで公開されている Python プログラムを使用している.
【サイト内の関連ページ】
謝辞:このページで使用しているソフトウェア類の作者に感謝します.
from gensim import similarities index = similarities.MatrixSimilarity(lda_model[bow_corpus]) print(index)
問い合わせを行う文書を doc にセットしている. そして,doc と,コーパス内の全ドキュメントとの類似度を求めている.
doc = "日本の憲法は国民主権,基本的人権の尊重,平和主義" import sys import MeCab m = MeCab.Tagger("-Owakati") stoplist = set('.,。,,,、,EOS,は,の,を,に,が,と,も,で,ば,し,て,う,た,ふ,これ,それ,あれ,この,その,あの,こと,する,ら,〔,〕,「,」,【,】,(,),記号-空白,記号-括弧開,記号-括弧閉,for,a,of,the,and,to,in'.split(',')) a = m.parse(doc.lower()).split() query_bow = dictionary.doc2bow([word for word in a if word not in stoplist]) vec_lda = lda_model[query_bow] sims = index[vec_lda] print(list(enumerate(sims)))
sim_result = sorted(enumerate(sims), key=lambda item: -item[1]) for i, s in enumerate(sim_result): print(s[1], text_corpus[s[0]])