ACL読み会@PFI
“How to make words with
vectors: Phrase generation
in distributional semantics”
株式会社Preferred Infrastructure
海野  裕也 (@unnonouno)
2014/07/12 ACL読み会@PFI
要旨
l  複合語の合成・分解過程を学習する
l  学習された合成・分解過程によって、既存の単語や複合
語から、新規の複合語を⽣生成できるようにする
l  学習は既知のベクトル表現を⽣生成できるような⾏行行列列を計
算するだけ(簡単)
l  ⾔言語横断の実験もしている
2
フレーズベクトルの⽣生成
l  前提として単語やフレーズにはベクトルが割り当てられ
るとする
l  単語uと単語vのベクトルから、フレーズuvのベクトルp
を⽣生成する関数  fcomp を考える
l  uとvを並べた2d次元のベクトルに、⾏行行列列Wをかけたらp
ができることにする
3
4	
u
v
Wp =	
 X
⽣生成関数の学習
l  単語uと単語vと、フレーズpのベクトルが沢⼭山わかって
るとする
l  学習データ中で誤差が最⼩小になるような⾏行行列列Wを求める
l  全体を⾏行行列列で書くと上の式
5	
簡単!
フレーズベクトルの分解
l  ベクトルpを持つ2単語からなるフレーズから、単語uと
単語vのベクトルに分解する関数fdecompを考える
l  pに⾏行行列列W’をかけたらuとvをつなげたベクトルができる
とかんがえる
6
分解⾏行行列列の学習
l  同じように、学習事例例中での誤差が最⼩小になるように
W’を解く  (2)式
l  フレーズのベクトルPがなくても、WからW’を学習する
こともできる  (3)式
l  Wの学習にPが必要だから、これは意味あるのか?
7	
簡単!
再帰的なフレーズの処理理
l  フレーズは段階的に合成関数を適⽤用する
l  このとき、品詞対毎に合成関数は⽤用意する
l  後の実験で出る通り、今回扱うのは名詞:N、形容詞:A、前置
詞:Pの3つ
8	
big red car =
実験
l  学習した関数(⾏行行列列)を使って、フレーズの分解と合成
を⾏行行う
l  単語とフレーズのベクトルは2種類を⽐比較する
l  cbow: Mikolovのword2vecを使って作ったベクトル
l  count: 出現頻度度で作ったナイーブなベクトル
l  名詞(N)と形容詞(A)は2万個、前置詞(P)は25個使う
9
⽣生成と分解の実験
l  数字は正解単語のランクの中央値
l  上:A+NàNは合成の予備実験
l  下:NàA+Nは分解の実験
l  いずれもcbowの結果が劇的に良良い
10	
⼤大体11番⽬目に正解が来る
ということ
実例例
l  間違いではないものも多い
l  religious religionのように、同じ意味の語の繰り返しに
なることも・・・
11
複合語から複合語を⽣生成する実験
l  ANからNPNを⽣生成する
l  やはり意味的に正しいものは多い
l  評価⽅方法の限界?
12
英伊で⾔言語横断の複合語作成
l  ⾔言語間のベクトルの写像は、少数の既知単語対から学習
l  同⼀一品詞間なので正解率率率は⾼高め
13
まとめ
l  意味の合成・分解を単純な⾏行行列列の掛け算でモデル化
l  既知ベクトルから、合成・分解過程を学習する
l  ⽅方法は簡単だが、結果を⾒見見ると⽅方針としては筋が良良さそ
う
感想
l  簡単なので実装しようと思ったが時間なかった
l  単語ベクトルが意味の合成・分解に有⽤用そうなことを⽰示
しているが、⼿手法が安易易なのでもう少し⼯工夫したい
14

ACL読み会@PFI “How to make words with vectors: Phrase generation in distributional semantics”