Moses安装、训练和优化

我是以root权限在Ubuntu服务器上安装运行的Moses,总结了网上的一些经验,再加上自己遇到一些问题然后解决问题的过程,跟大家分享一下。我安装运行成功所采用的Ubuntu、Boost、IRSTLM和giza++的版本组合如下:Ubuntu12.04.01 LTS + Boost_1_55_0+ irstlm-5.80.08 + giza-pp-v1.0.7。

一、Boost、GIZAA++、IRSTLM的安装

在安装之前需要进行以下软件的安装(Moses的官方上有):

sudo apt-get install build-essentialgit-core pkg-config automake libtool wget zlib1g-dev python-dev libbz2-dev libsoap-lite-perl

1、  Boost的安装

Moses的官方文档上说,在Ubuntu 12.04上Boost有brokenversions,所以必须自己下载安装(我将其安装在/home/lty/Moses/boost_1.55_0目录中,Moses是我创建的一个目录总体进行Moses的运行):

wget http://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.gz

tar zxvf boost_1_55_0.tar.gz

cd boost_1_55_0/

./bootstrap.sh

./b2 -j4 --prefix=/home/lty/Moses/boost_1_55_0--libdir=/home/lty/Moses/boost_1_55_0/lib64 --layout=system link=static install|| echo FAILURE

2、  GIZAA++的安装

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

这些文件需要放在一个文件夹当中,我将这些文件放在了/home/lty/Moses/giza-pp中。

但是目前为了加快速度,大家都会采用mgiza,

git clone https://github.com/moses-smt/mgizahttps://github.com/moses-smt/mgiza

唯一与上面不一样的地方是要多拷贝一个文件merge_alignment.py,我将这些文件放在了/home/lty/Moses/mgiza/mgizapp/bin中

3、  IRSTLM的安装

下载地址:http://sourceforge.net/projects/irstlm/

tar zxvf irstlm-5.80.08.tgz

cd irstlm-5.80.08

./regenerate-makefiles.sh

./configure --prefix=/home/lty/Moses/irstlm-5.80.08

make install

此时需要记住上面三个文件夹,我本机的目录是:

/home/lty/Moses/irstlm-5.80.08

/home/lty/Moses/boost_1_55_0(可指定,也可不指定)

/home/lty/Moses/mgiza/mgizapp/bin

4、  Moses下载安装

需要先下载安装一下软件:

sudo apt-get install git build-essential libz-dev libbz2-dev

然后下载Moses:

git clone https://github.com/moses-smt/mosesdecoder.git 
cd mosesdecoder

./bjam -j4 --with-irstlm=/home/lty/Moses/irstlm-5.80.08 --with-giza=/home/lty/Moses/mgiza/mgizapp/bin--with-boost=/home/lty/Moses/boost_1_55_0

-j4是利用CPU是4核的进行编译

二、语料预处理

1、语料的预处理  在/home/Moses/建立一个corpus来存放学习集,官方网站下载学习资料

cd

mkdir corpus

cd corpus

wgethttp://www.statmt.org/wmt13/training-parallel-nc-v8.tgz

tar zxvf training-parallel-nc-v8.tgz

1)tokenisation:在预料的单词和单词之间或者单词和标点之间插入空白,然后进行后续操作。

/home/lty/Moses/mosesdecoder/scripts/tokenizer/tokenizer.perl-l en < training/ news-commentary-v8.fr-en.en >news-commentary-v8.fr-en.tok.en

/home/lty/Moses/mosesdecoder/scripts/tokenizer/tokenizer.perl-l fr < training/news-commentary-v8.fr-en.fr >news-commentary-v8.fr-en.tok.fr

2)Truecaser:提取一些关于文本的统计信息

/home/lty/Moses/mosesdecoder/scripts/recaser/train-truecaser.perl--model truecase-model.en --corpus news-commentary-v8.fr-en.tok.en

/home/lty/Moses/mosesdecoder/scripts/recaser/train-truecaser.perl--model truecase-model.fr --corpus news-commentary-v8.fr-en.tok.fr

3)truecasing:将语料中每句话的字和词组都转换为没有格式的形式,减少数据稀疏性问题。

/home/lty/Moses/mosesdecoder/scripts/recaser/truecase.perl--model truecase-model.en < news-commentary-v8.fr-en.tok.en > news-commentary-v8.fr-en.true.en

/home/lty/Moses/mosesdecoder/scripts/recaser/truecase.perl--model truecase-model.fr < news-commentary-v8.fr-en.tok.fr > news-commentary-v8.fr-en.true.fr

4)cleaning: 将长语句和空语句删除,并且将不对齐语句进行处理。

/home/lty/Moses/mosesdecoder/scripts/training/clean-corpus-n.perlnews-commentary-v8.fr-en.true fr en news-commentary-v8.fr-en.clean 1 80

三、语言模型、机器翻译模型训练、Tunning翻译模型和测试

1、  先要进行语言模型训练

语言模型(LM)用于确保流利的输出,在这一步使用Irstlm进行处理。

/home/lty/Moses/mosesdecoder/scripts/generic/trainlm-irst2.perl-cores 4 -irst-dir /home/lty/Moses/irstlm-5.80.08/bin -p 0 -order 5  -text news-commentary-v8.fr-en.true.en -lmsmall-news-commentary-v8.fr-en.blm.en

echo "is this an Englishsentence" | /home/lty/Moses/mosesdecoder/bin/query news-commentary-v8.fr-en.blm.en

2、翻译模型的训练

cd ..

mkdir working

cd working

/home/lty/Moses/mosesdecoder/scripts/training/train-model.perl-root-dir train -corpus/home/lty/Moses/corpus/small-news-commentary-v8.fr-en.clean -f fr -e en-alignment grow-diag-final-and -reordering msd-bidirectional-fe -lm0:3:/home/lty/Moses/corpus/small-news-commentary-v8.fr-en.blm.en:8-external-bin-dir /home/lty/Moses/giza-pp

3、Tunning翻译模型

回到corpus,下载开发集

wget http://www.statmt.org/wmt12/dev.tgz

tar zxvf dev.tgz

/home/lty/Moses/mosesdecoder/scripts/tokenizer/tokenizer.perl-l en < dev/news-test2008.en > news-test2008.tok.en

/home/lty/Moses/mosesdecoder/scripts/tokenizer/tokenizer.perl-l fr < dev/news-test2008.fr > news-test2008.tok.fr

/home/lty/Moses/mosesdecoder/scripts/recaser/truecase.perl–model truecase-model.en  <news-test2008.tok.en > news-test2008.true.en

/home/lty/Moses/mosesdecoder/scripts/recaser/truecase.perl–model truecase-model.fr < news-test2008.tok.fr > news-test2008.true.fr

开发集在进行了和学习集相同的处理之后,对原本的moses.ini进行调优

进入working文件夹然后运行

nohup /home/lty/Moses/mosesdecoder/scripts/training/mert-moses.pl/home/lty/Moses/corpus/news-test2008.true.en /home/lty/Moses/corpus/news-test2008.true.fr/home/lty/Moses/mosesdecoder/bin/moses train/model/moses.ini --mertdir/home/lty/Moses/mosesdecoder/bin/ --decoder-flags="-threads 8"2>&1 1> Result20160120 &

4、测试模型

如果有单独的测试集,也要进行和开发集及训练集一样的预处理,这里用开发集直接进行了简单测试

/home/lty/Moses/mosesdecoder/bin/moses -f /home/lty/Moses/working/mert-work/moses.ini< small-news-test2008.true.fr > ewstest2011.out

为了加快速度,需要把phrase-table和reordering-table进行优化加快速度,关于phrase-table,请参考http://www.statmt.org/moses/?n=Advanced.RuleTables#ntoc3中的On-DiskPhrase table部分。关于reordering-table,请参考以下命令执行:

cd /home/lty/Moses/corpus/mert-work

mkdir binarised-model

/home/lty/Moses/mosesdecoder/bin/CreateOnDiskPt1 1 4 100 2 /home/lty/Moses/corpus/train/model/phrase-table.gz /home/lty/Moses/corpus/mert-workbinarised-model/phrase-table.1.folder

/home/lty/Moses/mosesdecoder/bin/processLexicalTable-in /home/lty/Moses/corpus/train/model/reordering-table.wbe-msd-bidirectional-fe.gz  -out /home/lty/Moses/corpus/mert-work/binarised-model/reordering-table

然后要修改/home/lty/Moses/corpus/mert-work中的mose.ini文件,修改成:

PhraseDictionaryOnDiskname=TranslationModel0 num-features=4 path=/home/lty/Moses/corpus/mert-work/binarised-model/phrase-table.1.folder input-factor=0 output-factor=0

LexicalReordering name=LexicalReordering0num-features=6 type=wbe-msd-bidirectional-fe-allff input-factor=0output-factor=0 path=/home/lty/Moses/corpus/mert-work/binarised-model/reordering-table

经过这个操作之后,生成速度加快了45倍,^_^。

Moses的安装、训练和优化相关推荐

  1. 深度学习 | 训练及优化方法

    ---------------------------- 原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文. ---------------------------- 深度学习 ...

  2. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  3. torch yolov3训练性能优化

    训练性能优化 训练耗时:1.YoloLayer中 target 不为null 计算loss,2.反向传播需要400ms 优化:缓存训练数据:

  4. 深入探究递归神经网络:大牛级的训练和优化如何修成?

     深入探究递归神经网络:大牛级的训练和优化如何修成? 摘要:不同于传统FNN,RNN无需在层面之间构建,同时引入定向循环,能够更好地处理高维度信息的整体逻辑顺序.本文中,MIT的Nikhil Bu ...

  5. 阿里云主机安装Memcached扩展优化WordPress

    2019独角兽企业重金招聘Python工程师标准>>> 前言 最近发现阿里云主机在使用中,并发访问量稍大,页面加载速度就很慢.于是学习了一些服务器优化的文章,决定安装Memcache ...

  6. ubuntu18.04安装chrome和优化界面

    一分钟安装教程chrome教程! 1.将下载源加入到系统的源列表(添加依赖) sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P ...

  7. 服务器最小化安装后的优化脚本

    服务器最小化安装后的优化脚本,此脚本在CentOS[5.5-5.8] x86_64系统下测试均顺利通过, 由于现在Linux服务器系统都是采用Kickstart批量安装的方式,此脚本可以由Puppet ...

  8. mysql 5.1.53_mysql 5.1.53免安装版的优化配备和精简

    mysql 5.1.53免安装版的优化配置和精简 [摘要]MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内.这样就增加了速度并提高了灵活性.本文介 ...

  9. 训练及优化神经网络基本流程之第0到6步

    在之前的笔记中,我记录过<神经网络的代价函数及反向传播算法>,以及使用BP算法(反向传播算法)的一点细节. 这篇笔记想简短地总结记录一下训练并优化神经网络的几个步骤: 第零步:之所以写了个 ...

最新文章

  1. 没有银弹,微服务架构改造的一条不归路。。。
  2. [Miller-Rabin Pollard-rho]【学习笔记】
  3. jzoj2700-数字【数论,LCM】
  4. MySql学习之组合查询
  5. PHP学习思维导图--小树好久没长大了,给它加点枝叶
  6. 好的编码习惯是一场代码驱邪仪式
  7. matplotlib柱状图上方显示数据_Python数据分析matplotlib可视化之绘图!
  8. Microsoft Visio Professional 2013打不开也卸载不了解决办法
  9. 电脑输入法哪个最好用,提高工作效率就选它
  10. 长安“战疫”网络安全卫士守护赛部分writeup
  11. PHPExcel导入导出常用方法总结
  12. MySQL将表中的价格全部加五_MySQL浅见(五)修改表
  13. 介绍一下什么是大数据
  14. 基于python的灰色预测模型
  15. Linux 进程优先级 NICE、PRI
  16. 将本地文件复制到Linux系统盘中
  17. 计算机毕业设计Java医院病房管理系统(系统+源码+mysql数据库+Lw文档)
  18. Linux文件系统(四)文件缓存
  19. 阿尔茨海默病神经影像学计划的最新出版物:改进的AD临床试验的进展综述
  20. java计算机毕业设计银杏湖景区旅游管理信息平台源码+系统+mysql数据库+lw文档

热门文章

  1. 爬虫进阶:使用fiddler抓取手机app数据
  2. unity:瞄准镜制作
  3. 鸿蒙os跑分,预装鸿蒙OS 2.0!华为MatePad Pro2跑分曝光:麒麟9000、8GB内存
  4. 一步步教你如何在Ubuntu虚拟机中安装QEMU并模拟模拟arm 开发环境(一)uImage u-boot
  5. Linux CentOS 7 下载安装
  6. 送礼品的禁忌和注意事项
  7. Facebook APP 注册 登录
  8. 【C语言】编程初学者入门训练(7)
  9. 在ROS中使用中文语音交互(百度语音baidu_speech)
  10. 如何写出高效率的sql语句