Enju の確率モデルは,log-linear model というモデルになっています.入力 文を s, 構文木を t とすると,以下の式で確率値を与えます.
p(t|s)=1/Z exp( sum( l_i f_i(t,s) ) )
f_i(t,s) は確率モデルにおける素性(素性構造の素性とは 違う意味)です.t, s がある特徴を満たすとき,0 以外の値をとる関数です. つまり,t, s の特徴を実数空間に写像するための関数です.l_i は各素性に対 応する重みで,確率モデルのパラメタです.パラメタ推定プログラムが自動的 に最適な l_i を計算します(詳しくは,Feature forest モデルを参照して下さい).Z は,全ての t について p(t|s) を 足したときに1になるように正規化するための項です.
上のモデルを用いて曖昧性解消を行うには,p(t|s) を最大にする t を求めれ ばよいことになります.ここで式をよく見ると,Z は定数なので,曖昧性解消 を行うためには計算する必要がないことがわかります.また,exp も単調増加 関数なので,計算する必要がありません.従って,構文解析の際には,
sum( l_i f_i(t,s) )だけ計算すればよいことになります.この値は,構文木のもっともらしさを表 す値なので,FOM (figure-of-merit) と呼ぶことにします.
Enju の現在の実装では,f_i(t,s) はスキーマ適用の特徴を表す関数になって います.従って,構文解析の際,スキーマ適用が成功した後に,そのスキーマ 適用に対する FOM を足していけば,構文木全体の FOM が計算できます.
スキーマ適用の FOM は,以下のような手順で計算されます.
以下,それぞれについて説明します.