SRILM---语言模型训练工具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主页推荐的书目和文献。
 入门——了解语言模型尤其是n-gram模型的参考书目章节:
  • 《自然语言处理综论》第一版第6章,第二版第4章(Speech and Language Processing by Dan Jurafsky and Jim Martin (chapter 6 in the 1st edition, chapter 4 in the 2nd edition) )
  • 《统计自然语言处理基础》第6章。(Foundations of Statistical Natural Language Processing by Chris Manning and Hinrich Schütze (chapter 6))
 深入学习相关文献:
  • A. Stolcke, SRILM – An Extensible Language Modeling Toolkit, in Proc. Intl. Conf. Spoken Language Processing, Denver, Colorado, September 2002. Gives an overview of SRILM design and functionality.
  • D. Jurafsky, Language Modeling, Lecture 11 of his course on “Speech Recognition and Synthesis” at Stanford. Excellent introduction to the basic concepts in LM.
  • J. Goodman, The State of The Art in Language Modeling, presented at the 6th Conference of the Association for Machine Translation in the Americas (AMTA), Tiburon, CA, October, 2002.
Tutorial presentation and overview of current LM techniques (with emphasis on machine translation).
  • K. Kirchhoff, J. Bilmes, and K. Duh, Factored Language Models Tutorial, Tech. Report UWEETR-2007-0003, Dept. of EE, U. Washington, June 2007. This report serves as both a tutorial and reference manual on FLMs.
  • S. F. Chen and J. Goodman, An Empirical Study of Smoothing Techniques for Language Modeling, Tech. Report TR-10-98, Computer Science Group, Harvard U., Cambridge, MA, August 1998 (original postscript document). Excellent overview and comparative study of smoothing methods. Served as a reference for many of the methods implemented in SRILM.

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:http://www.52nlp.cn/language-model-training-tools-srilm-details/

 

你可能感兴趣的:(SRILM---语言模型训练工具SRILM详解)