機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

gensimのword2vecを試す。

Word2vecを使って日本語の自然言語処理で分散表現を使おうと思った場合、

事前にが必要。

データクレンジングや学習には結構時間もかかるので、学習済みの公開モデルを使わせていただくのが手っ取り早そう。。

とりあえず、「東北大学 乾・岡崎研究室」で作成されたモデルが良い感じ。
Wikipediaの単語もきれいに分かち書きされている)
辞書にmecab-ipadic-NEologdで使用している??

日本語 Wikipedia エンティティベクトル

やってみた結果はこんな感じ。

# -*- 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

良い感じ。