moses 编译_Moses 训练步骤
参考链接:http://www.statmt.org/moses/?n=Moses.Baseline
1.语料预处理
针对源和目标语言的语料库。有三步:
分词--》 大小写格式转换 --》 过滤。
先准备语料文件INPUT_FILE_SRC-DEST.SRC 和 INPUT_FILE_SRC-DEST.DEST
1)Tokenisation 分词
scripts/tokenizer/tokenizer.perl -l SRC_LANG< INPUT_FILE_SRC-DEST.SRC >INPUT_FILE_SRC-DEST.TOK.SRC
同样的,针对目标语言DEST
scripts/tokenizer/tokenizer.perl -l DEST_LANG< INPUT_FILE_SRC-DEST.DEST >OUTFILE_SRC-DEST.TOK.DEST
2)Truecasing 格式转换
先要跑训练脚本,得到所有的统计信息
scripts/recaser/train-truecaser.perl --model truecase_model.SRC --corpus INPUT_FILE_SRC-DEST.TOK.SRC
然后使用上一步生成的model文件,加上原有的分词后的结果文件,统一转大小写。
scripts/recaser/truecase.perl --model truecase_model.SRC INPUT_FILE_SRC-DEST.TOK.True.SRC
3)Cleaning 处理语句长度
限制长度为MIN & MAX,该命令可以一次性处理完双向的两个文件。
scripts/training/clean-corpus-n.perl INPUT_FILE_SRC-DEST.TOK.True SRC DEST INPUT_FILE_SRC-DEST.cleanMIN MAX
那么将会生成两个文件:INPUT_FILE_SRC-DEST.clean.SRC &INPUT_FILE_SRC-DEST.clean.DEST
2.语言模型训练
针对目标语言的。可以使用moses内置的KenLM, IRSTLM 或者SRILM。
mkdir ~/lm
cd ~/lm
1)使用KenLM的构建N-gram的语言模型
评估并生成模型?
~/mosesdecoder/bin/lmplz -o N INPUT_FILE_SRC-DEST.arpa.DEST
二进制化语言模型文件
将上部结果模型文件进行二进制化,可以加快之后query的加载速度。
~/mosesdecoder/bin/build_binaryINPUT_FILE_SRC-DEST.arpa.DEST INPUT_FILE_SRC-DEST.blm.DEST
查询测试
可以对该语言模型进行查询,check一下。
$ echo "is this an DEST sentence ?" |~/mosesdecoder/bin/query INPUT_FILE_SRC-DEST.blm.DEST
2)或使用IRSTLM 构建语言模型。
#TODO?
须得编译moses时指定 IRSTLM的路径,例如:
./bjam --with-irstlm=/home/s0565741/workspace/temp/irstlm-5.80.03-j4
但moses官方似乎比较推荐使用KenLM,Personally, I only use IRSTLM as aquery tool in this way if the LM n-gram order is over 7. In most situation, Iuse KenLM because KenLM is multi-threaded and faster.
3.翻译系统训练
1)脚本步骤说明
这一步是重点。主要脚本是train-model.perl.该脚本一次性可以完成9个步骤:
Prepare data (45 minutes)
Run GIZA++ (16 hours)
Align words (2:30 hours)
Get lexical translation table (30 minutes)
Extract phrases (10 minutes)
Score phrases (1:15 hours)
Build lexicalized reordering model (1 hour)
Build generation models
Create configuration file (1 second)
2)脚本参数设置
可以选择使用mgiza++替代giza++来加快训练速度。
mkdir ~/working
cd ~/working
nohup nice~/mosesdecoder/scripts/training/train-model.perl \
-root-dir train \ #指明生成目录
-corpus~/corpus/news-commentary-v8.fr-en.clean \ #指明clean语料库文件名(但不包括语言的extension)
-f fr -e en \ #指明SRC和 DEST 语言,即语料库文件对应的后缀。 Fr->en的情况下。
-alignment grow-diag-final-and \ #指明单词对齐的启发方法
-reorderingmsd-bidirectional-fe \ #指明specifies which reordering models totrain using a comma-separated list of config-strings
-lm0:3:$HOME/lm/news-commentary-v8.fr-en.blm.en:8 \ #语言模型, factory:order:filename
-external-bin-dir~/mosesdecoder/tools \ #指明word alignment tools的可执行文件路径
-mgiza \ #从默认的giza++切换成mgiza++
-cores N \ #指明训练过程可以使用的多核数量。加快训练过程。
>& training.out & #log输出
经过训练之后,moses.ini会在 ~/working/train/models下面生成。
4. Tuning :模型调整
生成的moses.ini 通常有以下两个问题:
加载速度比较慢, 可以用二进制化来解决
moses采用的权值不是最优的
因此需要对模型进行调整,这也是整个过程中最慢的一步。tuning需要一些跟训练数据无关的并行数据。
1)准备tuning数据
下载相应的数据
cd ~/corpus
tar xvzf dev.tgz
根据SRC&DEST 选择相应的数据包,然后对数据进行分词和格式统一化,例如选择de->en, 找到并选择对应的文件newtest2011.de &newtest2011.en
执行tokenize
cd ~/corpus
~/mosesdecoder/scripts/tokenizer/tokenizer.perl-l en < dev/news-test2011.en > news-test2011.tok.en
~/mosesdecoder/scripts/tokenizer/tokenizer.perl-l de < dev/news-test2011.de > news-test2011.tok.de
执行格式化统一。
~/mosesdecoder/scripts/recaser/truecase.perl--model truecase-model.en < news-test2011.tok.en > news-test2011.true.en
~/mosesdecoder/scripts/recaser/truecase.perl--model truecase-model.de < news-test2011.tok.de >news-test2011.true.de
2)进行调整
cd ~/working
nohup nice~/mosesdecoder/scripts/training/mert-moses.pl \
~/corpus/news-test2011.true.fr ~/corpus/news-test2011.true.en \
~/mosesdecoder/bin/mosestrain/model/moses.ini --mertdir ~/mosesdecoder/bin/ \
&> mert.out &
3) 二进制化加速
对phrase-tableand lexicalised reordering models进行二进制化,加速模型文件的加载
mkdir~/working/binarised-model
cd ~/working
~/mosesdecoder/bin/processPhraseTableMin \
-in train/model/phrase-table.gz -nscores 4 \
-out binarised-model/phrase-table
~/mosesdecoder/bin/processLexicalTableMin \
-intrain/model/reordering-table.wbe-msd-bidirectional-fe.gz \
-out binarised-model/reordering-table
然后将mert-work/moses.ini 文件拷贝到binarised-model 文件夹,并phrase & reordering tables 修改指向二进制的文件::
Change PhraseDictionaryMemory to PhraseDictionaryCompact
Set the path of the PhraseDictionary feature to point to $HOME/working/binarised-model/phrase-table.minphr
Set the path of the LexicalReordering feature to point to $HOME/working/binarised-model/reordering-table
moses 编译_Moses 训练步骤相关推荐
- moses 编译_moses工具的配置详解
首先是moses工具的官网网站 在编译安装moses工具包之前需要做一些准备工作 1:安装boost库 yum install boost yum install boost-devel yum in ...
- moses 编译_MOSES安装以及使用说明
MOSES 安装以及初级说明 作为初学者对 MOSES 现在也没有什么深入的了解就在这里嫌丑,浅显的介绍一 下. 首先是 moses 的官网: http://www.statmt.org/moses/ ...
- moses 编译_手把手教你编译MOSES机器翻译系统 | 学步园
摩西是一个由英国爱丁堡大学的SMT先锋团队[科恩等人,2007 ]开发的翻译系统.摩西的最新版本支持许多特征和功能.例如,它支持基于短语和基于语法基础的模型(从短语/规则提取解码).同时,它提供的因素 ...
- 第七届全国大学生工程训练大赛智能+赛道生活垃圾分类垃圾训练步骤(win10+yolov4-tiny)
目录 前言 1.安装cuda和cudnn11.1并配置 2.Yolov4-tiny垃圾训练步骤 前言 第七届全国大学生工程训练大赛结束也有一段日子了,成绩还不错,拿了个国一,在这里总结一下,垃圾桶上用 ...
- YOLOv3 Darknet安装编译与训练自己的数据集
YOLOv3 Darknet安装编译与训练自己的数据集 文章目录: 1安装编译darknet与测试darknet 1.1 安装编译darknet 1.1.1 下载darknet安装包 1.1.2 编译 ...
- linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤
前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦.我们可以利用autoconf来生成一个Makefile,尤其在大型工 ...
- VS2013中编译openssl的步骤和使用设置
VS2013中编译openssl的步骤和使用设置 一.VS2013中编译openssl的步骤 版本号:openssl-1.0.1e 1.下载 OpenSSL http://www.openssl.or ...
- Atlas 2.2.0源码编译及安装步骤
Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...
- 编译安装Nginx步骤详解
编译安装Nginx步骤详解 1,去Nginx官方网站下载源码包并解压 curl -O 或wget 跟下载链接 tar -xf 解压 2,进入nginx解压后的目录执行./configure - ./c ...
最新文章
- python多进程详解
- R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
- 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)
- asp之GetArray提取链接地址,以$Array$分隔的代码
- linux死机了怎么办?
- 如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
- 判断手机浏览器还是桌面浏览器
- 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办
- 【BZOJ3453】XLkxc [拉格朗日插值法]
- .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
- Silverlight 参考: Path的Data生成归总
- python socket tcp实战_python socket 实战
- (25)Verilog HDL循环语句:forever
- VS2005 中关于“LC.EXE已退出,代码为 -1”的错误解决方法。
- 【PAT乙】1004 成绩排名 (20分) struct结构
- Android自定义Button按钮显示样式
- 本人psp2000和psp3000都亲自试验过,没问题,刷完可以关机,能读取ISO文件,具体某些游戏可能不能运行还需要自己实践。
- 深度操作系统 V15.11——心随意动 畅享云端
- layui 时间控件 只显示时分或者分秒
- 基于单片机的温度监测系统proteus仿真