skimlinks

2014年12月31日水曜日

word2vec の2014総括

あと3時間ほどで今年2014年も終わり、という大晦日の現在。
4日前にtwitterで呟いた word2vec の実験総括エントリーを宣言通り書き残しておく。
#電王戦リベンジマッチと紅白歌合戦を見ながら書いている。

今年8月から実験開始して5ヶ月間継続して年越し。
そもそも何故 word2vec の実験を開始したのか、いまや当初の動機が曖昧になってしまった。おそらく twitter で機械学習や自然言語処理に明るい識者による興味深い報告例が流れ始めたのが今年の前半だったように思う。それで自分でも追試してみたくなって実験を開始したのが8月上旬。今から5ヶ月前。

で、word2vec のコーパス選定として、wikipedia や青空文庫などの候補もあったが、結局 twitter を選択した。ネットスラング、流行語などの生の言葉の意味を word2vec がどの程度とらえらえる(=ベクトル化できる)のか、また、大規模ユーザ群の趣味趣向の総体を意味演算可能な形式で表現可能なのか、等を考慮すると、twitter が適していると感じられた。

twitter のクロールは8月上旬に開始
そんな感じで 24時間体制で twitter の日本語ツイートを収集し続け、mecab でわかち書きされたツイートの固まりを word2vec の学習データとして入力し、その学習結果を味見して「あーでもない、こーでもない」と主観的な評価をする実験がスタートした。

中間語の初期実験。頻出語なのでコーパスが小規模でもうまくいきやすい。
コーパスに用いるツイートは twitter 特有のバイアスをある程度除去すべく、ハッシュタグやURLを含むツイート等は対象外とした。また対象言語も日本語に限定した。それらの結果、1日あたり数万ツイート程度がコーパスとして蓄積され続けることになった。
大晦日の現在は 800万ツイート超 のコーパスが得られているが、下記は数十万ツイートしか蓄積されていない、実験開始1週間後のコーパスの学習結果である。

対義語に対して、ある程度の類義語が得られるようになってきた
実験開始から2週間ほど経過し、コーパス規模が100万ツイートを突破し始めた頃、word2vec らしい意味演算とおぼしき結果が得られ始めた。ご当地アイドルの算出である。

AKB:東京、NMB:大阪、HKT:博多、の関係を学習したようにみえる。
「東京」を「アキバ」に置き換えても、ご当地アイドルの関係を保持して算出された。
SKE:名古屋、を追加しても同様にうまくいった。

ご当地アイドルの意味演算結果。「AKB」は「東京」にも「アキバ」にも関係が強い。
しかし、実際、ご当地アイドルの算出は安定してうまくいくわけではない。アイドルグループ間の差異を、地域(ご当地)の差異としてロバストに学習している実感は現在でも正直なところない。ツイートが蓄積されてコーパスが更新されると、算出結果を間違えることが今でもある。ベクトル次元数を含め、ハイパーパラメータを調整して対応可能なのか、それともコーパスを増やしても word2vec の理論限界として意味演算を安定して実行することは困難なのか、このへんは今後の実験を継続して知見をためていきたい。

意味演算は word2vec の最大の特徴ではあるものの、上記のような課題もありそうなので、コーパス規模と類似語の精度がどのように変化していくかを実験評価の基本ポリシーとして継続していった。

「オタク」の類似語。twitter ならでは。wikipedia コーパスだとこうはいかないだろう。
類似語の精度と、ハイパーパラメータ(最たるベクトル次元数)やコーパス種類の関係も時々調べたりもしたが、次元数や種類よりも、まずはコーパスの規模が最重要、という認識は、このブログを書いている大晦日の現在でも変わらない。

「オタク」の類似語の変化をベクトル次元数、コーパス種類に対して評価。
でもやっぱり、類似語よりも、意味演算の方が実験してて楽しいので、ご当地アイドルの算出精度をコーパスが成長するたびに適時確認していた。

8月末の結果。今から振り返ると別に安定した訳ではなかった。

コーパス規模が大きくなってくると、ベクトル次元数を増やす効果が出てくる。
現在は 50次元〜800次元くらいの範囲で実験しているが、9月頃は100〜600次元で試していた。

次元数と類似語の関係性を「オタク」を例に解釈しようとした。解釈は怪しいかも。
「オタク」以外の言葉でも次元数の影響を評価しようと、いくつか試みた。

「AKB」の類似語は次元数の差異がわかりづらい。

「アキバ」に関してはむしろ次元数が少ない方が類似語の精度が良い気さえした。

「コンビニ」の類似語でも次元数の差異はわからず。
10月頃になると台風に関するツイートが増えたせいか、類似語がまともになってきた。
とにかく、コーパスの中にワート登場頻度が増えるほど word2vec の精度が向上することだけは間違いない、と言えそう。


ネットスラングというか、略語(略称)も類似語として学習できるようになった。

正式名称と略称などの表記揺れも捉えられるようだ
秋から冬になり、フトンが恋しい11月末になると「オフトゥン」などのネットスラングもコーパスに頻出し始めるようになったためか、類似語もそれっぽい言葉がヒットしている。

「オフトゥン」の類似語。いかにも twitter らしい。

とまぁ、2014年は word2vec の可能性を実験した。来年はこの実験を継続しつつ、次のステップに進みたい。

0 件のコメント:

コメントを投稿