Github 项目推荐 | 用 PyTorch 实现 OpenNMT

这是一个用 PyTorch 实现的 OpenNMT 的库,OpenNMT 是一个神经机器翻译系统。

Github:

https://github.com/mattiadg/SR-NMT

快速开始

一些有用的工具:

下面的例子使用了 Moss tokenizer (http://www.statmt.org/moses/) 来准备用于评估的数据和 moses BLEU 脚本。

wget https://raw.githubusercontent.com/moses-smt/mosesdecoder/master/scripts/tokenizer/tokenizer.perl
wget https://raw.githubusercontent.com/moses-smt/mosesdecoder/master/scripts/share/nonbreaking_prefixes/nonbreaking_prefix.de
wget https://raw.githubusercontent.com/moses-smt/mosesdecoder/master/scripts/share/nonbreaking_prefixes/nonbreaking_prefix.en
sed -i "s/$RealBin\/..\/share\/nonbreaking_prefixes//" tokenizer.perl
wget https://raw.githubusercontent.com/moses-smt/mosesdecoder/master/scripts/generic/multi-bleu.perl

WMT'16 多模式翻译:Multi30k(de-en)

WMT'16多模式翻译任务训练示例(http://www.statmt.org/wmt16/multimodal-task.html)。

0)下载数据:

mkdir -p data/multi30k
wget http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/training.tar.gz &&  tar -xf training.tar.gz -C data/multi30k && rm training.tar.gz
wget http://www.quest.dcs.shef.ac.uk/wmt16_files_mmt/validation.tar.gz && tar -xf validation.tar.gz -C data/multi30k && rm validation.tar.gz
wget https://staff.fnwi.uva.nl/d.elliott/wmt16/mmt16_task1_test.tgz && tar -xf mmt16_task1_test.tgz -C data/multi30k && rm mmt16_task1_test.tgz
1) Preprocess the data.

1)预处理数据:

for l in en de; do for f in data/multi30k/*.$l; do if [[ "$f" != *"test"* ]]; then sed -i "$ d" $f; fi;  done; done
for l in en de; do for f in data/multi30k/*.$l; do perl tokenizer.perl -a -no-escape -l $l -q  < $f > $f.atok; done; done
python preprocess.py -train_src data/multi30k/train.en.atok -train_tgt data/multi30k/train.de.atok -valid_src data/multi30k/val.en.atok -valid_tgt data/multi30k/val.de.atok -save_data data/multi30k.atok.low -lower

2)训练模型:

python train.py -data data/multi30k.atok.low.train.pt -save_model multi30k_model -gpus 0

3)翻译语句:

python translate.py -gpu 0 -model multi30k_model_e13_*.pt -src data/multi30k/test.en.atok -tgt data/multi30k/test.de.atok -replace_unk -verbose -output multi30k.test.pred.atok

4)评估:

perl multi-bleu.perl data/multi30k/test.de.atok < multi30k.test.pred.atok

预训练模型:

以下预训练模型可以下载并与 translate.py 一起使用(这些训练有较旧版本的代码;它们将很快更新)。

  • onmt_model_en_de_200k:基于 OpenNMT / IntegrationTesting 中 200k 句子数据集的英德翻译模型。 Perplexity:21。
  • onmt_model_en_fr_b1M:一个英语 - 法语模型,以基准 -1M 为基础进行培训。 Perplexity:4.85。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

从零开始用Python构造决策树

来源:Python中文社区 作者:weapon 本文长度为700字,建议阅读5分钟 本文介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。 ...

34570
来自专栏PPV课数据科学社区

大数据竞赛平台-Kaggle入门篇

本文作者: wopon_ 来源:36大数据 本文长度为1500字,建议阅读4分钟 这篇文章适合那些刚接触Kaggle、想尽快熟悉Kaggle并且独立完成一个竞赛...

49880
来自专栏AI科技大本营的专栏

无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现

近年来,随着深度学习在图像视觉领域的发展,一类基于单纯的深度学习模型的点云目标检测方法被提出和应用,本文将详细介绍其中一种模型——SqueezeSeg,并且使用...

32310
来自专栏程序你好

使用ML.Net和CSharp语言进行机器学习

本文介绍.net中的机器学习技术实现,不涉及数学方面的内容。它将重点关注在.net中的基本工作流程及其数据处理结构,以及怎么样通过使用开源项目ML.Net 0....

69630
来自专栏深度学习入门与实践

【深度学习系列】PaddlePaddle之手写数字识别

上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下。不过呢,这块...

35090
来自专栏WOLFRAM

版本 11.1 的新功能概要

12230
来自专栏CreateAMind

代码解读Top-down Neural Attention by Excitation Backprop及模型架构图

42230
来自专栏人工智能LeadAI

宠物狗图片分类之迁移学习代码笔记

本文主要是总结之前零零散散抽出时间做的百度西交大狗狗图片分类竞赛题目 竞赛.目前本人已经彻底排到了50名后面,,,也没有想到什么办法去调优,并且平时也忙没时间再...

11610
来自专栏尾尾部落

使用自己的语料训练word2vec模型

先对新闻文本进行分词,使用的是结巴分词工具,将分词后的文本保存在seg201708.txt,以备后期使用。

1.2K30
来自专栏申龙斌的程序人生

零基础学编程037:小数据分析

R语言内置强大的向量运算,是搞数据分析的强大的编程语言,而Python也毫不逊色。今天就试着分析一下考试成绩表中两门科目的相关性。 问题描述: 有一个CSV文件...

37590

扫码关注云+社区

领取腾讯云代金券