SRILM的使用及平滑方法说明

1.简介

        SRILM是通过统计方法构建语言模型,主要应用于语音识别,文本标注和切分,以及机器翻译等。      

        SRILM支持语言模型的训练和评测,通过训练数据得到语言模型,其中包括最大似然估计及相应的平滑算法;评测是计算测试集的困惑度。其最基础和最核心的模块是n-gram模块,包括两个工 具:ngram-count和ngram,被用来估计语言模型和计算语言模型的困惑度。

2.使用方法

        (1).语料初始化

              a.数据清洗        b.分词(以空格划分)        c.将数据分为训练集和测试集

        (2).从训练集中统计n-gram

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

         其中参数-text指向训练集;-order指向生成几元的n-gram;-write指向输出文件,其包含两列,第一列为n元词,第二列为相应的频率。

         (3).训练语言模型

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

        其中参数-read指向(2)中的输出文件;-order同上;-lm指向语言模型输出文件,其为 ARPA文件格式;最后两个参数为所采用的平滑方法,-interpolate为插值平滑,-kndiscount为 modified Kneser-Ney 打折法,这两个是联合使用的。

          (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).插值

原文地址:https://www.cnblogs.com/Climbing-Snail/p/9482379.html