gensimのword2vecを試す。
Word2vecを使って日本語の自然言語処理で分散表現を使おうと思った場合、
事前にが必要。
データクレンジングや学習には結構時間もかかるので、学習済みの公開モデルを使わせていただくのが手っ取り早そう。。
とりあえず、「東北大学 乾・岡崎研究室」で作成されたモデルが良い感じ。
(Wikipediaの単語もきれいに分かち書きされている)
辞書にmecab-ipadic-NEologdで使用している??
やってみた結果はこんな感じ。
# -*- coding: utf-8 -*- from gensim.models import KeyedVectors model_dir = './gensim/entity_vector/entity_vector.model.bin' model = KeyedVectors.load_word2vec_format(model_dir, binary=True) print model[u'ニュース'].shape print len(model.vocab) >> (200,) >> 1015474
# -*- coding: utf-8 -*- from gensim.models import KeyedVectors model_dir = './gensim/entity_vector/entity_vector.model.bin' model = KeyedVectors.load_word2vec_format(model_dir, binary=True) similar_rugby_list = model.most_similar(u'[ラグビー]') for similar_set in similar_rugby_list: print similar_set[0].encode('utf-8') print similar_set[1] ラグビー 0.768431603909 [サッカー] 0.757181286812 [アイスホッケー] 0.719829678535 [ハンドボール] 0.717178583145 [バレーボール] 0.713906526566
# -*- coding: utf-8 -*- from gensim.models import KeyedVectors model_dir = './gensim/entity_vector/entity_vector.model.bin' model = KeyedVectors.load_word2vec_format(model_dir, binary=True) similar_rugby_list = model.most_similar(positive=[u'[新宿]',u'[大阪府]'],negative=[u'[東京都]']) for similar_set in similar_rugby_list: print similar_set[0].encode('utf-8') print similar_set[1] >> 新宿 - 東京都 = 大阪府 - ? [梅田] 0.682969689369 [ミナミ] 0.662362039089 [日本橋_(大阪市)] 0.656546056271 [心斎橋] 0.655109226704 [千日前] 0.645991802216 [難波] 0.632441759109
良い感じ。