SRILM語言模型格式解讀
阿新 • • 發佈:2017-08-29
highlight use ref ron 概率 出現 5.1 srilm tag
先看一下語言模型的輸出格式
[html] view plain copy
- \data\
- ngram 1=64000
- ngram 2=522530
- ngram 3=173445
- \1-grams:
- -5.24036 ‘cause -0.2084827
- -4.675221 ‘em -0.221857
- -4.989297 ‘n -0.05809768
- -5.365303 ‘til -0.1855581
- -2.111539 </s> 0.0
- -99 <s> -0.7736475
- -1.128404 <unk> -0.8049794
- -2.271447 a -0.6163939
- -5.174762 a‘s -0.03869072
- -3.384722 a. -0.1877073
- -5.789208 a.‘s 0.0
- -6.000091 aachen 0.0
- -4.707208 aaron -0.2046838
- -5.580914 aaron‘s -0.06230035
- -5.789208 aarons -0.07077657
- -5.881973 aaronson -0.2173971
(註:上面的值都是以10為底的對數值)
上面是一個語言模型的一部分,三元語言模型的綜合格式如下:
[html] view plain copy
- \data
- ngram 1=nr # 一元語言模型
- ngram 2=nr # 二元語言模型
- ngram 3=nr # 三元語言模型
- \1-grams:
- pro_1 word1 back_pro1
- \2-grams:
- pro_2 word1 word2 back_pro2
- \3-grams:
- pro_3 word1 word2 word3
- \end\
第一項表示ngram的條件概率,就是P(wordN | word1,word2,。。。,wordN-1)。
第二項表示ngram的詞。
最後一項是回退的權重。
舉例來說,對於三個連續的詞來說,我們計算三個詞一起出現的概率:
[html] view plain copy
- P(word3|word1,word2)
表示word1和word2出現的情況下word3出現的概率,比如P(平|習,進)的意思是已經出現了“習進”兩個字,後面是平的概率,這個概率這麽計算:
[html] view plain copy
- if(存在(word1,word2,word3)的三元模型){
- return pro_3(word1,word2,word3) ;
- }else if(存在(word1,word2)二元模型){
- return back_pro2(word1,word2)*P(word3|word2) ;
- }else{
- return P(word3 | word2);
- }
上面的計算又集中在計算P(word3 | word2)的概率上,就是如果不存在習進平的三元模型,此時不管何種路徑,都要計算P(word3 | word2) 的概率,計算如下:
[html] view plain copy
- if(存在(word1,word2)的二元模型){
- return pro_2(word1,word2);
- }else{
- return back_pro2(word1)*pro_1(word2) ;
- }
SRILM語言模型格式解讀