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

文章目录
  1. 1. 机器翻译
  2. 2. 赛题简介
  3. 3. 环境准备
    1. 3.1. 软件安装
    2. 3.2. 源码安装配置
  4. 4. 入门demo
    1. 4.1. 数据集
    2. 4.2. 训练model
    3. 4.3. 使用model
  5. 5. 书签

机器翻译

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

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

赛题简介

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

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

环境准备

软件安装

  • win10
  • python3.6
  • tensorflow1.3.0

源码安装配置

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

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

入门demo

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

数据集

我们将使用小规模的 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

训练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

使用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文件,即可看到翻译结果。

书签

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

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

Neural Machine Translation (seq2seq) Tutorial

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

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