読者です 読者をやめる 読者になる 読者になる

どらちゃんのポッケ

R・統計・技術メモなど勉強ログ置き場

word2vecを試してみたが・・・の話

動機

  • 少し前からword2vecの存在は知っていたけど、下記の理由で流していた

    • テキストマイニングなんて、結局は、辞書の出来と前処理でしょ?って思っていた
    • Ngramとか、共起とか、そういったもので十分なのでは?って思っていた
    • デーィブラーニングなんで、ニューラルネットも理解してないので、厳しいなー
  • けど、下記の理由で触ってみようと思った。

    • この前の機械学習ハッカソンニューラルネットの実装を触ってみて、他の人のディープラーニングの実装の話を聞いて、なんとなく理解できた
    • ちょうどその時、このPython - Perl + Java = ? はてなブログのデータとパソコン工房のPCを使って「word2vec」で遊んでみたの記事が観測範囲に入ってきた
    • 改めで、考えるとディープラーニングの学習とか、足し算・引き算とか面白いなーって思った

word2vecについて

インストール

  • MAC OS X Mavericks にインストールした

手順

基本的には、公式サイトにある通り

  1. SVNチェックアウト
  2. チェックアウトしたディレクトリで、makeする
  3. インストール完了
  4. コンソールでword2vecをうって、helpがでれば成功

使い方

コンソールでmecabを使って形態素解析しているバージョン

  • mecab形態素解析:word2devは空白区切りのテキストデータを学習データとするので、その形式にする

      cat {元データ} | mecab  --node-format="%f[6] " --eos-format="\n" > {mecabedデータ}
    
  • 学習

      word2vec  -train {mecabedデータ}   -output {train_result.bin} -window 10 -binary 1
    
  • 分析

      #単語間の距離
      word2vec/distance {train_result.bin}
    
      #AにとってのBは、Cにとっての何か(B - A + C = ?)
      word2vec/word-analogy {train_result.bin}
    
  • ちょっとハマった点

    • analogyで複数単語を指定するときのスペースを全角にすると区切りを認識してくれない

    • ダメ

        Enter three words (EXIT to break): い い お
        Only 1 words were entered.. three words are needed at the input to perform the calculation
      
    • OK

        Enter three words (EXIT to break): い い お
      
        Word: い  Position in vocabulary: 0
        Out of dictionary word!
      

結果について:全く検証してないですが

  • TwitterAPIで取得した100件を学習データとしてやってみたが、全然データが足りない
    • Ngramとかよりも、ある程度のデータが必要だなーと思った
  • analogyをうまく使うには、そもそものデータをどこから持ってくるのかを考えないといけない?
    • 足し算・引き算を使えるようにするためには、ある程度、広範囲に言及しているテキストデータが必要な気がするなー