美文网首页
语言模型训练工具srilm

语言模型训练工具srilm

作者: ziyu123 | 来源:发表于2018-07-24 16:40 被阅读0次

    srilm是著名的约翰霍普金斯夏季研讨会(Johns Hopkins Summer Workshop)的产物,诞生于1995年,由SRI实验室的Andreas Stolcke负责开发维护。
    srilm支持语言模型的估计和评测。估计是从训练数据(训练集)中得到一个模型,包括最大似然估计及相应的平滑算法;而评测则是从测试集中计算其困惑度。

    1. 生成n-gram统计文件

    ngram-count -vocab train.dict -text train.txt -order 3 -write train.count -unk
    

    其中,-vocab train.dict中 train.dict为词典文件,每行一个词,格式如下:

    科学
    技术
    科技
    是
    实现
    生产力
    第一
    需要
    

    -text train.txt 中 train.txt为语料库文件,每行中的词用空格隔开,表示分词结果,格式如下:

    科学 技术 是 第一 生产力
    实现 现代化 需要 科学 技术 因为 它 是 第一 生产力
    

    -order 最大的n元模型,3表示unigram,bigram,trigram
    -write train.count 统计文件写到train.count中
    -unk 表示没有在词典中的词用<unk>表示
    train.count中的内容如下(每行格式为:ngram 词频):

    <s> 2
    <s> 科学  1
    <s> 科学 技术   1
    <s> 实现  1
    <s> 实现 <unk>    1
    科学  2
    科学 技术   2
    科学 技术 是 1
    科学 技术 <unk> 1
    技术  2
    技术 是    1
    技术 是 第一 1
    技术 <unk>    1
    技术 <unk> <unk>  1
    是   2
    是 第一    2
    是 第一 生产力    2
    第一  2
    第一 生产力  2
    第一 生产力 </s> 2
    生产力 2
    生产力 </s>    2
    </s>    2
    实现  1
    实现 <unk>    1
    实现 <unk> 需要 1
    <unk>   3
    <unk> 需要    1
    <unk> 需要 科学 1
    <unk> <unk> 1
    <unk> <unk> 是   1
    <unk> 是 1
    <unk> 是 第一  1
    需要  1
    需要 科学   1
    需要 科学 技术    1
    

    2. 生成语言模型

    ngram-count  -vocab train.dict  -read train.count  -order 3 -lm train.lm -interpolate -unk
    

    其中,-read train.count 读取上一步生成的统计文件
    -lm train.lm 生成最高为trigram的语言模型train.lm
    -interpolate 利用差值算法
    生成的语言模型train.lm为ARPA格式的语言模型,如下:

    \data\
    ngram 1=11
    ngram 2=13
    ngram 3=2
    
    \1-grams:
    -0.9542425  </s>
    -99 <s> -0.39794
    -0.7781513  <unk>   -0.4259686
    -1.255273   实现  -0.2218487
    -0.9542425  技术  -0.3357921
    -0.9542425  是   -0.4259687
    -0.9542425  生产力 -0.4259687
    -0.9542425  科学  -0.4259687
    -1.255272   科技
    -0.9542425  第一  -0.4259687
    -1.255273   需要  -0.2498775
    
    \2-grams:
    -0.4771213  <s> 实现
    -0.4771213  <s> 科学
    -0.60206    <unk> <unk>
    -0.60206    <unk> 是
    -0.60206    <unk> 需要
    -0.30103    实现 <unk>
    -0.4771213  技术 <unk>
    -0.4771213  技术 是
    -0.1760913  是 第一    0
    -0.1760913  生产力 </s>
    -0.1760913  科学 技术
    -0.1760913  第一 生产力  0
    -0.30103    需要 科学
    
    \3-grams:
    -0.1760913  第一 生产力 </s>
    -0.1760913  是 第一 生产力
    
    \end\
    

    上面的两个步骤可以直接生成,如下:

    ngram-count  -vocab train.dict  -text train.txt  -order 3 -lm train2.lm -interpolate -unk
    

    3. 计算测试数据的困惑度

    上面已经生成了语言模型train.lm,利用它来测试数据的困惑度

    ngram -ppl test.txt  -order 3 -lm train.lm -unk -debug 2
    

    测试数据的格式同语料数据,每个句子内部用空格隔开表示分词。
    结果如下:

    reading 11 1-grams
    reading 13 2-grams
    reading 2 3-grams
    科技 人员 需要 科学 技术
        p( 科技 | <s> )   = [1gram] 0.02222224 [ -1.653212 ]
        p( <unk> | 科技 ...)  = [1gram] 0.1666667 [ -0.7781513 ]
        p( 需要 | <unk> ...)  = [2gram] 0.25 [ -0.60206 ]
        p( 科学 | 需要 ...)     = [2gram] 0.5 [ -0.30103 ]
        p( 技术 | 科学 ...)     = [2gram] 0.6666666 [ -0.1760913 ]
        p( </s> | 技术 ...)   = [1gram] 0.05128205 [ -1.290035 ]
    1 sentences, 5 words, 0 OOVs
    0 zeroprobs, logprob= -4.800579 ppl= 6.310976 ppl1= 9.122542
    
    我们 国家 需要 科技 的 大力 发展
        p( <unk> | <s> )    = [1gram] 0.06666666 [ -1.176091 ]
        p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
        p( 需要 | <unk> ...)  = [2gram] 0.25 [ -0.60206 ]
        p( 科技 | 需要 ...)     = [1gram] 0.03125004 [ -1.505149 ]
        p( <unk> | 科技 ...)  = [1gram] 0.1666667 [ -0.7781513 ]
        p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
        p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
        p( </s> | <unk> ...)    = [1gram] 0.04166668 [ -1.380211 ]
    1 sentences, 7 words, 0 OOVs
    0 zeroprobs, logprob= -7.247843 ppl= 8.053421 ppl1= 10.84941
    file test.txt: 2 sentences, 12 words, 0 OOVs
    0 zeroprobs, logprob= -12.04842 ppl= 7.254402 ppl1= 10.09335
    

    参考

    1. https://blog.csdn.net/u011982340/article/details/39474857
    2. http://www.cnblogs.com/whuqin/p/7286807.html

    相关文章

      网友评论

          本文标题:语言模型训练工具srilm

          本文链接:https://www.haomeiwen.com/subject/ipnemftx.html