机器翻译系统的搭建(Ubuntu10.04+Moses)
因为学习的需要,前一段时间要搭建一个机器翻译系统,最终选择了Moses作为系统的框架,操作系统使用Ubuntu10.04。现对系统的安装流程总结如下:
1、 系统需要的工具(点击超链接可进入相应的下载页面)
<1> GIZA++ 翻译模型训练工具
<2> SRILM 语言模型训练工具
<3> Moses 生成模型的训练及解码工具包
2、 系统安装步骤
安装Moses相关的支持工具—>安装Moses—>安装训练脚本—>安装附加脚本
3、 支持工具的安装
1> 安装SRILM
在安装之前,先在终端输入:sudo apt-get install g++ make gawk gzip tcl8.4 tcl8.4-dev csh,确保SRILM编译所需要的make、g++、gawk、gzip、tcl8.4、tcl8.4-dev、csh等依赖工具已安装。完成以上工具包的安装后,需要对SRILM的有关脚本进行修改。#SRILM为SRILM所在路径。
a、 在命令行输入:cp #SRILM/Makefile #SRILM/Makefile.bak对文件进行备份,输入:gedit #SRILM/Makefile修改文件:去掉SRILM = “XXXX”前面的”#”,引号中的内容是SRILM的绝对路径,即“#SRILM”,MACHINE_TYPE = i686。
b、 修改common文件夹下的Makefile.machine.i686文件:
输入:cp #SRILM/common/Makefile.machine.i686
#SRILM/common/Makefile.machine.i686.bak #备份文件
输入:gedit #SRILM/common/Makefile.machine.i686#编辑修改文件
修改其中的两项,CC = /usr/bin/gcc $(GCC_FLAGS)
CXX = /usr/bin/g++ $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES
修改gcc的安装路径:
TCL_INCLUDE =-I/usr/include/tcl8.4/
TCL_LIBRARY = /usr/lib/libtcl8.4.so
完成了以上工作,就可以的对SRILM进行编译。
cd #SRILM #进入安装目录
sudo make #编译
下面进行环境变量的设置
cd /etc
vi profile
export PATH=#SRILM/bin:#SRILM/bin/i686:$PATH
2> GIZA++的安装
a、 mkcls-v2
cd mkcls-v2 #进入目录
make #编译
b、 GIZA++-v2
cd GIZA++-v2 #进入目录
#修改Makefile文件,删除“-DBINARY_SEARCH_FOR_TTABLE”
make #编译
4、 安装Moses
1> 下载安装moses解码器
a、安装所需要的依赖包
sudo apt-get install autoconf automaketexinfo zlib1g zlib1g-dev zlib-bin zlibc
b、因为需要从网上直接下载moses,故先安装subversion
sudo apt-get install subversion
c、下载源码包
svn cohttps://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunkmosesdecoder
d、moses的编译相关操作
cd mosesdecoder
./regenerate-makefiles.sh
./configure –with-srilm=/#SRILM #SRILM
make -j 4
2> 安装训练脚本
a、建立训练脚本目录:
mkdir-p bin/moses-scripts
b、修改makefile:
TARGETDIR=/full-path-to-workspace/bin/moses-scripts
BINDIR=/full-path-to-workspace/bin # full-path-to-workspace工作目录
c、编译:
cd moses/scripts/
make release
d、将GIZA++,mkcls, snt2cooc.out复制到BINDIR下
e、使用时需要声明环境:
export SCRIPTS_ROOTDIR=/full-path-to-workspace/bin/moses-scripts/scripts-YYYYMMDD-HHMM
3> 安装moses附加脚本
下载scripts.tgz并解压:
tar xzf scripts.tgz
ls scripts
Tokenizer scripts/tokenizer.perl
Lowercaser scripts/lowercase.perl
SGML-Wrapper scripts/wrap-xml.perl
5、 系统运行
a、 准备测试数据
cd ~/mosesdecoder
wget http://www.statmt.org/moses/download/sample-models.tgz
tar xzf sample-models.tgz
cd sample-models
cd phrase-model
b、 修改配置文件
Moses.ini中默认的语言模型为KenLM,因为我们要使用SRILM作为机器翻译系统的语言模型,所以必须对此文件进行修改:
[lmodel-file]
0 0 3 lm/europarl.srilm.gz #此处指明所在位置
c、运行
cd ~/mosesdecoder/sample-models
~/mosesdecoder/moses-cmd/src/moses -f phrase-model/moses.ini < phrase-model/in > out #根据具体情况
其中in中存放的是要进行翻译的德文句子,out中存放的是翻译后的英文结果
in:das ist ein kleines haus
out:it is a small house
6、
总结
以上是机器翻译系统搭建的全部过程。具体操作的过程中,遇到了很多问题,如:不同gcc版本的兼容问题,环境变量的配置等,这些问题有些已经得到有效的解决,但是因为对系统还不是很熟悉,对一些问题的解决不是很圆满。希望在后面的学习中,能够对moses及其支持工具有更为深入的理解,能够对现在遇到的问题有更深入的理解。
7、
参考资源
http://www.statmt.org/moses/?n=Development.GetStarted
http://dan-4899.blog.163.com/blog/static/5825023720090512226886