ichou1のブログ

主に音声認識、時々、データ分析のことを書く

言語モデルメモ(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"を追加))

f:id:ichou1:20180204114411p:plain

learn.3gram(id形式3-gram)

f:id:ichou1:20180204114426p:plain

オプションでディスカウント方法を指定しなかった場合、デフォルトで「Witten Bell」が使われる。

1-gramの条件付き確率

f:id:ichou1:20180204115301p:plain

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))

f:id:ichou1:20180204210625p:plain

3-gramの条件付き確率 P(leaf | parent(2-gram))

f:id:ichou1:20180204120249p:plain

back-off weight(1-gram)

分子にあたる数を求める。
f:id:ichou1:20180205074519p:plain

分母にあたる数を求める。
f:id:ichou1:20180205074536p:plain

back-off weightを求める。
f:id:ichou1:20180205074554p:plain

back-off weight(2-gram)

分子にあたる数を求める。
f:id:ichou1:20180205074625p:plain

分母にあたる数を求める。
f:id:ichou1:20180205074637p:plain

back-off weightを求める。
f:id:ichou1:20180205074651p:plain

コマンド出力結果ファイル(前向き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>」が含まれていない。