说明:该文档中工作文件夹设为working。

系统安装

  1. 下载mosesgit clone https://github.com/moses-smt/mosesdecoder.git
  2. 下载mgiza++git clone https://github.com/moses-smt/mgiza.git

    进入mgiza文件夹cd ~/working/mgiza/mgiza++
  3. 安装mgiza++
    cmake .
    make
    make install

    在moses中配置mgiza++
    cd ~/working/mosesdecoder/
    mkdir word_align_tools
    cp ~/working/mgiza/mgizapp/bin/* word_align_tools/
    cp ~/working/mgiza/mgizapp/scripts/merge_alignment.py word_align_tools/

    Successfully Installing and Running the Moses Statistical Machine Translation System
  4. 下载irstlm
    注意moses官方文档给的irstlm版本过老,可以通过sourceforge镜像网站下载最新版的irstlm。解压后进入解压文件夹。cd ~/下载/irstlm-5.80.08/trunk
  5. 安装irstlm
    1) 安装准备。
    sh regenerate-makefiles.sh
    2) 配置安装路径,注意安装路径必须使用绝对路径。
    ./configure --prefix=/home/lqj/working/irstlm
    3) 编译irstlm。
    make
    4) 安装irstlm。
    make install
  6. 下载cmph
    cmph2.0下载地址
    同安装irstlm一样,解压后进入下载文件夹。
  7. 安装cmph
    步骤同安装irstlm,注意从2)开始没有1)步骤,详细可参考解压文件夹下install文件。我安装在/usr/local/cmph文件夹下。
  8. 安装xmlrpc(不是必须,但是如果将moses作为服务提供必须安装xmlrpc)
    linux可以通过apt-get install直接安装xmlrpc。

    xmlrpc-c package : Ubuntu - Launchpad该页面介绍了xmlrpc的包。一开始至安装了libxmlrpc-core-c3和libxmlrpc-core-c3-dev那个包,moses编译一直过不去。后来把所有可能相关的包都安装以后可以顺利编译,所以我也不太清楚究竟哪个包才是moses server需要的包。
    libxmlrpc-c++8: lightweight RPC library based on XML and HTTP [C++ runtime libraries]
    libxmlrpc-c++8-dev: lightweight RPC library based on XML and HTTP [C++ development libraries]
    libxmlrpc-core-c3: lightweight RPC library based on XML and HTTP [C runtime libraries]
    libxmlrpc-core-c3-dev: lightweight RPC library based on XML and HTTP [C development libraries]
    libxmlrpc-core-c3-udeb: A lightweight RPC library based on XML and HTTP (core libraries)

  9. 安装moses

./bjam --with-irstlm=/home/lqj/working/irstlm \
--with-mgiza=/home/lqj/working/mgiza/mgizapp \
--with-cmph=/usr/local/cmph -j 4

--with-irstlm 用于指定irstlm的位置
--with-mgiza 用于指定mgiza++的位置
--with-cmph 用于指定cmph的位置
-j 4 用于指定核心数
参考bjam参数
等待几分钟以后,屏幕提示“success“即为编译完成
10. 测试moses
第一次运行moses
11. 为了使用方便,可以修改PATH环境变量。
1) 打开.bashrc文件,该文件位于用户目录下

2) 在文件最后进行编辑,添加如下几行代码:
IRSTLM="$HOME/working/irstlm"
export IRSTLM
MOSE="$HOME/working/mosesdecoder"
export MOSE
MOSE_SCRIPTS="$MOSE/scripts"
export MOSE_SCRIPTS
PATH="$MOSE/bin:$MOSE_SCRIPTS/training:$MOSE_SCRIPTS/tokenizer:$MOSE_SCRIPTS/recaser:$IRSTLM/bin:$PATH"
export PATH


3) esc键退出插入状态,:wq退出并保存.bashrc文件。重启terminal,环境变量生效。可以利用$echo $PATH查看环境变量是否成功,在PATH内的路径下的脚本文件都可以直接使用。

测试系统搭建

语料准备

  1. 准备双语平行语料(使用NiuTrans所带的语料)
  2. 语料预处理
  3. Tokenization 在单词和单词之间或者单词和标点之间插入空白(中文需要进行分词)
    ×××NiurTrans语料库应该已完成该步骤

    Tokenization的意思,本意是对英文进行词串识别,目的是将字符串转换成词串进而降低信息的不确定性,例如将it’s转换为it is。Moses脚本中的token脚本是针对西文字符的,因此对于中文基本不起作用。对等到中文,可以看做是我们的“中文分词”,这个基本上是我们自己处理中文上的第一步。

  4. Truecaser 提取关于文本的统计信息

  5. Truecasing 语料中每句话的字和词组都转换为没有格式的形式,类似于大写变为小写等等
  6. Cleaning:将长语句和空语句删除,并且将不对齐的语句进行处理

语言模型训练

语言模型使用irstlm进行处理。
1. 加首尾标识符 (irstlm/bin/add-start-end.sh)
2. 生成语言模型文件: ( irstlm/bin/build-lm.sh )
3. 将这个文件转换为标准的ARPA格式: ( irstlm/bin/compile-lm )
4. 使用KenLM对其进行二值化 (这里用到moses/bin/build_binary)
5. 测试训练的模型是否正确: (moses/bin/query )
echo "我是小明" | query b.blm.cn

翻译模型训练

  1. 在工作文件夹下新建文件夹working
    mkdir working(即该文件夹的绝对位置为/home/lqj/working/working,以下操作均在该文件夹中进行)
  2. 使用mgiza进行WordAlignment(使用giza++可以参考官方文档
    注意:下面代码段中的”\”代表换行继续写。

train-model.perl -root-dir train-en -corpus ~/working/corpus/model.clean -f cn -e en -alignment
grow-diag-final-and \
-reordering msd-bidirectional-fe -lm 0:3:/home/lqj/working/lm/model.blm.en -mgiza \
-mgiza-cpus 2 -cores 4 -parallel -external-bin-dir ~/working/mosesdecoder/word_align_tools/

注意model.blm.en文件的位置要使用绝对位置,不能使用相对位置。
运行结束后,新建的working文件夹下会出现train目录,在train/model/能找到配置文件 moses.ini
3. 准备调优语料。该语料独立于训练语料,且规模小于训练语料。(Niutrans的调优语料中英文混合需要分开为两个文件,分别起名字为dev.en和dev.cn)
4. truecase.perl --model truecase-model.en < dev/dev.en > dev.true.en
truecase.perl --model truecase-model.cn < dev/dev.cn > dev.true.cn

5. 调优
**注意**mert-mosese.pl位于mosesdecoder/scripts/training/路径下。前面已经配置过环境变量,故此处可以直接使用。mert-moses.pl /home/lqj/working/corpus/dev.true.cn \
/home/lqj/working/corpus/dev.true.en /home/lqj/working/mosesdecoder/bin/moses train/model/moses.ini \
--mertdir /home/lqj/working/mosesdecoder/bin/ --decoder-flags="-threads 4"

6. binarise
执行完调优以后,翻译系统已能正常工作。但是,运行非常缓慢,并且占用内存接近4G,同时占用swp空间超过3G。查阅官方maillist以及manul,建议对翻译模型进行binarise操作。
**注意**binarise操作需要使用cmph,如果没有按照本文档事先安装cmph,在此时才安装cmph,那么必须进入mosesdecoder安装文件夹重新执行./bjam,并补全irstlm、mgiza、cmph等等参数重新编译moses。否则执行moses.ini时会报错。
1) 在工作文件夹(/home/lqj/working/working)下新建文件夹binarised-model。
2) 在工作文件夹下执行如下语句生成binarise相应的文件。
**注意**processPhraseTableMin和processLexicalTableMin位于mosesdecoder/bin目录下,因为已经配置过环境变量,所以此处可以直接使用。
processPhraseTableMin -in train-en/model/phrase-table.gz -nscores 4 -out binarised-model/phrase-table
processLexicalTableMin -in train-en/model/reordering-table.wbe-msd-bidirectional-fe.gz -out binarised-model/reordering-table
运行完毕以后,可以看到在binarised-model文件夹下多了两个文件:phrase-table.minphr和reordering-table.inlexr。
3) 准备moses.ini
从mert-work文件夹中,复制moses.ini文件到binarised-model文件夹。打开moses.ini,修改参数PhraseDictionaryMemory为PhraseDictionaryCompact,然后在该参数后方有一个path变量,修改值为/home/lqj/working/working/binarised-model/phrase-table(即指向phrase-table.minphr,不用加后缀),同时修改LexicalReordering参数后方path变量为/home/lqj/working/working/binarised-model/reordering-table(即指向reordering-table.inlexr,不用加后缀)。

搭建moses server

如果希望把moses作为service开放使用,必须通过设置将moses设为moses server。具体步骤如下:
1. 安装xmlrpc(如果前面按照本文档已经安装xmlrpc,该步可以略过。否则参见该文档前半部分。安装完成后重新编译moses)。
2. 修改moses.pl参数
进入mosesdecoder/contrib/iSenWeb文件夹,打开moses.pl文件,修改MOSES参数为“path/to/mosesdecoder/bin/moses”,修改MOSES_INI参数为”path/to/working/binarised-model/moses.ini”。关闭并保存。
3. 在terminal中输入nohup ~/working/mosesdecoder/contrib/iSenWeb/moses.pl 10.103.29.144(即本机地址) 8080(端口号) &,屏幕打印[1] 6137
lqj@lqj-PC:~$ nohup: 忽略输入并把输出追加到"nohup.out"
。即成功运行了moses server。
4. 测试翻译平台。
echo "我 是 小明" | nc 10.103.29.144 8080
屏幕打印i am 小明如下图所示:

至此,已完成一个基础的moses平台搭建。moses更为细节的使用方式还不了解,慢慢学习吧。

其他数据源参考:
LDC
OPUS

参考来源:
moses官方baseline搭建指南
moses官方maillist
傻瓜版MOSES搭建网页翻译系统
Brain Dump: Successfully Installing and Running the Moses Statistical Machine Translation System
【机器翻译】Moses 实用指南

Moses安装全记录相关推荐

  1. [原创] Android SDK 安装全记录

    [原创] Android SDK 安装全记录 1. JDK jdk-se-7u3 http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  2. Manjaro21-kde版安装全记录

    最近手痒,又重新装了一下系统,还是Manjaro,本来想换回Gnome的,对,没错,所以我又装了kde版本.我的战五渣配置,随便看个乐呵. 开始安装 这里我不多写,网络安装版已经没了,镜像从官网下载下 ...

  3. hadoop,hbase,hive安装全记录

    ort> failed on local exception 网上大部分说事使用hadoop 的21版本问题,但我用的是20的. 后来把hbase_home/lib(启动的时候会加载里面所有ja ...

  4. ros2_object_analytics安装过程全记录

    ros2_object_analytics安装过程全记录 ros2_object_analytics安装过程全记录 问题总结 (1)OpenCV3.3依赖问题 (2)devel版本中librealse ...

  5. 在CentOS7上安装配置Corosync高可用集群过程全记录

    在CentOS7上安装配置Corosync高可用集群过程全记录 一.环境.拓朴及其他准备工作: 1-1:准备网络YUM源环境: All Nodes OS CentOS 7.3 x86_64: # wg ...

  6. Ubuntu16.04LTS+CUDA8.0+cuDNN5.1+Anaconda3(python3.6)+tensorflow_gpu-1.2.1安装过程全记录

    Ubuntu16.04LTS+CUDA8.0+cuDNN5.1+Anaconda3(python3.6)+tensorflow_gpu-1.2.1安装过程全记录 最近搭建了一台用于深度学习的服务器,其 ...

  7. FEDORA9安装后的配置lvlv全记录必看一览表 解决FC9安装后网络需激活

    FEDORA9安装后的配置lvlv全记录必看一览表 解决FC9安装后网络需激活 论坛相关精品信息: <script type="text/javascript">< ...

  8. opensuse安装face_recognition全记录

    opensuse安装face_recognition全记录 vikeyfox@20210821@opensuse安装face_recognition全记录 安装所需的python-devel 首先确保 ...

  9. [转]ubuntu 安装code blocks全记录

    ubuntu 安装code blocks全记录 转载来自 csdn 日志 (一)安装步骤: 1.先把编译环境,C库.C++库和Boost库装好,如下: sudo apt-get install bui ...

最新文章

  1. 博客非100%原创,在学习道路上,我一直站在别人肩上
  2. 64 任务调度神器 Airflow
  3. 虚幻gameframe_【虚幻4】从0开始的Galgame开发框架(2)--MainManager
  4. mysql查询当天所有数据sql语句
  5. 终极Java日志字典:开发人员最常记录的单词是什么?
  6. 程序员经验分享:Android高级工程师系列学习路线介绍,面试必备
  7. JS Location
  8. python基础 - 字符串与列表的基本操作方法
  9. 解决办法:error LNK2005: void * __cdecl operator new(unsigned int) 已经在 LIBCMTD.lib(new.obj) 中定义
  10. 领秀加速器软件介绍及功能介绍
  11. 网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、VXLAN
  12. email英文计算机求职信,求职信范文_计算机英文求职信范文
  13. 阿里云服务器安全组入方向和出方向默认规则
  14. Python绘制节点是饼状图的社交网络图(Plot network with pie chart)
  15. 在计算机系统中存储容量最大的设备,计算机系统中存储容量最大的部件是().
  16. Codeforces 780G Andryusha and Nervous Barriers
  17. 数仓知识12:PostgreSQL预写日志(WAL)和逻辑解码方案
  18. 欢乐颂之鸿蒙系统,正午阳光《欢乐颂3》将拍,杨紫已无望回归,女主之一资源很不错...
  19. vrep与matlab 互动
  20. 国内外程序员常去的九大网站

热门文章

  1. 灰色页面,HTML灰色页面
  2. 【情人节警报】看我如何智斗陌陌情爱骗子
  3. 咸阳师范学院计算机学院女生多嘛,咸阳师范学院宿舍条件怎么样
  4. 年轻不要停止奋斗的脚步
  5. 【论文泛读】ChineseBERT:融合字形与拼音信息的中文预训练模型
  6. 【Unity】Obi插件系列(六)—— Obi Cloth
  7. 情人节快到了,我部署了一套情侣头像小程序,并过审了
  8. kotlin类的成员变量 方法
  9. c语言指针一步错步步错,一步错步步错,可是到底错在哪里
  10. 【cocos精品】《梦幻西游》全面制霸苹果榜单 四榜登顶