您的位置:首页 > 其它

MITLM 工具包安装及使用

2015-12-21 13:38 267 查看
由于项目需求,SRILM 工具无法支持某些功能(如使用LBFG等算法进行优化),查阅相关资料发现MITLM工具包可以完成。本文主要针对LINUX Ubuntu环境进行安装。

安装步骤如下:

1. 从google code站点(https://code.google.com/p/mitlm/) 或 github站点(https://github.com/mit-nlp/mitlm)下载工具包

2. 解压工具包后,进入mitlm目录

3. 由于工具包中有fortran模块,需要提前安装,执行 sudo apt-get install gfortran或sudo apt-get install ifort

4. 执行chmod +x ./autogen.sh命令,将目录下的autogen.sh脚本变成可执行文件

5. 运行./autogen.sh,若生成过程无报错,执行./configure

6. 上述步骤顺利执行后, 输入make -j,若无错误信息,则已通过编译安装

使用介绍:

MITLM工具包主要使用estimate-ngram命令来训练语言模型,除了支持常规的KN平滑外,-eval-perp 和 -opt-alg选项可控制是否需要计算perplexity和采用的优化算法,几命令如下:

1> ./estimate-ngram -t test.txt -wl test.opt.lm -eval-perp eva.txt (结果为12.813)

2> ./estimate-ngram -t test.txt -wl test.opt.lm -op dev.txt -eval-perp eva.txt (结果为 10.670)

3> ./estimate-ngram -t test.txt -wl test.opt.lm -op dev.txt -opt-alg LBFGS -eval-perp eva.txt (结果为10.671)

4> ./estimate-ngram -t test.txt -wl test.opt.lm -op dev.txt -opt-alg LBFGSB -eval-perp eva.txt (结果为10.672)

MITLM另外一大特色是在多模型融合时候除了常规的线性融合外支持优化算法,不过前提是需要通过计算一些额外的统计量。

1> 线性融合:

./estimate-ngram -t 1.txt -wl 1.lm -eval-perp eva.txt (结果为319.578)

./estimate-ngram -t 2.txt -wl 2.lm -eval-perp eva.txt (结果为12.480)

./interpolate-ngram -l “1.lm, 2.lm” -i LI -wl 1+2.li.lm -eval-perp eva.txt (结果为20.214)

./interpolate-ngram -t “1.txt, 2.txt” -i LI -wl 1+2.li.lm -eval-perp eva.txt (结果为20.214)

./interpolate-ngram -t “1.txt, 22.txt” -i LI -wl 1+2.li.opt.lm -op dev.txt -eval-perp eva.txt (结果为10.541)

./interpolate-ngram -l “1.lm, 2.lm” -i LI -wl 1+2.li.opt.lm -op dev.txt -eval-perp eva.txt (结果为10.481)

./interpolate-ngram -l “1.lm, 2.lm” -i LI -wl 1+2.li.opt.lm -op dev.txt -opt-alg LBFGS -eval-perp eva.txt (结果为10.481)

./interpolate-ngram -l “1.lm, 2.lm” -i LI -wl 1+2.li.opt.lm -op dev.txt -opt-alg LBFGSB -eval-perp eva.txt (结果为10.480)

2> 其他融合:

./estimate-ngram -t 1.txt -wc 1.counts -wec 1.effcounts -wlc 1.lcounts -wrc 1.rcounts

./estimate-ngram -t 2.txt -wc 2.counts -wec 2.effcounts -wlc 2.lcounts -wrc 2.rcounts

./interpolate-ngram -l “1.lm, 2.lm” -i CM -interpolation-features “log:sumhist:%s.effcounts” -wl 1+2.cm.op.lm -op dev.txt -eval-perp eva.txt (结果为12.480)

./interpolate-ngram -l “1.lm, 2.lm” -i GLI -wl 1+2.gil.op.lm -if “log:sumhist:%s.effcounts” -op dev.txt -eval-perp eva.txt (结果为12.480)

./interpolate-ngram -l “1.lm, 2.lm” -i GLI -wl 1+2.gil.op.lm -if “log:sumhist:%s.effcounts,pow2:log1p:sumhist:%s.counts” -op dev.txt -eval-perp eva.txt (结果为12.480)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mitlm nlp