Word To Vector

以前から気になっていたword2vecを動かしてみました。
これは単語間の類似性をベクトルとして計算します。

参考 : https://code.google.com/p/word2vec/

やはり実際に自分でやってみるといろんなことに気づきました。ファイルがとにかく大きくて処理に時間がかかること。マシンスペックもメモリ、CPUともできるかぎり高いレベルのものがあった方がいいということです。(VMはちょっときついかも)

環境: Ubuntu 14.04 / Virtual Box / Windows 8.1
セットアップ

svn checkout http://word2vec.googlecode.com/svn/trunk/
cd trunk
make
wget http://mattmahoney.net/dc/text8.zip -O text8.gz
gzip -d text8.gz -f
time ./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15

ここまでで下記ツールを使う準備ができました。

./distance vectors.bin
./word-analogy vectors.bin

./demo-word.sh
./demo-phrases.sh
の内容が参考になります。
demo-phrases.shは、word2vecに膨大な時間がかかるので、あきらめました。
w2v_00

どんなファイルかイメージするために、text8の冒頭部分です。
w2v_01

./word2vec -train text8 -output vectors.txt -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -iter 15

上のようにvectors.binをテキスト出力することもできます。以下がその内容で、
見やすくするためにExcelに表示しました。200次元のベクトルになっています。
w2v_02

ツールを使って、近い距離にある単語を出力してみます。vectors.binではあまり十分な結果が得られなかったので、word2vecのサイトにあった、GoogleNews-vectors-negative300.bin を使いました。
w2v_03

次は、前二つの単語の関係から、三つ目の単語から類推できる単語を出力してみます。
w2v_04

今回デフォルトで用意されたデータばかり使いましたが、自分で目的にあったデータを収集すれば、期待どおりの結果を出してくれそうだと思いました。

About

Categories: 未分類 タグ: