机器翻译新时代:Facebook 开源无监督机器翻译模型和大规模训练语料

【导读】基于深度学习的机器翻译往往需要数量非常庞大的平行语料,这一前提使得当前最先进的技术无法被有效地用于那些平行语料比较匮乏的语言之间。为了解决这一问题,Facebook提出了一种不需要任何平行语料的机器翻译模型。该模型的基本思想是, 通过将来自不同语言的句子映射到同一个隐空间下来进行句子翻译。近日,Facebook开源了这一翻译模型MUSE: Multilingual Unsupervised and Supervised Embeddings,并提供预训练好的30种语言的词向量和110个大规模双语词典。

▌主要流程


1、先用单语语料训练两个词向量空间,然后用无监督方法对齐这两个空间

2. 对齐 encoder 语义空间,两种语言各一个 decoder;用 denoising auto-encoder 训练单语语言模型,用 back-translation 造伪平行语料优化似然函数

Facebook MUSE: a Python library for multilingual word embeddings now open sourced!

▌Facebook MUSE: 多语言词嵌入的开源Python库


Facebook的开源的MUSE,是一个无监督和有监督的多语言词嵌入Python库,以无监督或有监督的方式对齐嵌入空间。监督方法使用双语词典或相同的字符串。无监督的方法不使用任何并行数据。相反,它通过以无监督的方式对齐词嵌入空间来建立两种语言之间的双语词典(bilingual dictionary)。

Facebook MUSE基于fastText,有最先进的超过30种语言的多语言词嵌入功能。fastText是一个高效学习单词表示和句子分类的库。fastText使用Skipgram,word2vec或CBOW(连续单词袋)学习词嵌入,并将其用于文本分类。

你可以使用下面命令下载英语(en)和西班牙语(es)的词嵌入:

# English fastText Wikipedia embeddingscurl -Lo data/wiki.en.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.en.vec# Spanish fastText Wikipedia embeddingscurl -Lo data/wiki.es.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.es.vec

Facebook MUSE还拥有110个大规模高质量、真实的双语词典,以缓解跨语言词嵌入和多语言NLP方法的开发和评价。这些字典是使用内部翻译工具创建的。字典很好地处理了多义词(一词多义问题)。

如前所述,MUSE有两种方法来获取跨语言的词嵌入。

有监督方法使用训练双语词典(或相同的字符串作为锚点(anchor point))来学习使用Procrustes对齐方式从源到目标空间的映射。

要学习源和目标空间之间的映射,只需运行:

python supervised.py --src_lang en --tgt_lang es --src_emb data/wiki.en.vec --tgt_emb data/wiki.es.vec --n_iter 5 --dico_train default

无监督方法使用对抗训练和Procrustes细化(Procrustes refinement)学习从源到目标空间的映射,而没有利用任何并行数据或锚点(anchor point)。

使用对抗训练和迭代Procrustes细化来学习映射,只需运行:

python unsupervised.py --src_lang en --tgt_lang es --src_emb data/wiki.en.vec --tgt_emb data/wiki.es.vec

Facebook MUSE还有一个简单的脚本来评估单语言或跨语言词嵌入在几个不同任务中的效果:

单语言

python evaluate.py --src_lang en --src_emb data/wiki.en.vec --max_vocab 200000

跨语言

python evaluate.py --src_lang en --tgt_lang es --src_emb data/wiki.en-es.en.vec --tgt_emb data/wiki.en-es.es.vec --max_vocab 200000

要了解更多关于这个Python库的功能和下载其他资源,你可以参考下面链接(https://github.com/facebookresearch/MUSE )。

相关链接:

  • MUSE: https://github.com/facebookresearch/MUSE
  • fastText: https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md
  • Skipgram: https://towardsdatascience.com/word2vec-skip-gram-model-part-1-intuition-78614e4d6e0b
  • word2vec: https://www.tensorflow.org/tutorials/word2vec
  • CBOW: https://iksinc.wordpress.com/tag/continuous-bag-of-words-cbow/

▌详细资料链接


1. 论文地址:https://openreview.net/pdf?id=rkYTTf-AZ

2. 作者:Guillaume Lample, Ludovic Denoyer and Marc' Aurelio Ranzato

3. 研究机构:Facebook AI Research, Sorbonne Universit´es, UPMC Univ Paris 06, LIP6 UMR 7606, CNRS

4. 开源代码GitHub地址:https://github.com/facebookresearch/MUSE

5. 使用fastTest在Wikipedia上预训练的30种语言词向量

6. 110个大规模双语词典。

7. 相关解读链接

https://zhuanlan.zhihu.com/p/31404350

https://zhuanlan.zhihu.com/p/30649985

▌Github代码资源


MUSE: 多语无监督和有监督嵌入

MUSE是一个用于多语言词嵌入的Python库,其目标是提供:

l 基于fastText的一种先进的多语言词嵌入;

l 为训练和评价提供大规模的高质量双语词典。

其中包括两种方法,一种是使用双语词典或相同字符串的有监督方法;另一种是不使用任何平行数据的无监督方法(更多细节请参见无平行数据的单词翻译)。

▌依赖


  • Python 2/3 with NumPy/SciPy
  • PyTorch
  • Faiss (recommended) for fast nearest neighbor search (CPU or GPU).

MUSE可以在CPU或GPU上使用,兼容Python 2和3。对于GPU用户,Faiss是可选的,用Faiss-GPU命令可大大加快最邻近搜索的速度,所以强烈建议CPU用户使用Faiss。可以使用“conda install faiss-cpu -c pytorch”或“conda install faiss-gpu -c pytorch”来安装Faiss。

▌获得评价数据集


获得单语言和跨语言的词嵌入评估数据集:

  • Our 110 bilingual dictionaries(我们的110双语词典)
  • 28 monolingual word similarity tasks for 6 languages, and the English word analogy task(28个6种语言的单语相似任务,以及英语单词类比任务;)
  • Cross-lingual word similarity tasks from SemEval2017(SemEval2017中的跨语言单词相似任务)
  • Sentence translation retrieval with Europarl corpora(Europarl 语料库的句子翻译检索)

在数据集运行:

./get_evaluation.sh

注意:默认情况下,Europarl数据库的下载被禁用,可以在下面链接启用它。

https://github.com/facebookresearch/MUSE/blob/master/data/get_evaluation.sh#L99-L100

▌获得单语词嵌入


对于预训练的单语词嵌入,我们强烈建议使用fastText Wikipedia的词嵌入,或者使用fastText从您的语料库中训练自己的词嵌入。

可以用下面方法来使用英语和西班牙语嵌入:

# English fastText Wikipedia embeddingscurl -Lo data/wiki.en.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.en.vec# Spanish fastText Wikipedia embeddingscurl -Lo data/wiki.es.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.es.vec

▌单语词嵌入的对齐


包括两种获取跨语言单词嵌入的方法:

有监督:使用一个训练的双语词典(或相同字符串作为锚点),使用(迭代)Procrustes对齐的方法学习从源到目标空间的映射。

无监督:没有使用任何平行数据或锚点,使用对抗训练和(迭代)Procrustes细化(Procrustes refinement)学习从源到目标空间的映射。

要了解更多细节,请点击链接。

▌有监督方法: 迭代Procrustes(CPU|GPU)


为了学习源空间到目标空间的映射,运行:

python supervised.py --src_lang en --tgt_lang es --src_emb data/wiki.en.vec --tgt_emb data/wiki.es.vec --n_iter 5 --dico_train default

默认情况下,dico_train将指向ground-truth字典(可以根据上面描述进行下载);当设置为“identical_char”时,它将在源语言和目标语言之间使用相同的字符串来构成词汇表。日志和嵌入将被保存在dumped/目录中。

▌无监督方法: 对抗训练和细化(CPU|GPU)


要使用对抗训练和迭代Procrustes细化来学习映射,运行:

python unsupervised.py --src_lang en --tgt_lang es --src_emb data/wiki.en.vec --tgt_emb data/wiki.es.vec

默认情况下,用单词对的平均余弦值作为评价指标,单词所在的词典是用CSLS(Cross-domain similarity local scaling)方法构建的。

▌评价单语言或跨语言嵌入(CPU|GPU)


我们提供一个简单的脚本,用来评价单语言或跨语言词嵌入在几种任务上的效果:

  • 单语言

python evaluate.py --src_lang en --src_emb data/wiki.en.vec --max_vocab 200000

  • 跨语言

python evaluate.py --src_lang en --tgt_lang es --src_emb data/wiki.en-es.en.vec --tgt_emb data/wiki.en-es.es.vec --max_vocab 200000

▌下载


我们提供了多语言嵌入和ground-truth双语词典。

▌多语言词嵌入


我们发布了30个语言的维基百科的基于fastText的有监督词嵌入,并在单向量空间中对齐。

▌Ground-truth双语字典


我们使用内部翻译工具创建了110个大型ground-truth双语字典。字典能很好地处理一词多义问题。我们提供一个分别含有5000和1500个独特源语言的训练和测试分组,以及一个更大包含10万对词。我们的目标是简化跨语言嵌入和多语言NLP的开发和评估。

▌任何方向的欧洲语言


原始链接:https://github.com/facebookresearch/MUSE

▌其他语言到英语


▌英语到其他语言


▌参考文献


如果你使用本文介绍的库,请引用文献[1]。

[1] A. Conneau*, G. Lample*, L. Denoyer, MA. Ranzato, H. Jégou, Word Translation Without Parallel Data

https://arxiv.org/pdf/1710.04087.pdf

@article{conneau2017word, title={Word Translation Without Parallel Data}, author={Conneau, Alexis and Lample, Guillaume and Ranzato, Marc'Aurelio and Denoyer, Ludovic and J{\'e}gou, Herv{\'e}}, journal={arXiv preprint arXiv:1710.04087}, year={2017}}

MUSE是仅用单语数据[2]的无监督机器翻译工作的开山之作。

使用单语数据的无监督机器翻译

[2] G. Lample, L. Denoyer, MA. Ranzato Unsupervised Machine Translation With Monolingual Data Only

https://arxiv.org/abs/1711.00043

@article{lample2017unsupervised, title={Unsupervised Machine Translation Using Monolingual Corpora Only}, author={Lample, Guillaume and Denoyer, Ludovic and Ranzato, Marc'Aurelio}, journal={arXiv preprint arXiv:1711.00043}, year={2017}}

相关链接:

  • fastText:https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md
  • 双语词典(bilingual dictionaries):https://github.com/facebookresearch/MUSE#ground-truth-bilingual-dictionaries
  • SemEval2017:http://alt.qcri.org/semeval2017/task2/
  • Europarl 数据集:http://www.statmt.org/europarl/
  • fastText 维基百科嵌入:https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md
  • Procrustes:https://en.wikipedia.org/wiki/Orthogonal_Procrustes_problem
  • 无并行数据的单词翻译:https://arxiv.org/pdf/1710.04087.pdf
  • https://github.com/facebookresearch/MUSE

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-12-24

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

调参的一些个人拙见

最近的事。。浓缩成下面的一张图。 ? 调参有哪些方法呢? 语料处理。这个是之后一切操作的基础。有人或许认为算法是最重要的,其实不然,语料处理真的真的是最重要的。...

29850
来自专栏CDA数据分析师

史上最全!国外程序员整理的机器学习资源

本文汇编了一些机器学习领域的框架、库以及软件(按编程语言排序)。 C++ 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 Ope...

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

【学习】SPSS探索分析实践操作

SPSS为我们提供了探索分析,所谓探索分析之所以是探索,是因为有时候我们对于变量的分布特点不是很清楚,探索的目的在于帮助我们完成以下的工作:识别...

39080
来自专栏达观数据

达观数据搜索引擎排序实践(上篇)

前言 随着互联网的深入发展,人类已然进入大数据时代。如何在浩瀚的数据海洋里高速有效的获取有价值的信息,正是促使大数据技术具备走向众多企业的潜力。搜索引擎作为获取...

49290
来自专栏程序员宝库

使用 JavaScript 实现机器学习和神经学网络

英文:JeffHeaton 译文: 云+社区/白加黑大人 https://cloud.tencent.com/developer/article/103589...

393100
来自专栏数据科学与人工智能

【算法】TextRank算法为文本生成关键字和摘要

TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是:

11120
来自专栏数据科学与人工智能

【开源工具】国外程序员整理的机器学习资源大全

本列表选编了一些机器学习领域牛B的框架、库以及软件(按编程语言排序)。 C++ 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 ...

41190
来自专栏机器之心

学界 | IBM、哈佛联合提出Seq2Seq-Vis:机器翻译模型的可视化调试工具

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

AI实践精选:艺术家如何应用RNN(循环神经网络)创作AI化的艺术作品

文章导读:这篇文章不是为了全面深入的介绍循环神经网络(recurrent neural networks),而是为那些没有任何机器学习(machine lear...

36670
来自专栏大数据挖掘DT机器学习

文本挖掘:社交网络、社群划分

作者:Matt 自然语言处理实习生 http://blog.csdn.net/sinat_26917383/article/details/5144453...

44560

扫码关注云+社区

领取腾讯云代金券