参考链接: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 训练步骤相关推荐

  1. moses 编译_moses工具的配置详解

    首先是moses工具的官网网站 在编译安装moses工具包之前需要做一些准备工作 1:安装boost库 yum install boost yum install boost-devel yum in ...

  2. moses 编译_MOSES安装以及使用说明

    MOSES 安装以及初级说明 作为初学者对 MOSES 现在也没有什么深入的了解就在这里嫌丑,浅显的介绍一 下. 首先是 moses 的官网: http://www.statmt.org/moses/ ...

  3. moses 编译_手把手教你编译MOSES机器翻译系统 | 学步园

    摩西是一个由英国爱丁堡大学的SMT先锋团队[科恩等人,2007 ]开发的翻译系统.摩西的最新版本支持许多特征和功能.例如,它支持基于短语和基于语法基础的模型(从短语/规则提取解码).同时,它提供的因素 ...

  4. 第七届全国大学生工程训练大赛智能+赛道生活垃圾分类垃圾训练步骤(win10+yolov4-tiny)

    目录 前言 1.安装cuda和cudnn11.1并配置 2.Yolov4-tiny垃圾训练步骤 前言 第七届全国大学生工程训练大赛结束也有一段日子了,成绩还不错,拿了个国一,在这里总结一下,垃圾桶上用 ...

  5. YOLOv3 Darknet安装编译与训练自己的数据集

    YOLOv3 Darknet安装编译与训练自己的数据集 文章目录: 1安装编译darknet与测试darknet 1.1 安装编译darknet 1.1.1 下载darknet安装包 1.1.2 编译 ...

  6. linux新建好文件后怎么编译,使用autoconf生成Makefile并编译工程的步骤

    前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦.我们可以利用autoconf来生成一个Makefile,尤其在大型工 ...

  7. VS2013中编译openssl的步骤和使用设置

    VS2013中编译openssl的步骤和使用设置 一.VS2013中编译openssl的步骤 版本号:openssl-1.0.1e 1.下载 OpenSSL http://www.openssl.or ...

  8. Atlas 2.2.0源码编译及安装步骤

    Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...

  9. 编译安装Nginx步骤详解

    编译安装Nginx步骤详解 1,去Nginx官方网站下载源码包并解压 curl -O 或wget 跟下载链接 tar -xf 解压 2,进入nginx解压后的目录执行./configure - ./c ...

最新文章

  1. python多进程详解
  2. R语言ggplot2可视化:ggplot2可视化两个水平条形图(horizontal)、并设置两个条形图使用共享的X轴、使用类似population pyramid可视化的方式绘制共享X轴的水平条形图
  3. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)
  4. asp之GetArray提取链接地址,以$Array$分隔的代码
  5. linux死机了怎么办?
  6. 如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
  7. 判断手机浏览器还是桌面浏览器
  8. 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办
  9. 【BZOJ3453】XLkxc [拉格朗日插值法]
  10. .NET Core开发实战(第8课:配置框架:让服务无缝适应各种环境)--学习笔记
  11. Silverlight 参考: Path的Data生成归总
  12. python socket tcp实战_python socket 实战
  13. (25)Verilog HDL循环语句:forever
  14. VS2005 中关于“LC.EXE已退出,代码为 -1”的错误解决方法。
  15. 【PAT乙】1004 成绩排名 (20分) struct结构
  16. Android自定义Button按钮显示样式
  17. 本人psp2000和psp3000都亲自试验过,没问题,刷完可以关机,能读取ISO文件,具体某些游戏可能不能运行还需要自己实践。
  18. 深度操作系统 V15.11——心随意动 畅享云端
  19. layui 时间控件 只显示时分或者分秒
  20. 基于单片机的温度监测系统proteus仿真

热门文章

  1. 【解决方案】VR视频行业急速发展,如何搭建一套16K高清的公网视频传输系统?
  2. 如何高情商地回答同事或领导的夸奖?
  3. 学习数织物密度/经纬密
  4. 百度砸120W年薪,只要这个专业,应届生也行!
  5. 3D到2D的转换方式
  6. 关于宽带拨号上网的笑话,我自己闹的笑话。
  7. 小甲鱼python视频bilibili_在B站上学编程,这几个视频你知道了么?
  8. 阿里MNN推理框架相关介绍
  9. oracle OCP考点在哪,Oracle OCP认证考哪几门
  10. 【Hibernate步步为营】--最后的集合映射