/Quality-Estimation1

机器翻译子任务-翻译质量评价-复现 WMT2018 阿里论文结果

Primary LanguagePythonApache License 2.0Apache-2.0

Quality-Estimation1

机器翻译子任务-翻译质量评价-复现 WMT2018 阿里论文结果

简介

翻译质量评价(Quality Estimation,QE)是机器翻译领域中的一个子任务,大致可分为 Sentence-level QE,Word-level QE,Phrase-level QE,详情可参考WMT(workshop machine translation)比赛官网 http://www.statmt.org/wmt17/quality-estimation-task.html本项目针对 Sentence-level QE,试图复现论文 “Bilingual Expert” Can Find Translation Errors 的实验结果。 上述论文的开源代码如下:https://github.com/lovecambi/qebrain ,本人受服务器驱动限制,装不了高版本的tensorflow, 基于transformer开源代码 https://github.com/Kyubyong/transformer 重写了论文中的专家模型和qe模型。 由于 wmt18-qe 的测试集标签没有公布,本项目仅在 wmt17-qe 数据集上进行实验。

实验环境

python3
tensorflow == 1.2.0

实验步骤

1、准备数据
用于训练专家模型的数据,其数据来源是 WMT17 Translation task、WMT17 qe task中sentence-level task中训练集的数据(src+pe)。数据统计信息见下表:

Dataset Sentences
Europarl v7 1,920,209
Common Crawl corpus 2,399,123
News Commentary v12 268,328
Rapid corpus of EU press releases 1,314,689
UFAL Medical Corpus 2,660,314
Khresmoi development data 500
Sentence-level QE en-de smt 23,000
Sentence-level QE de-en smt 25,000
total 8,611,163
filter 8,449,133

注:过滤后的数据总量为8,449,133

2、数据预处理
tokenize(./preprocess/token.sh);
lower(./preprocess/lower.sh);
filter(./preprocess/data_filter_merge.ipynb, we filtered the source and target sentence with length <= 70 and the length ratio between 1/3 to 3);
merge(./preprocess/data_filter_merge.ipynb,将所有数据集按照语言分别合并);

3、词表生成
分别生成源端和目标端的词表,生成后的词表按照词频排序,代码见:./prepro.py,运行代码前要先设置词表大小;

4、预训练专家模型
设置exp_hyperparams.py中的参数,运行expert_model.py;

5、联合训练专家模型和qe模型
设置qe_hyperparams.py中的参数,运行qe_model.py;
使用 Sentence-level QE en-de smt 训练en-de模型,使用 Sentence-level QE de-en smt 训练de-en模型;

实验结果

Data Pearson’s vocab_size batch steps
test 2017 en-de 0.5974 30k 128 500k
state of the art(Single) 0.6837 120k - -
test 2017 de-en 0.6745 30k 128 410k
state of the art(Single) 0.7099 120k - -

注:
1、state of the art 参考论文:“Bilingual Expert” Can Find Translation Errors
2、表中的batch和steps都是说的训练专家模型的情况,steps指训练了多少步(每一步是一个batch);
3、从我的观察来看,基本上是专家模型被训练的steps越多,后续再联合训练qe模型而得到的结果就越好,但是随着专家模型被训练步数的不断增多(比如达到350k以上),最终的结果会出现波动;
4、训练专家模型和联合训练qe模型的日志文件都放在了 ./nohup 文件夹下;