自然言語処理 Advent Calendar 2017の記事です。
Word2vecは目的に合わせたコーパス選びが重要だと思います。この記事ではコーパスを変えたときに出力がどう変わるかという一例を紹介します。私がTwitterの位置情報関連の研究しているので、施設名を入力にしたときの出力の違いを見てみます。
Word2vec
今回は、 Word2vecの産みの親Mikolovさんが作ったツールで学習させます。論文公開当初はGoogle Codeにありましたが、Google Codeのサービス終了に伴い、今はGithubにコードがあります。
https://github.com/svn2github/word2vec
Mecabなどで日本語を分かち書きしたテキストファイルを用意して、以下のコマンドで学習します。
./word2vec -train 分かち書きしたテキストファイル名 -output Word2vecのモデルファイル名
例えば、日本語のWikipedia全記事を分かち書きしたテキストをjawiki_wakati.txtというファイル名で保存した場合はこんな感じ。
./word2vec -train jawiki_wakati.txt -output jawiki_vec.txt
今回はデフォルトパラメータで学習しました。Mecabの辞書にはneologdを使いました。
以下のコマンドでcos類似度が高い単語を抽出できます。
./distance モデルファイル名
日本語Wikipediaで学習した結果
実際の例を見てみます。
「ディズニーランド」の場合
ディズニーランドと関連する施設やアトラクションの名前が上位にきてます。
「横浜アリーナ」の場合
こちらは日本武道館や大阪城ホールなど、横浜アリーナと同じように大型ライブをする施設が上位にきているように思います。
ジオタグ付きツイートで学習した結果
今回は2015年7月〜12月の日本語のジオタグ付きツイートで学習しました。
同じ施設に関してTwitterで位置情報が付けられているジオタグ付きツイートで学習した場合を見てみます。
「ディズニーランド」の場合
「夢の国」「TDL」など言い換えや略語、「制服ディズニー」「ハピネスイズヒア」「ペアルック」などその場所で何をしているかに関係する単語が多く見られます。
「横浜アリーナ」の場合
この場合はWikipediaと同様に他の施設名が多くあがっています。3番目に「横アリ」という略語が出ていて、その点ではディズニーランドと同じような感じです。
「横アリ」の場合
この場合は「ライブビューイング」「カウントダウンライブ」など、ディズニーランドの場合と同じくその場所で何をしているかに関係する単語が多く見られます。
ちなみにWikipediaコーパスでの「横アリ」の場合
WikipediaではOut of dictionaryになってしまいました。
まとめ
Word2vecで、コーパスによって出力が大きく変わることを実例で確認しました。目的に合わせたコーパス選び大事!