用srilm生成語言模型

SRILM的主要目標是支持語言模型的估計和評測。估計是從訓練數據(訓練集)中獲得一個模型,包括最大似然估計及相應的平滑算法;而評測則是從測試集中計算其困惑度。其最基礎和最核心的模塊是n-gram模塊,這也是最先實現的模塊,包括兩個工 具:ngram-count和ngram,相應的被用來估計語言模型和計算語言模型的困惑度。算法

1.統計語料庫生成n-gram統計文件

ngram-count -vocab segment_dict.txt -text train_data -order 3 -write my.count -unk

-vocab 詞典文件,一行表明一個切詞,格式以下:bash

中國
人民
你好

-text 語料庫,一行行的數據,行內數據用空格隔開來表示切詞,格式以下:測試

中國 人民
劉德華 歌曲 好 聽 嗎

-order 最大的n元模型,3表示統計1元模型(unigram)、2元模型(bigram)、3元模型(trigram)blog

-write 生成的統計文件,格式以下(ngram  count):it

<s>     2
<s> 中國        1
<s> 中國 人民   1
<s> 劉德華      1
<s> 劉德華 <unk>        1
中國    1
中國 人民       1
中國 人民 </s>  1
人民    1
人民 </s>       1
</s>    2
劉德華  1
劉德華 <unk>    1
劉德華 <unk> <unk>      1
<unk>   4
<unk> <unk>     3
<unk> <unk> <unk>       2
<unk> <unk> </s>        1
<unk> </s>      1

-unk 把不在詞典裏面的次表示爲<unk>class

2.生成語言模型

ngram-count -vocab segment_dict.txt -read my.count -order 3 -lm my.lm -kndiscount1 -kndiscount2 -kndiscount3

-read 讀統計文件test

-lm 產生的語言模型文件,產生的格式以下:基礎

\data\
ngram 1=6
ngram 2=4
ngram 3=0

\1-grams:
-0.4771213      </s>
-99     <s>     -99
-0.7781513      中國    -99
-0.7781513      人民    -99
-0.7781512      你好
-0.7781513      劉德華

\2-grams:
-0.30103        <s> 中國
-0.30103        <s> 劉德華
0       中國 人民
0       人民 </s>

\3-grams:

\end\

-kndiscount1 對1元模型進行的折扣平滑的方法,有不少,如good-turing,kneser-ney等file

3.用語言模型計算測試數據的困惑度

ngram -ppl test.txt -order 3 -lm my.lm

測試數據的格式也是一行表明一個句子,每一個句子內部用空格隔開表示切詞方法

file test.txt: 2 sentences, 5 words, 0 OOVs
4 zeroprobs, logprob= -0.7781513 ppl= 1.817121 ppl1= 6.000001
相關文章
相關標籤/搜索