言語モデルメモ(palmkit)その1(with Witten-Bell backoff)
palmkitの「idngram2lm」を使って、ARPA形式の前向き3-gramが作成されるまでの過程をトレースする。
コマンド指定
idngram2lm -n 3 -idngram learn.3gram -vocab learn.vocab -arpa learn.3gram.arpa
統計の元となるファイル
<s> IMO MO II </s> <s> MOMO MO OMOI </s>
learn.vocab(説明用に加工、id=0("unknown"を追加))
learn.3gram(id形式3-gram)
オプションでディスカウント方法を指定しなかった場合、デフォルトで「Witten Bell」が使われる。
1-gramの条件付き確率
Total unigram count=8 #zeroton=2 #singleton=4 zeroton個数 : 2 singleton個数 : 4 countの合計(n_all) : 8 discount : 0.5 ( n_singleton / n_all)
2-gramの条件付き確率 P(leaf | parent(1-gram))
3-gramの条件付き確率 P(leaf | parent(2-gram))
back-off weight(1-gram)
分子にあたる数を求める。
分母にあたる数を求める。
back-off weightを求める。
back-off weight(2-gram)
分子にあたる数を求める。
分母にあたる数を求める。
back-off weightを求める。
コマンド出力結果ファイル(前向き3-gram)
1列目が条件付き確率(常用対数をとった値)、3列目がback-off weight(常用対数をとった値)
\data\ ngram 1=8 ngram 2=8 ngram 3=8 \1-grams: -0.60206 <UNK> 0.0000 -1.20412 </s> -0.2430 -0.90309 <s> -0.2430 -1.20412 II -0.2730 -1.20412 IMO -0.2430 -0.90309 MO -0.1383 -1.20412 MOMO -0.2430 -0.60206 OMOI 0.0000 \2-grams: -0.30103 </s> <s> -0.1761 -0.60206 <s> IMO 0.0000 -0.60206 <s> MOMO 0.0000 -0.30103 II </s> 0.0000 -0.30103 IMO MO -0.1761 -0.60206 MO II 0.0000 -0.60206 MO OMOI 0.0000 -0.30103 MOMO MO -0.1761 \3-grams: -0.30103 </s> <s> MOMO -0.30103 <s> IMO MO -0.30103 <s> MOMO MO -0.30103 II </s> <s> -0.30103 IMO MO II -0.30103 MO II </s> -0.30103 MO OMOI </s> -0.30103 MOMO MO OMOI \end\
2-gramについては8個となっており、前向き2-gramの出力結果と比べると、「OMOI </s>」が含まれていない。