word2vec + janome で、類似単語の抽出。 自然言語処理(1)
index:
参考
https://blog.aidemy.net/entry/2018/06/15/174827
学習データ
小説データ、 wget 等でコピーしておきます
http://www.aozora.gr.jp/cards/000148/files/794_ruby_4237.zip
sanshiro.txt
コード
・学習の処理
参考記事のと、ほぼ同じですが。
前処理で、形態素解析
モデル定義、学習。学習済モデルの保存
word2vec.Word2Vec のオプションは。任意で変更する
必用がありそうです。
# Word2Vecライブラリのロード from gensim.models import word2vec # train model = word2vec.Word2Vec(word_list, size=100,min_count=5,window=5,iter=100) model.save("./book.model")
・評価
モデルロード、評価
# encoding: utf-8 from gensim.models import word2vec model = word2vec.Word2Vec.load("./book.model") # posit= u"時代" #print(model.__dict__['wv'][ posit ]) print("posit=", posit) results = model.wv.most_similar(positive=[posit], topn=10 ) for result in results: print(result)
・結果
適当なキー(例: 時代) で、評価
model.wv.most_similar(positive=[posit], topn=10 )
topn は、トップ単語の出力数を指定できるようです。
posit= 時代 ('青年', 0.603624701499939) ('趣', 0.5834314823150635) ('的', 0.5281779766082764) ('世', 0.5107872486114502) ('人格', 0.5079870223999023) ('思想', 0.5060170292854309) ('今日', 0.5013590455055237) ('小さん', 0.4987122118473053) ('人生', 0.49362632632255554) ('我々', 0.4930008053779602)