在你完成整套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 系统配置:
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文件夹下:
上面的bin文件夹下:
如果模型都训练好了,那么你可以用/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
后台启动如下图所示:
可以先测试一下是否启动正确:
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的翻译结果做对比)。