一 Moses简介
Moses是Pharaoh的升级版本,增加了许多功能。它是由英国爱丁堡大学、德国亚琛工业大学等8家单位联合开发的一个基于短语的统计机器翻译系统。来自这8家单位的研究人员于2006年在约翰霍普金斯大学召开了一次研讨会,利用6个星期的时间共同开发了这一系统。整个系统用C++语言写成,从训练到解码完全开放源代码,可以运行在Linux平台和Windows平台。其开发领导者是Philipp Koehn。具有两大特点:
1、Factored翻译模型(Factored Translation Model):
在factored翻译模型中,一个单词不仅仅是一个符号(token),而是一个包含多个factor的向量,例如表面词形、词干、词性等。这些factor共同作用来刻画一个单词。
Moses features novel factored translation models, which enable the integration linguistic and other information at many stages of the translation process.
2. 混合网络解码(Confusion Network Decoding):
当前的机器翻译系统能够接受的输入一般是纯文本形式的一串单词(一句话或者一篇文章),而现在将机器翻译系统作为一个大的信息处理系统的组成部分的需求日益增长,它的输入可能不再是纯文本的形式,而是其它模块的输出结果,例如命名实体识别的结果,或者语音识别的结果。这样的输入不再是单一的,而是可能含有错误的、多种可能性的输入。混合网络解码允许这种多可能性的输入,最终选择最优译文。
Moses allows the decoding of confusion networks, enabling easy integration with ambiguous upstream tools, such as automatic speech recognizers .
资源链接及相关参考:
Moses主页:http://www.statmt.org/moses/
Moses介绍(ACL07):Moses: Open Source Toolkit for Statistical Machine Translation
JHU06研讨会的Final Report:Open Source Toolkit for Statistical Machine Translation: Factored Translation Models and Confusion Network Decoding
计算所何中军等:统计机器翻译开源软件介绍
二、Moses测试平台搭建
1、概述
使用Linux平台,安装了当前比较流行的Ubuntu系统,版本为7.10。
按ACL07统计机器翻译讨论会(ACL 2007 SECOND WORKSHOP ON
STATISTICAL MACHINE TRANSLATION)的介绍搭建了Moses测试平台,其核心框架仍是Kohen的基于短语的SMT框架。平台采用GIZA++进行翻译模型的训练, SRILM工具进行语言模型的训练,Moses工具包进行生成模型的训练及解码,mteval工具包对实验结果进行BLEU评分。
2、步骤
安装Moses支持工具
安装Moses
安装Moses训练脚本
安装附加脚本及评测工具
Ubuntu下建立的总路径为:/home/user/mtbaseline/(注:user是我的用户名)
如果需要训练,可以在总路径下建立个人的训练文件夹:mkdir test
以上每一步都需要建立相应的文件夹,具体可参考ACL官方介绍。
3、安装Moses支持工具-SRILM
在SRILM的主页上有下载及安装介绍,主要要配置一些必须的工具,有版本要求:
A template-capable ANSI-C/C++ compiler, preferably gcc version 3.4.3 or higher.
GNU make, to control compilation and installation.
GNU gawk, required for many of the utility scripts.
GNU gzip to unpack the distribution, and to allow SRILM programs to handle ".Z" and ".gz" compressed datafiles (highly recommended).
bzip2 to handle ".bz2" compressed files (optional).
p7zip to handle "7-zip" compressed files (optional).
The Tcl embeddable scripting language library (only required for some of the test executables).
The CYGWIN porting layer, to build SRILM on a Microsoft Windows system. CYGWIN comes with the packages above, so this is all you will need.
按SRILM上的安装文件介绍(INSTALL file )安装时遇到了一些问题;
参考了一篇国内的SRLIM安装介绍,主要有几个问题需要注意:
必须安装一些需要依赖的软件包;
要修改一些文件,如makefile等,在该页面上有介绍;
最后要检测是否安装成功,有可能需要反复几次安装才能成功
4、安装Moses支持工具-GIZA
包括mkcls, GIZA等,但是需要注意的是,ACL官方给出的Och的主页已不存在,我是在另一个国外的介绍网站上下载并安装的,下载命令为:wget http://ling.umd.edu/~redpony/software/giza++.gcc41.tar.gz
这部分的安装比较简单,按上面的介绍就可以了:
cd GIZA++-v2/makemake snt2cooc.outcd ../mkcls-v2/make
将编译好的这几个文件拷贝到主目录文件下的bin目录下;
5、安装Moses
通过Subversion下载并管理Moses:
mkdir -p moses
svn co https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk moses
编译 Moses
cd moses
./regenerate-makefiles.sh
./configure --with-srilm=/path-to-srilm path-to-srilm
make -j 4
说明:
Subversion是当前很流行的开源版本管理软件,sourceforge网站已采用;
编译Moses时指向SRILM的路径必须是绝对路径而不能是相对路径,我安装的时候在这个问题上花了好长时间才搞明白错误;
语言模型训练工具除了SRILM可选外,还可以使用新出的irstlm,ACL07上有介绍,可以处理大规模的单语语料库,对其进行高效压缩。
Windows下编译说明:
解压moses.2008-02-20.tgz
The Visual Studio 2005 build require:
a. VLD (Visual Leak Detector)
b. zlib. Moses uses the statically-linked version.
The Windows build doesn't uses SRILM
6、安装Moses训练脚本
建立训练脚本目录:
mkdir -p bin/moses-scripts
修改makefile:
TARGETDIR=/full-path-to-workspace/bin/moses-scripts
BINDIR=/full-path-to-workspace/bin
编译:
cd moses/scripts/
make release
使用时需要声明环境:
export SCRIPTS_ROOTDIR=/full-path-to-workspace/bin/moses-scripts/scripts-YYYYMMDD-HHMM
7、安装Moses附加脚本及评测工具
下载scripts.tgz并解压:
tar xzf scripts.tgz
这些脚本包括:
Tokenizer scripts/tokenizer.perl
Lowercaser scripts/lowercase.perl
SGML-Wrapper scripts/wrap-xml.perl
下载NIST,BLEU评测工具:
wget ftp://jaguar.ncsl.nist.gov/mt/resources/mteval-v11b.pl
8、相关参考:
ACL 2007 SECOND WORKSHOP ON SMT: Shared Task: Baseline System
主要参考的一个国外网站: http://guardiani.us/index.php/Moses_Language_Model_Howto_v2
台湾的一个介绍SRILM的编译文章,有测试说明:http://weiqk.spaces.live.com/Blog/cns!2115755AE5F9E79!221.entry
主要参考的在ubuntu下编译安装SRILM的一篇国内博客: http://hi.baidu.com/wit_yd/blog/item/6b6681272c8ed206918f9dbe.html
9、补充说明:
除去SRILM,GIZA++,Moses这几个大型程序用C++写外,其它脚本(如训练脚本,附加脚本,评测工具)均用Perl写成。
Perl是一种脚本语言,支持正则表达式,除了具备强大的字符串处理功能之外,还有“胶水”作用,Perl能够将各种应用程序或者各种语言的代码结合起来。
三、实验和总结部分略。
(注:这是08年6月份给实验室内部做得关于开源解码器Moses的相关报告,内容由PPT整理而成。转载请注明出处,谢谢!)
注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn
本文链接地址:
https://www.52nlp.cn/moses-introduction/
Hi, would that be possible you can send me your contact? (for example e-mail), I am trying to learn MoSes... thank you so much!
BEST
Lin
celia_qu@sina.com
[回复]
admin 回复:
15 1 月, 2009 at 00:41
hi, my email is admin#52nlp.cn, please use @ instead of #, thanks!
[回复]
基于短语的统计机器翻译系统
这样的解释没有太明白,请楼主从实际中给解释一下。
[回复]
admin 回复:
28 4 月, 2009 at 13:59
通俗的说法就是统计机器机器翻译的基本单位是短语,譬如汉英机器翻译,翻译时首先把已经分好词的汉语句子分割为短语,然后再对短语进行翻译,最后对翻译好的英语短语对于进行调序形成英语句子。事实上里面涉及的细节很多,要了解统计机器翻译的话可以先看看刘群老师03年在《中文信息学报》上发表的《统计机器翻译综述》,不过经历了6年时间统计机器翻译产生了许多新方法,新技术,这些可以暂时忽略。
[回复]
师兄你好,一直关注着52nlp,它对我的帮助也很大,我现在想问一个问题,就是moses在做mert的时候生成nbest的策略和最后跑测试集的1-best的策略是不同的(nbest没有recombine,1-best是有recombine的),这样是否妥当? 那做mert的时候也对相同的翻译做recombine效果是否会更好?
[回复]
不好意思,对于moses中调参时生成的nbest策略和跑测试集时生成的1-best策略不同我还不是很清楚;如果你觉得有问题,可以试着修改一下,对比一下实验的结果,这样可以对问题认识的更清楚,见谅!
[回复]
今年的机器翻译评测大会可去参加,如果参加,希望能认识下。
[回复]
admin 回复:
22 9 月, 2009 at 22:43
还不确定,估计可能性小些,不过可以加我的msn。
[回复]
我下载的是moses-2009-04-13.zip,用vs2008编译,提示没有这个头文件,上网找了一个加到工程里面去了,但是重新生成的时候还是提示没有,这是怎么回事啊
[回复]
BaseTsd.h
[回复]
52nlp 回复:
15 1 月, 2010 at 20:01
没用过vs2008编译moses,所以没遇到过这个问题。上网搜了一下,也没理出个头绪,大概还是缺少这个头文件,可以试着把这个头文件放到vs2008的include中去,或者再搜搜如何将BaseTsd.h加到工程中去,不好意思。
[回复]
[...] (2). https://www.52nlp.cn/moses-introduction [...]
请问一下,现在moses的版本跟以前肯定不同了,我安装的是候发现 regenerate-makefiles.sh文件比原来多了
echo "Calling $ACLOCAL..."
$ACLOCAL -I m4 || die "aclocal failed"
安照原来的方法去运行会提试这行出错
我将其注释掉,可以运行,但是 ./configure --with-srilm=绝对路径又出现错误,提试我./configure找不到,
我srilm编译并测试成功,以lz的经验我应该是哪里出问题了?
[回复]
moses站点上,关于factored model训练的教程中举的第一个例子:
% train-model.perl \
--corpus factored-corpus/proj-syndicate \
--root-dir unfactored \
--f de --e en \
--lm 0:3:factored-corpus/surface.lm:0
我想请教,在SMT中不是decode时才用上语言模型吗,训练时标出lm有什么用?
[回复]
52nlp 回复:
22 5 月, 2010 at 12:25
Moses中是支持factored模型的,而对于factored中不同因子的区分,是通过标号识别的,譬如词干是0,词缀是1之类的,在解码中不同的因子可能需要不同的语言模型,所以对于factored Model,Moses解码时可能需要多个语言模型,而这时主要通过的是moses.ini配置脚本进行识别的,而这个脚本就是利用train-model.perl训练时同步生成的,这样就减少了很多手工配置。
[回复]
明白了,谢谢!
[回复]
52nlp 回复:
23 5 月, 2010 at 12:46
不客气。
[回复]
输入文件 参考译文 系统译文等文件都为xml格式;用mteval-v11b.pl评策工具评测结果bleu为0.0000;为什么呢?
系统译文有很多未登陆词,但是不能出0.0000吧!? 使bleu为0.0000的原因有哪些啊!?
[回复]
52nlp 回复:
19 6 月, 2011 at 08:53
即使很多未登录词,得到0感觉哪里出问题了。检查一下XML文件里的译文是不是和参考译文对齐的,其他我也想不出是什么问题。
[回复]
[...] 晚上在CWMT(China Workshop on Machine Translation)的邮件组里看到东北大学自然语言处理实验室朱靖波老师的邮件,题为“NiuTrans: 一套开源的统计机器翻译平台”,仔细读了一下,觉得这句话很有分量:“内部测试结果显示性能和速度稳定优于Moses”,如果读者感兴趣,可以去NiuTrans的主页去申请下载,做个测试,NiuTrans的主页见:http://www.nlplab.com/NiuPlan/NiuTrans.html。前不久“哈工大语言技术平台(LTP)源代码正式对外共享”,而今东北大学也开源了NiuTrans这套统计机器翻译平台,这些对于致力于中文信息处理的NLPer来说都是好消息。以下内容全文转载自朱靖波的邮件: [...]
Moses只能在Linux环境下使用么?
[回复]