鴨川にあこがれる日々

軽い技術っぽい記事かいてます

word embeddingsの演算とデータセットについて知ってること

はじめに

自分が使った分だけですが,まとめました

評価の話

学習した分散表現の評価方法としてよく見るのは

  • word similarity
  • analogy

です*1

この2つであれば
omerlevy / hyperwords — Bitbucket
に評価値を計算するPythonスクリプトとデータセットが入ってますので便利です.

上を包含した評価方法のサーベイ論文がありますのでこちらを参考にするのが良いかと思います*2
Evaluation methods for unsupervised word embeddings
http://aclweb.org/anthology/D/D15/D15-1036.pdf

大雑把にまとめると上に加えて

  • 実タスクの特徴量としてすぐれているか
  • クラウドソーシングを使う

などの評価手法があります.

similarityについては,日本語のデータセットを作成した研究がありまして,データセットも公開されています.
github.com

analogyの演算方法

{ \displaystyle
king-man+woman=?
}

を例にあげます.

いわゆるword2vecの元論文では以下の{w}を探索します

{ \displaystyle
argmax_w cos(king-man+woman, w)
}

これだと一部の項に引っ張られてしまうことがあり,1つの項による影響を小さくするために{\log}をとるような演算に変えます.

{\epsilon} は分母が0になるのを避ける項です.(0.001とか)

{ \displaystyle
argmax_w \frac{cos(king, w)cos(woman, w)}{cos(man, w)+\epsilon}
}


前者を3codAdd,3codMulと呼んでいます.
詳しくは以下の論文
Linguistic Regularities in Sparse and Explicit Word Representations
https://www.cs.bgu.ac.il/~yoavg/publications/conll2014analogies.pdf

word2vecのanalogy.cでは3CosMulがありませんが,gensimと上であげたbitbucketには入ってます.
radimrehurek.com

以上です.

*1:word2vecの論文で使われてるやつ

*2:注:分散表現の獲得手法のサーベイではない