SRILM的使用及平滑方法說明

1.簡介算法

        SRILM是經過統計方法構建語言模型,主要應用於語音識別,文本標註和切分,以及機器翻譯等。       測試

        SRILM支持語言模型的訓練和評測,經過訓練數據獲得語言模型,其中包括最大似然估計及相應的平滑算法;評測是計算測試集的困惑度。其最基礎和最核心的模塊是n-gram模塊,包括兩個工 具:ngram-count和ngram,被用來估計語言模型和計算語言模型的困惑度。spa

2.使用方法.net

        (1).語料初始化翻譯

              a.數據清洗        b.分詞(以空格劃分)        c.將數據分爲訓練集和測試集code

        (2).從訓練集中統計n-gramblog

ngram-count -text train.txt -order 3 -write train.count

         其中參數-text指向訓練集;-order指向生成幾元的n-gram;-write指向輸出文件,其包含兩列,第一列爲n元詞,第二列爲相應的頻率。博客

         (3).訓練語言模型it

ngram-count -read train.count -order 3 -lm train.lm -interpolate -kndiscount

        其中參數-read指向(2)中的輸出文件;-order同上;-lm指向語言模型輸出文件,其爲 ARPA文件格式;最後兩個參數爲所採用的平滑方法,-interpolate爲插值平滑,-kndiscount爲 modified Kneser-Ney 打折法,這兩個是聯合使用的。class

          (4).測試語言模型

ngram -ppl test.txt -order 3 -lm train.lm > train.lm.ppl

        其中test.txt爲測試集;參數-ppl對測試集句子進行評分(logP(T),其 中P(T)爲全部句子的機率乘積)和計算測試集困惑度的參數;train.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,均爲困惑度。

參考博客  

         https://blog.csdn.net/zhoubl668/article/details/8365716

3.平滑方法說明

        在訓練語言模型中,每每訓練語料只是輸入空間中的一個採樣,也就是語料不足以包含全部狀況的ngram,這樣就會出現0機率的ngram。爲了解決這種問題,就須要用到打折(discounting)或叫平滑(smoothing)方法。經常使用回退(backoff)插值(interpolate)法實現平滑。

        (1).回退

        (2).插值

相關文章
相關標籤/搜索