Facebook开源MUSE:多语言无监督和监督词向量库

2017 年 12 月 23 日 论智

MUSE是一个多语言词向量Python库,它可提供:

  • 基于fastText的最先进的多语言词向量;

  • 可用于训练和评估的大规模高质量双语词典

我们包括了两种方法,其一是运用双语词典或相同字符串的监督向量,其二是不使用任何平行数据的无监督向量。

环境

  • 搭载NumPy或SciPy的Python2/3

  • PyTorch

  • Faiss,快速实现最邻近搜索(推荐使用)

MUSE可在CPU或GPU上运行,支持Python2或3。如果在GPU上运行,Faiss不是必选项,虽然使用Faiss可以大大加快最邻近搜索速度。不过我们强烈建议CPU用户使用。Faiss可以使用“conda install faiss-cpu -c pytorch”或“conda install faiss-gpu -c pytorch”安装。

评估数据集

为了获取单一语种和多语言词向量评估数据集,需要:

  • Facebook的110种双语词典,下载地址:https://github.com/facebookresearch/MUSE#ground-truth-bilingual-dictionaries;

  • 28个6种语言的词语相似度任务,以及英语单词的比喻任务;

  • SemEval2017跨语言词语相似度任务;

  • 从Europarl语料库获得的句子译文。

只需在'data/'下运行:

  
    
    
    
  1. ./get_evaluation.sh

注意:此步骤需要bash 4。默认禁用了Europarl下载(因为速度很慢),可参考这里启用:https://github.com/facebookresearch/MUSE/blob/master/data/get_evaluation.sh#L99-L100。

获取单一语种词向量

对于预先训练的单语言词向量,我们强烈推荐使用fastText Wikipedia向量,或者用fastText从你自己的语料库中训练自己的词向量。

你可以用以下代码下载英语(en)和西班牙语(es)向量:

  
    
    
    
  1. # English fastText Wikipedia embeddings

  2. curl -Lo data/wiki.en.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.en.vec

  3. # Spanish fastText Wikipedia embeddings

  4. curl -Lo data/wiki.es.vec https://s3-us-west-1.amazonaws.com/fasttext-vectors/wiki.es.vec


连接单一语种词向量

为了得到跨语种词向量,该项目包含两种方法:

  • 监督式:使用一个可训练的双语词典(或者相同的字符串作为定位点),使用Procrustes alignment进行迭代,学习从源语言到目标语言的映射。

  • 无监督:没有任何平行数据或定位点,使用对抗训练和(迭代)Procrustes强化,学习从源语言到目标语言的映射。

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

学习从源语言到目标语言的映射,可运行以下代码:

  
    
    
    
  1. 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

默认情况下,dicotrain会指向我们标记的词典(可在上方下载);当设置成为“identicalchar”,它将在源语言和目标语言之间使用相同的字符串来形成词汇表。日志和向量将被保存在dumped/目录中。

无监督方法:对抗训练和改进(CPU|GPU)

为了使用对抗训练和迭代Procrustes学习映射,可运行以下代码:

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

默认情况下,validation值是利用CSLS构建的合成词典中单词对的平均余弦值。

评估单语言或跨语言词向量(CPU|GPU)

以下简单的脚本可以用来评估单语种或跨语种词向量在多重任务上的表现质量。

单语种:

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

多语种:

  
    
    
    
  1. 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

GitHub地址:https://github.com/facebookresearch/MUSE

登录查看更多
19

相关内容

【CVPR2020-Facebook AI】前置不变表示的自监督学习
专知会员服务
46+阅读 · 2020年4月19日
【ACL2020-Facebook AI】大规模无监督跨语言表示学习
专知会员服务
33+阅读 · 2020年4月5日
【Google】无监督机器翻译,Unsupervised Machine Translation
专知会员服务
35+阅读 · 2020年3月3日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
跨语言版BERT:Facebook提出跨语言预训练模型XLM
机器之心
4+阅读 · 2019年2月6日
Facebook开源增强版LASER库,包含93种语言工具包
机器之心
5+阅读 · 2019年1月23日
推荐|Python库中Top10 的AI项目(星级3k+),赶紧收藏!
全球人工智能
10+阅读 · 2018年1月16日
没有数据也能翻译?一文读懂「无监督」机器翻译
人工智能学家
3+阅读 · 2018年1月7日
结合弱监督信息的凸聚类
计算机研究与发展
6+阅读 · 2017年8月30日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
6+阅读 · 2018年2月26日
Arxiv
7+阅读 · 2018年1月30日
VIP会员
相关资讯
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
跨语言版BERT:Facebook提出跨语言预训练模型XLM
机器之心
4+阅读 · 2019年2月6日
Facebook开源增强版LASER库,包含93种语言工具包
机器之心
5+阅读 · 2019年1月23日
推荐|Python库中Top10 的AI项目(星级3k+),赶紧收藏!
全球人工智能
10+阅读 · 2018年1月16日
没有数据也能翻译?一文读懂「无监督」机器翻译
人工智能学家
3+阅读 · 2018年1月7日
结合弱监督信息的凸聚类
计算机研究与发展
6+阅读 · 2017年8月30日
相关论文
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
6+阅读 · 2018年2月26日
Arxiv
7+阅读 · 2018年1月30日
Top
微信扫码咨询专知VIP会员