Phrase-Based Models

MT勉強会によるチュートリアル第二回。今日はid:mamorukさんによるPhrase-Based Models。MTの基本的なツール*1であるMosesとかでも使われている。

Statistical Machine Translation

Statistical Machine Translation

若干眠い状態でメモしているので変なこと書いている可能性大。いつも通りな自分用メモ。

IBM model 1-5は単語を単位とした翻訳モデルだったが、今回はphraseを単位とした翻訳モデル。注意点としてはphraseは言語学的なphraseではなく、単語がいくつか続いているというそういうphrase。"結果として"言語学的なphraseが出てくることになるのかなと思っていたが、実はそうではないようで。

phraseはさっきも書いたが、単語列をとにかくphraseと呼んでいるので色んなphraseの可能性があるのだが、その候補はIBM model 1-5のアライメントの結果を使うようだ。consistency(図を見たほうが分かりやすい。Figure 5.4とか)という条件を満たすようなものをphraseのペアとしてとにかく取ってくる。あとはそれに確率を付けてやる(普通にカウントを割る)。

phraseのペアが取れたら翻訳確率を計算するのだが

  • phrase translation probability
  • distance-based reordering model

の2つの要素に分解する。前者はそのまんまの意味。後者は英語とドイツ語のように統語的に似た言語ならそんなに大きく順番が変わることはないだろうという事前知識を入れたようなモデル。日英とかだとうまくいかないので、その辺は色々研究があるのだそう(普通のlog-linerモデルの素性になる、ということを後々分かると別にここは無理に入れなくてもいいのかなぁと思ったり)。

上の2つに言語モデルを入れると3つの要素があることになるが、それぞれのモデルに重みを考え、重みが指数部分にくるようなモデルを考える。これの対数を取ってexpを取るようにすると普通のlog-linerモデルになるので、後はそれぞれのモデルの重みをなんなりと計算してあげればよい。

普通のlog-linerモデルになってしまったので、上の3つの要素以外にもあれこれと素性を突っ込める形になった。そういうわけで

  • Bidirectional Translation Probabilities
  • Lexical Weighting
  • Word Penalty
  • Phrase Penalty

などなどが他の素性としてよくあるよ、ということが書かれている(Mosesとかにも入っているらしい)。

(reordering付近の話は頭の中から飛んでいった...)

これまでの話ではIBM Modelのアライメントの結果を元にしてphraseのペアを取ってこようということをやっていたが、IBM modelを挟まないでもっとdirectにできないかというのもある(5.5の付近)。アライメントの代わりにconceptというものを考えてクラスタリングのようなことをやる。conceptというのがトピックのようなものかと思っていたが、違うようでphraseのindex毎にクラスタリングしているような感じらしい。この辺からなんだかなー感が高まってくるが、計算量も多いということで現実的でもないようだ。Tree-basedなモデルが必要になってくるのかなーというのがなんとなく伝わってくる。

*1:といいつつまだ手を動かしたことがない...Giza++はちょっとだけ遊んだ形跡がある