一个计算机技术爱好者与学习者

0%

英中机器文本翻译-第0章

1. 机器翻译

机器翻译,即跨语言间的自动翻译,是机器学习社区最活跃的研究领域。在机器翻译的众多方法中,序列到序列(sequence-to-sequence,seq2seq)模型近期获得巨大成功。由于其可以使用深度神经网络获取句义,该模型成为谷歌翻译等多数商业翻译系统事实上的标准模型。

小生以参加《全球AI挑战赛-英中机器文本翻译》为导向,学习各种相关知识。

2. 赛题简介

英中文本机器翻译竞赛的目标是评测英中文本机器翻译的能力。本次文本机器翻译语言方向为英文到中文。参赛队伍需要根据评测方提供的数据,训练机器翻译系统,并且自由地选择机器翻译技术。例如,基于规则的翻译技术、基于实例的翻译技术、统计机器翻译及神经网络机器翻译技术等。

本次竞赛将利用机器翻译的客观考核指标(BLEU、NIST score、TER)进行评分,BLEU得分会作为主要的机器评价指标。组委会将通过客观指标,并结合答辩表现,综合评估参赛者的算法模型。

3. 环境准备

3.1. 软件安装

  • win10
  • python3.6
  • tensorflow1.3.0

3.2. 源码安装配置

git clone https://github.com/tensorflow/nmt/

因为tensorflow的更新很快,nmt项目的更新也很快,所以,我们必须使用和tensorflow版本对应的nmt版本。
git reset --hard 77e6c55

4. 入门demo

让我们开始训练第一个 NMT 模型,将越南语翻译为英语。代码的入口是nmt.py。

4.1. 数据集

我们将使用小规模的 Ted 演讲并行语料库(133k 的训练样本)进行训练。所有的数据都可从以下链接找到:https://nlp.stanford.edu/projects/nmt/

我们将使用tst2012作为开发数据集,tst2013作为测试数据集。在linux下运行以下命令行下载数据:
mkdir -p /tmp/nmt_data

nmt/scripts/download_iwslt15.sh /tmp/nmt_data

linux下载好数据集后,把数据集下载到win10中nmt目录中,路径为nmt/tmp/nmt_data

4.2. 训练model

在根目录(nmt目录)下运行:

1
python -m nmt.nmt --src=vi --tgt=en --vocab_prefix=./tmp/nmt_data/vocab  --train_prefix=./tmp/nmt_data/train --dev_prefix=./tmp/nmt_data/tst2012  --test_prefix=./tmp/nmt_data/tst2013 --out_dir=./tmp/nmt_model --num_train_steps=12000 --steps_per_stats=100 --num_layers=2 --num_units=128 --dropout=0.2 --metrics=bleu

郝同学i5-3337U CPU@1.80GHz,8G内存,训练了将近两个小时才训练完成。下文我们要学习使用一下UCloud提供的免费GPU。

我们可以使用 Tensorboard 在训练过程中查看模型的总结:

tensorboard --port 22222 --logdir ./tmp/nmt_model/

通过以下简单的变化,就能逆向完成英语到越南语的翻译。

--src=en --tgt=vi

4.3. 使用model

1、从mnt/tmp/nmt_data/tst2013.vi中复制几句话,新建nmt/tmp/my_infer_file.vi,粘贴到里面。

2、运行model

1
python -m nmt.nmt --model_dir=./tmp/nmt_model --inference_input_file=./tmp/my_infer_file.vi --inference_output_file=./tmp/nmt_model/output_infer

3、查看结果
打开nmt/tmp/nmt_model/output_infer文件,即可看到翻译结果。

5. 书签

全球AI挑战赛-英中机器文本翻译

谷歌开放GNMT教程:如何使用TensorFlow构建自己的神经机器翻译系统

Neural Machine Translation (seq2seq) Tutorial

用CNN做机器翻译?Facebook相关论文的PyTorch代码发布

从零开始:深度学习软件环境安装指南