`
canofy
  • 浏览: 820840 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

语言模型训练工具SRILM

阅读更多
转:http://www.52nlp.cn/language-model-training-tools-srilm-details

SRILM是著名的约翰霍普金斯夏季研讨会(Johns Hopkins Summer Workshop)的产物,诞生于1995年,由SRI实验室的Andreas Stolcke负责开发维护。
  关于SRILM的安装,我已经在前面关于moses平台搭建的文章(参见:《Moses相关介绍》和《Ubuntu8.10下moses测试平台搭建全记录》)中介绍过了,这里就不再重复。准确的说,SRILM并不是因机器翻译而诞生的,它主要是为语音识别所开发的,全称为Stanford Research Institute Language Modeling Toolkit。事实上统计机器翻译与语音识别关系千丝万缕,我会在以后的文章中介绍。
  SRILM用来构建和应用统计语言模型,主要用于语音识别,统计标注和切分,以及机器翻译,可运行在UNIX及Windows平台上。它主要包含以下几个部分:
  • 一组实现的语言模型、支持这些模型的数据结构和各种有用的函数的C++类库;
  • 一组建立在这些类库基础上的用于执行标准任务的可执行程序,如训练语言模型,在数据集上对这些语言模型进行测试,对文本进行标注或切分等任务。
  • 一组使相关任务变得容易的各种脚本。
  SRILM的主要目标是支持语言模型的估计和评测。估计是从训练数据(训练集)中得到一个模型,包括最大似然估计及相应的平滑算法;而评测则是从测试集中计算其困惑度(MIT自然语言处理概率语言模型有相关介绍)。其最基础和最核心的模块是n-gram模块,这也是最早实现的模块,包括两个工具:ngram-count和ngram,相应的被用来估计语言模型和计算语言模型的困惑度。一个标准的语言模型(三元语言模型(trigram),使用Good-Truing打折法和katz回退进行平衡)可以用如下的命令构建:
   ngram-count -text TRAINDATA -lm LM
  其中LM是输出的语言模型文件,可以用如下的命令进行评测:
   ngram -lm LM -ppl TESTDATA -debug 2
 其中具体的参数可参看官方网站的帮助文档,如果你已经在linux下编译好了,可以直接使用man调用帮助文档。事实上,统计机器翻译框架主要用的就是n-gram这个模块来训练语言模型。下面我们以欧洲语料库的英语语料为例,解析这个工具的作用。语料库下载地址见:欧洲议会平行语料库。本例子使用的是wmt08里面用于英语语言模型训练的europarl-v3b.en,用于机器翻译的预处理过程tokenize和lowercase此处省略,其规模为1412546句:
  1、从语料库中生成n-gram计数文件:
   ngram-count -text europarl-v3b.en -order 3 -write europarl.en.count
  其中参数-text指向输入文件,此处为europarl-v3b.en;-order指向生成几元的n-gram,即n,此处为3元;-write指向输出文件,此处为europarl.en.count,输出内容为:
   …
   sweeteners 66
   sweeteners should 1
   sweeteners should be 1
   …
  分为两列,第一列为n元词,第二列为相应的频率。如一元词sweeteners在语料库中的频率统计为66次;二元词sweeteners shoul在语料库中的频率统计为1次;三元sweeteners should be在语料库中的频率统计为1次。
  2、从上一步生成的计数文件中训练语言模型:
   ngram-count -read europarl.en.count -order 3 -lm europarl.en.lm -interpolate -kndiscount
  其中参数-read指向输入文件,此处为 europarl.en.count;-order与上同;-lm指向训练好的语言模型输出文件,此处为europarl.en.lm;最后两个参数为所采用的平滑方法,-interpolate为插值平滑,-kndiscount为 modified Kneser-Ney 打折法,这两个是联合使用的。需要补充的是,一般我们训练语言模型时,这两步是合二为一的,这里主要是为了介绍清楚n-gram语言模型训练的步骤细节。
  语言模型europarl.en.lm的文件格式如下,为 ARPA文件格式。为了说明方便,文件中的括号是我加上的注释:
 \data\
 ngram 1=262627 (注:一元词有262627个 )
 ngram 2=3708250 (注:二元词有 3708250个)
 ngram 3=2707112 (注:三元词有 2707112个)

 \1-grams:(注:以下为一元词的基本情况)
 -4.891179(注:log(概率),以10为底) ! -1.361815
 -6.482389 !) -0.1282758
 -6.482389 !’ -0.1282758
 -5.254417 “(注:一元词) -0.1470514
 -6.482389 “‘ -0.1282758(注:log(回退权重),以10为底)
 …
 \2-grams:
 -0.02140159 !
 -2.266701 ! –
 -0.5719482 !)
 -0.5719482 !’
 -2.023553 ” ‘Biomass’
 -2.023553 ” ‘vertical’
 …
 \3-grams:
 -0.01154674 the !
 -0.01154674 urgent !
 -0.01154674 us’ !
 -1.075004 the “.EU” Top
 -0.827616 the “.EU” domain
 -0.9724987 the “.EU” top-level …
3、利用上一步生成的语言模型计算测试集的困惑度:
   ngram -ppl devtest2006.en -order 3 -lm europarl.en.lm > europarl.en.lm.ppl
  其中测试集采用wmt08用于机器翻译的测试集devtest2006.en,2000句;参数-ppl为对测试集句子进行评分(logP(T),其中P(T)为所有句子的概率乘积)和计算测试集困惑度的参数;europarl.en.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,均为困惑度。其公式稍有不同,如下:
   ppl=10^{-{logP(T)}/{Sen+Word}}; ppl1=10^{-{logP(T)}/Word}
  其中Sen和Word分别代表句子和单词数
分享到:
评论

相关推荐

    srilm 语言模型训练工具

    语言模型训练工具 做语音识别 自然语言处理 都需要的工具 官网地址 http://www.speech.sri.com/projects/srilm/download.html 一般打不开 我就上传到这里 供朋友们下载

    srilm 和 tcl8.6.12.zip

    训练n-gram语言模型的工具包含srilm 和 tcl8.6.12.zip

    SRILM源代码仔细分析

    5.ngram.read.jpg:与训练无关,读取ARPA格式的语言模型的过程; 6.SRILM.uml:以上5个文件的原始图,以StarUML绘制(利用StarUML可直接编辑) 7.SRILM.vsd:ngram-count相关的主要数据结构的内存布局 + ngram条件...

    srilm-1.7.2

    语言模型训练工具,可以进行统计翻译项目,亲测可用。

    SRILM的ngram训练相关的类图及流程图

    本人阅读SRILM源代码的笔记,使用starUML及其逆向工程工具绘制。 主要针对SRILM的训练,即ngram-count。 内含5个jpg文件: 1.类图--与ngram-count相关的主要...5.ngram.read--与训练无关,读取ARPA格式的语言模型的过程

    srilm-1.7.1.tar.gz

    (下载到的srilm.tar.gz(1.7.1)要重命名成srilm.tgz,然后运行sudo ./install_srilm.sh即可自行安装) 安装成功提示如下: /home/avatar/kaldi-master/tools/srilm/sbin/decipher-install 0555 compare-sclite ....

    swig-srilm:SRILM工具包的SWIG包装器

    要求GNU make 简化的包装和接口生成器( ) 本地Python和/或Perl安装SRILM工具箱(v1.7.1)。 如果您有SRILM的旧版本(例如1.5.x系列),则应使用old_srilm分支。 请注意,SRILM应该已经被编译为与位置无关的代码。 ...

    SRILM源代码分析笔记

    5.ngram.read.jpg:与训练无关,读取ARPA格式的语言模型的过程; 6.SRILM.uml:以上5个文件的原始图,以StarUML绘制(利用StarUML可直接编辑) 7.SRILM.vsd:ngram-count相关的主要数据结构的内存布局 + ngram条件...

    srilm-1.7.3.tar.gz

    一般帖子上附的这个下载网址内网登不上 (http://www.speech.sri.com/projects/srilm/download.html) 所以就拜托国外的同学帮我下了这个最新版本的srilm 亲测可用哈~

    srilm-1.7.x.rar

    srilm 版本1.7,官网下载比较慢,放到这里来,有需要的可以下载

    SRILM与ngram-count相关的主要类的类图

    SRILM与ngram-count相关的主要类的类图 使用starUML及其逆向工程工具绘制

    在cygwin下编译srilm的说明文档

    在cygwin下安装并成功运行srilm。 Srilm是著名的自然语言处理中语言模型的计算开源程序。 本文档为国立台湾师范大学陈柏林教授课件。 给各位自然语言处理同仁共享。

    srilm-1.7.2.tar.gz.zip

    srilm-1.7.2.tar.gz,用于htk,及python环境下的操作。。

    srilm-1.4.6

    SRILM is a toolkit for building and applying statistical language models (LMs), primarily for use in speech recognition, statistical tagging and segmentation, and machine translation. ,所以传一份上来...

    Scalable Modified Kneser-Ney Language Model Estimation语言模型PPT

    统计语言模型工具有比较多的选择,目前使用比较好的有srilm及kenlm,其中kenlm比srilm晚出来,训练速度也更快,而且支持单机大数据的训练。现在介绍一下kenlm的使用方法。

    srilm-1.7.2.tar.gz

    srilm-1.7.2.tar.gz,用于htk,及python环境下的操作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    kenlm_20200110.rar

    统计语言模型工具有比较多的选择,目前使用比较好的有srilm及kenlm,其中kenlm训练速度也更快,号称单机版训练超级快,支持大规模的语料训练,文件的输入格式一...kenlm训练语言模型用的是传统的“统计+平滑”的方法。

    pysrilm:SRILM 的 Python 接口

    您可以像这样加载一个n元语法模型(请注意,由于SRILM理解zlib,因此您可以将gzip压缩的文件传递给read方法): import srilm ngrams = srilm.Ngrams(3) ngrams.read('ngram-counts-eu.tsv.gz') 在模型中查找某个 n...

    IRST LM Toolkit:语言建模工具包。-开源

    SourceForge 不再支持 IRSTLM。 请访问新的 IRSTLM 官网:... 我们的软件已集成到名为 Moses 的流行开源统计机器翻译解码器中,并且与使用其他工具(例如 SRILM Toolkit)创建的语言模型兼容。

    自然语言处理综论

    这本书的权威自不用说,译者是冯志伟老师和孙乐老师,当年读这本书的时候,还不知道冯老师是谁,但是读起来感觉非常好,想想如果没有在这个...不过这本书的N-gram语言模型部分写得非常不错,是SRILM的推荐阅读参考。

Global site tag (gtag.js) - Google Analytics