1. 程式人生 > >SRILM語言模型格式解讀

SRILM語言模型格式解讀

highlight use ref ron 概率 出現 5.1 srilm tag

先看一下語言模型的輸出格式

[html] view plain copy
  1. \data\
  2. ngram 1=64000
  3. ngram 2=522530
  4. ngram 3=173445
  5. \1-grams:
  6. -5.24036 ‘cause -0.2084827
  7. -4.675221 ‘em -0.221857
  8. -4.989297 ‘n -0.05809768
  9. -5.365303 ‘til -0.1855581
  10. -2.111539 </s> 0.0
  11. -99 <s> -0.7736475
  12. -1.128404 <unk> -0.8049794
  13. -2.271447 a -0.6163939
  14. -5.174762 a‘s -0.03869072
  15. -3.384722 a. -0.1877073
  16. -5.789208 a.‘s 0.0
  17. -6.000091 aachen 0.0
  18. -4.707208 aaron -0.2046838
  19. -5.580914 aaron‘s -0.06230035
  20. -5.789208 aarons -0.07077657
  21. -5.881973 aaronson -0.2173971

(註:上面的值都是以10為底的對數值)


上面是一個語言模型的一部分,三元語言模型的綜合格式如下:

[html] view plain copy
  1. \data
  2. ngram 1=nr # 一元語言模型
  3. ngram 2=nr # 二元語言模型
  4. ngram 3=nr # 三元語言模型
  5. \1-grams:
  6. pro_1 word1 back_pro1
  7. \2-grams:
  8. pro_2 word1 word2 back_pro2
  9. \3-grams:
  10. pro_3 word1 word2 word3
  11. \end\

第一項表示ngram的條件概率,就是P(wordN | word1,word2,。。。,wordN-1)。

第二項表示ngram的詞。

最後一項是回退的權重。

舉例來說,對於三個連續的詞來說,我們計算三個詞一起出現的概率:

[html] view plain copy
  1. P(word3|word1,word2)

表示word1和word2出現的情況下word3出現的概率,比如P(平|習,進)的意思是已經出現了“習進”兩個字,後面是平的概率,這個概率這麽計算:

[html] view plain copy
  1. if(存在(word1,word2,word3)的三元模型){
  2. return pro_3(word1,word2,word3) ;
  3. }else if(存在(word1,word2)二元模型){
  4. return back_pro2(word1,word2)*P(word3|word2) ;
  5. }else{
  6. return P(word3 | word2);
  7. }


上面的計算又集中在計算P(word3 | word2)的概率上,就是如果不存在習進平的三元模型,此時不管何種路徑,都要計算P(word3 | word2) 的概率,計算如下:

[html] view plain copy
    1. if(存在(word1,word2)的二元模型){
    2. return pro_2(word1,word2);
    3. }else{
    4. return back_pro2(word1)*pro_1(word2) ;
    5. }

SRILM語言模型格式解讀