モチベーション
単語をLDAや共起表現などの分散表現(Distributional Semantics)で表せたら、それを使って文や文の集合(文書)を表したくなる。
それを考えたのがSemantic Composition – 単語の意味合成だ。
つまり、単語のベクトルを足したり掛けたりすることで複数の単語を合わせた意味を上手く表せないか、という事がモチベーションとなる。
この記事では、参考文献[1][2]の内容をまとめる。
定式化
単語ベクトル(LDAでも共起表現でもなんでも)と
の合成
は、以下のように定式化される。
ここでを線形な関数(話や積)と仮定する。
はKnowledge Base,つまり背景知識を表すが、今回のモデルでは簡単のため省略されている。
の例としては、
- 加算モデル
- 単に加算
- 重みを付けて加算
- 別な単語を加算
- 乗算モデル
- 内積
- テンソル積 Tensor product (結果は行列になる)
- 循環畳込み Circular Convolution
- Dilation Model …
で表され、幾何的な意味を持つ。説明は割愛。
などがある。
性能比較とまとめ
[1][2]では、Phrase Simimlarity Task[Kintsch, 2010]でそれぞれのモデルを比較している。
このタスクは、”old person”のようなフレーズ(ほかにも名詞ー名詞, 動詞ー目的語のようなペアもある)と他のフレーズを比較して、
“elderly woman”は類似度「高」、”right hand”は類似度「中」、”small house”は類似度「低」などと3つにグループ分けし、人間の成果と比較するというタスクである。
以下が、[1][2]における 動詞ー目的語での結果である。
そして、次の図が名詞ー名詞フレーズでの結果である。Simple Semantic Spaceは共起表現を使ったモデルのこと。
面白いのは、一概にどのモデルが一番良いとは言いがたく(循環畳込みは一概に良くないが)、モデルのパフォーマンスは使うベクトル空間、あるいはタスクによって異なるということである。乗算モデルは0の要素が0のまま保存されるので要素ごとの違いを顕著のまま残るし、加算モデルはマイナスとマイナスの要素を足してもマイナスな(符号が保存される)ので負値を含むモデルに向いている、などメリットは様々だ。
例えば、word2vecはこの実験には無いが、加算モデルが人間の直観を上手く反映していたと話題になった(woman + king = queenとか)が、個人的に実験した結果 乗算では上手く行かなかった(ベクトルが負値を含むことがあるので、掛けると符号がめちゃくちゃになる)。
主たるモチベーションとしては文書・文の意味表現であるが、一番身近な応用例は、文脈による単語の意味変化を表現できることだろう。つまり、対象単語を文脈語(対象語のまわりの単語)と合成して文脈を考慮した単語ベクトルを作ることができる。これで類語をサジェストするシステムが作れたりするし、用途は結構多彩なはずだ。(この用途なら、重み付き加算モデルが良さそう。対象語に重みを付けられるので。)
ただし、文章や文(単語でさえ)をそもそもベクトルで表すことは本質的なのか?という議論はされてはいないが超重要なので、これはまた別の機会に回すことにする。
参考文献
[1] J.Mitchell, M.Lapata, Syntactic and Semantic Factors in Processing Difficulty: An Integrated Measure, 2010
[2] J.Mitchell, M.Lapata, Composition in distributional models of semantics, 2010
Be First to Comment