giza++是一个词对齐的工具,但是其只能生成两个单向对齐的文件~.A3.final,为了实现双向对齐,可使用mose来实现
mose通过脚本train-model.perl来进行翻译系统的训练,成功运行后会产生4个文件夹:corpus model giza.zh-en giza.en-zh。这个脚本实际上会经过下列9个步骤,而我们只需要第三步词对齐,可通过指定fisrt-step 和 last-step 这两个参数实现

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图
mose训练

具体步骤如下
实验环境:ubuntu 16.04

  1. 安装mose,具体可参考我的上篇博客
  2. 先建一个你想要输出文件存放的文件夹如
mkdir train_model

创建单向对齐的文件夹

mkdir giza.en-zhmkdir giza.zh-en

将giza++得到的两个单向对齐文件(注意保持命名一致 英文en 中文zh)放入这两个相应的文件夹中并压缩为gz格式

cd giza.en-zhgzip en-zh.A3.final
cd giza.zh-engzip zh-en.A3.final

目录结构像这样

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图1
使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图2

3.调用train-model.perl得到双向对齐文件
train-model.perl在mose文件夹下的scripts/training 文件夹里

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图3
train-model.perl路径

运行命令

/home/zhen/smt/mosesdecoder/scripts/training/train-model.perl --root-dir . --f zh --e en --first-step 3 --last-step 3

参数解释:
root-dir:输出文件夹的位置 这里是. 当前文件夹
f:外语文件名(英语之外的其他语言就是外语)
e:英语文件名
first-step:从第几步训练步骤开始
last-step:到第几步训练步骤结束,这里我们只用用到第三步词语对齐,所以都设置为3
运行过程中可能会出现下面的不匹配信息,这是因为语料中可能存在噪声(英文翻译和中文对不上号),通过这些行号可以将不匹配的中英句子去掉除掉噪声

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图4
sentence mismatch

运行结束后会产生model文件夹,里面的文件aligned.grow-diag-final就是双向对齐了的文件(mose里默认双向对齐的方法就是grow-diag-final)

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图5

使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)插图6
aligned.grow-diag-final文件部分内容展示

参考资料:
http://www.statmt.org/moses/?n=FactoredTraining.AlignWords
mose官方的词语对齐文档
https://blog.csdn.net/han_xiaoyang/article/details/10112075
我就是从这篇博客看到可以用mose做双向对齐的
http://www.statmt.org/moses/?n=FactoredTraining.TrainingParameters train_model.perl全部参数介绍

文章转载于:https://www.jianshu.com/p/6a0f73446ad8

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《使用mose对giza++生成的单向对齐文件进行词对齐对称化(双向对齐)
   

还没有人抢沙发呢~