srilm的全稱是stanford research institute language modeling toolkit 。他被用來構建和應用統計語言模型,主要用於語音識別,統計標註和切分,以及機器翻譯等工作。
一、windows下編譯
ubuntu編譯,可以再52nlp中去找。
vc編譯,可以再下面鏈結找,
instructions
簡單說,
2, 解壓工具包,
4,把工具包的東西都放到srilm.sln所在資料夾下,
5,把lib的那個project編譯一下,
6,把其他project都編譯一下。
vc中編譯srilm就大功告成了。
ps:直接按照上面的步驟來做並不能成功編譯,原因是有幾個工程缺少標頭檔案,到相關目錄下找到標頭檔案加上即可。
更多資料:
二、實用簡介
srilm的主要目標是支援語言模型的估計和評測。估計是從訓練資料(訓練集)中得到乙個模型,包括最大似然估計及相應的平滑演算法;而評測則是從測試 集中計算其困惑度(mit自然語言處理概率語言模型有相關介紹)。其最基礎和最核心的模組是n-gram模組,這也是最早實現的模組,包括兩個工 具:ngram-count和ngram,相應的被用來估計語言模型和計算語言模型的困惑度。
乙個標準的語言模型(三元語言模型(trigram),使用 good-truing打折法和katz回退進行平衡)可以用如下的命令構建:
ngram-count -text traindata -lm lm
其中lm是輸出的語言模型檔案,可以用如下的命令進行評測:
ngram -lm lm -ppl testdata -debug 2
其中具體的引數可參看官方**的幫助文件,如果你已經在linux下編譯好了,可以直接使用man呼叫幫助文件。
事實上,統計機器翻譯框架主要用的就是 n-gram這個模組來訓練語言模型。
1、從語料庫中生成n-gram計數檔案:
ngram-count -text europarl-v3b.en -order 3 -write europarl.en.count
其中引數
-text指向輸入檔案,此處為europarl-v3b.en;
-order指向生成幾元的n-gram,即n,此處為3元;
-write指向輸出檔案,此處為europarl.en.count,
輸出內容為:
…sweeteners 66
sweeteners should 1
sweeteners should be 1
…分為兩列,第一列為n元詞,第二列為相應的頻率。如一元詞sweeteners在語料庫中的頻率統計為66次;二元詞sweeteners shoul在語料庫中的頻率統計為1次;三元sweeteners should be在語料庫中的頻率統計為1次。
ngram-count -read europarl.en.count -order 3 -lm europarl.en.lm -interpolate -kndiscount
其中引數
-read指向輸入檔案,此處為 europarl.en.count;
-order與上同;-lm指向訓練好的語言模型輸出檔案,此處為europarl.en.lm;
最後兩個引數為所 採用的平滑方法,-interpolate為插值平滑,-kndiscount為 modified kneser-ney 打折法,這兩個是聯合使用的。
需要補充的是,一般我們訓練語言模型時,這兩步是合二為一的,這裡主要是為了介紹清楚n-gram語言模型訓練的步驟細節。
語言模型europarl.en.lm的檔案格式如下,為 arpa檔案格式。為了說明方便,檔案中的括號是我加上的注釋:
data
ngram 1=262627 (注:一元詞有262627個 )
ngram 2=3708250 (注:二元詞有 3708250個)
ngram 3=2707112 (注:三元詞有 2707112個)
1-grams:(注:以下為一元詞的基本情況)
-4.891179(注:log(概率),以10為底) ! -1.361815
-6.482389 !) -0.1282758
-6.482389 !』 -0.1282758
-5.254417 「(注:一元詞) -0.1470514
-6.482389 「『 -0.1282758(注:log(回退權重),以10為底)
…2-grams:
-0.02140159 !
-2.266701 ! –
-0.5719482 !)
-0.5719482 !』
-2.023553 」 『biomass』
-2.023553 」 『vertical』
…3-grams:
-0.01154674 the !
-0.01154674 urgent !
-0.01154674 us』 !
-1.075004 the 「.eu」 top
-0.827616 the 「.eu」 domain
-0.9724987 the 「.eu」 top-level …
ngram -ppl devtest2006.en -order 3 -lm europarl.en.lm > europarl.en.lm.ppl
其中測試集採用wmt08用於機器翻譯的測試集devtest2006.en,2000句;
引數-ppl為對測試集句子進行評分(logp(t),其 中p(t)為所有句子的概率乘積)和計算測試集困惑度的引數;
europarl.en.lm.ppl為輸出結果檔案;
其他引數同上。
輸出檔案結果如下:
file devtest2006.en: 2000 sentences, 52388 words, 249 oovs
0 zeroprobs, logprob= -105980 ppl= 90.6875 ppl1= 107.805
第一行檔案devtest2006.en的基本資訊:2000句,52888個單詞,249個未登入詞;
第二行為評分的基本情況:無0概率;logp(t)=-105980,ppl==90.6875, ppl1= 107.805,均為困惑度。其公式稍有不同,如下:
其中sen和word分別代表句子和單詞數。
SRILM 語言模型訓練工具
2,安裝 make srilm pwd3,配置 將bin和bin i686 m64新增到path環境變數中 4,測試 ngram count help 5,海量語料訓練 由於對於大規模語料進行語言模型的訓練,經常會導致記憶體問題。經過測試,用srilm處理乙個3g的語料,訓練3元語言模型,32g記憶...
用srilm生成語言模型
srilm的主要目標是支援語言模型的估計和評測。估計是從訓練資料 訓練集 中得到乙個模型,包括最大似然估計及相應的平滑演算法 而評測則是從測試集中計算其困惑度。其最基礎和最核心的模組是n gram模組,這也是最早實現的模組,包括兩個工 具 ngram count和ngram,相應的被用來估計語言模型...
語言模型訓練
模型訓練 nohup ngram count text tieba.word.merged order 4 vocab words.txt kndiscount interpolate lm tieba.word.4gram.lm 結果測試 ngram lm tieba.word.4gram.lm ...