SRILM语言模型格式解读

Posted dahu的菜园子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SRILM语言模型格式解读相关的知识,希望对你有一定的参考价值。

先看一下语言模型的输出格式

 

[html] view plain copy
 
  1. \data\  
  2. ngram 1=64000  
  3. ngram 2=522530  
  4. ngram 3=173445  
  5.   
  6. \1-grams:  
  7. -5.24036        ‘cause  -0.2084827  
  8. -4.675221       ‘em     -0.221857  
  9. -4.989297       ‘n      -0.05809768  
  10. -5.365303       ‘til    -0.1855581  
  11. -2.111539       </s>    0.0  
  12. -99     <s>     -0.7736475  
  13. -1.128404       <unk>   -0.8049794  
  14. -2.271447       a       -0.6163939  
  15. -5.174762       a‘s     -0.03869072  
  16. -3.384722       a.      -0.1877073  
  17. -5.789208       a.‘s    0.0  
  18. -6.000091       aachen  0.0  
  19. -4.707208       aaron   -0.2046838  
  20. -5.580914       aaron‘s -0.06230035  
  21. -5.789208       aarons  -0.07077657  
  22. -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.    
  6. \1-grams:  
  7. pro_1 word1 back_pro1  
  8.    
  9. \2-grams:  
  10. pro_2 word1 word2 back_pro2  
  11.    
  12. \3-grams:  
  13. pro_3 word1 word2 word3  
  14.    
  15. \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.   
  3.     return pro_3(word1,word2,word3) ;  
  4.   
  5. }else if(存在(word1,word2)二元模型){  
  6.   
  7.     return back_pro2(word1,word2)*P(word3|word2) ;  
  8.   
  9. }else{  
  10.       
  11.     return P(word3 | word2);  
  12.   
  13. }  


上面的计算又集中在计算P(word3 | word2)的概率上,就是如果不存在习进平的三元模型,此时不管何种路径,都要计算P(word3 | word2) 的概率,计算如下:

 

 

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

以上是关于SRILM语言模型格式解读的主要内容,如果未能解决你的问题,请参考以下文章

用srilm生成语言模型

[转] 如何用kaldi训练好的模型做特定任务的在线识别

SRILM的安装方法

R语言解读自回归模型

R语言使用lm函数拟合回归模型(简单线性回归一元回归simple regression)并解读拟合模型

win10下安装Cygwin配置gcc编译环境