使用MOSES搭建网页翻译系统

       在你完成整套moses的训练和微调(tuning)之后,你可以在本机上对文本里面的内容进行翻译,或者手动在终端输入进行翻译。这种方式作为研究是可以的,只适合单人使用,一个实际的服务器能同时处理多个人的翻译需求,且整个系统只启动一次,不用每次来一个请求载入一次相关数据(因为moses的数据较大时载入需要一定时间)。这样我们就应该以server的形式启动我们的翻译系统。

1 简介

       Moses是能够让我们以server的形式启动进程的,然后通过xmlrpc接收所需要翻译的句子。这也就意味着一个moses进程可以为使用Java,perl,python,php或者其他有xmlrpc库的编程语言编写的客户端(client)提供服务。

       要得到moses server,你首先需要安装xmlrpc-c,建议安装稳定版本,例如stable version1.16.19.接下来需要为了使得你最后的bin可执行文件夹下有mosesserver,需要重新编译源码,并在编译的时候指定xmlrpc的路径,在原编译命令上再加上参数--with-xmlrpc-c=<path-xmlrpc-c-config> 且你需要设置moses成多线程工作的。

       编译过后可以在bin文件夹下找到可执行文件mosesserver,启动它的方式和moses一样,在执行moses的命令中多加两个参数即可,我们需要这两个参数来制定监听端和日志文件存放处(--server-port 和 --server-log) ,若不指定的话,则俩参数默认指向8080端口和/dev/null。

2 mosesserver详细安装过程和网页翻译系统搭建过程

       作为背景,还是先说一下本人机器的基本信息。

l 服务器环境:


l 系统配置:

使用MOSES搭建网页翻译系统_第1张图片


l 编程语言:PHP和perl

l 开始安装:

       Ø 安装GIZA++

              wget http://giza-pp.googlecode.com/files/giza-pp-v1.0.7.tar.gz

              tar xzvf giza-pp-v1.0.7.tar.gz

              cd giza-pp

              make

       编译完成后,将生成三个可执行文件:

              · giza-pp/GIZA++-v2/GIZA++

              · giza-pp/GIZA++-v2/snt2cooc.out

              · giza-pp/mkcls-v2/mkcls

       记得将这些文件拷至要使用的文件夹下。

       Ø 安装srilm

       下载srilm之后执行以下命令:

              tar zxvf irstlm-5.80.01.tgz

              cd irstlm-5.80.01/

              ./regenerate-makefiles.sh

              ./configure --prefix=/home/yaoqiang/moses/irstlm-5.80.01

              make

              sudo make install

       Ø 安装xmlrpc

              1. 下载了再安装的方式

                     REPOS=http://svn.code.sf.net/p/xmlrpc-c/code/stable

                     svn checkout $REPOS xmlrpc-c

                     ./configure --prefix=/home/yaoqiang/moses

                    make

                     make install

              2.apt-get安装

                     Apt-get install libxmlrpc-c3-dev  (这种情况下生成的xmlrpc-c-config在/usr/bin下)

       Ø 安装boost

              我还是建议直接apt-get安装吧,别折腾着自己编译安装了,一条命令解决:

              apt-get install libboost1.53-all-dev

       Ø 编译moses,在https://github.com/moses-smt/mosesdecoder/tree/RELEASE-1.0上下载REALEASE-1.0版本的moses,              编译的时候建议不要多线程编译(最初编译的时候总是有一个错误,却又找不到原因,改成单线程编译就通过了),因为一些              非多线程安全的库,执行以下命令:

                     ./bjam --with-srilm = /home/yaoqiang/moses/srilm

                     --with-irstlm = /home/yaoqiang/moses/irstlm

                     --external-bin-dir = /home/yaoqiang/moses/giza-pp/bin

                     --with-xmlrpc-c = /usr

              做到这里你已经接近成功了,接下来是一段漫长的等待过程,等编译完成之后mosesdecoder以及其中的bin文件夹的文              件如下所示:

       Mosesdecoder文件夹下:

使用MOSES搭建网页翻译系统_第2张图片

       上面的bin文件夹下:

使用MOSES搭建网页翻译系统_第3张图片

使用MOSES搭建网页翻译系统_第4张图片

       如果模型都训练好了,那么你可以用/contrib/iSenWeb下已经写好的perl,php和html搭起一个网页版的翻译系统了(感谢田亮同学提供的前端和php部分,详见http://www.tianliang123.com/post/12)。

       当然,在这之前你需要安装一些东西。

       Ø Apache and PHP 安装

              sudo apt-get install apache2

              sudo apt-get install libapache2-mod-php5 mysql-server phpmyadmin

       Ø Netcat Installation

              sudo apt-get install netcat

       接着你可以把/contrib/iSenWeb下的东西都移至/var/www文件夹下,

       修改moses.pl中moses.ini配置文件和可执行文件moses的地址,我是将这个文件重写了一遍,命名为yq_moses.pl,我的moses可执行文件和配置文件的地址是:


       在这之后你就可以启动监听端口了,命令如下:

              perl yq_moses.pl  <hostname>  <port>

       例如我这里的命令就是:

              perl yq_moses.pl  192.168.0.84  9999

       后台启动如下图所示:

使用MOSES搭建网页翻译系统_第5张图片

可以先测试一下是否启动正确:

echo " 请给我一杯咖啡" | nc 192.168.0.84 9999

可以看到返回结果

Please give me a cup of coffee .

在浏览器打开http://192.168.0.84/index.html,可看到以下页面(和tianliang提供的版本有出入,我这里重写了html和php,加入了baidu和jibbigo的翻译结果做对比)。

使用MOSES搭建网页翻译系统_第6张图片


你可能感兴趣的:(服务器,机器学习,机器翻译,moses)