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