作者 | 京枚
编辑 | 贾伟
当前自然语言处理中的大多数方法都是数据驱动的,大多数多语言模型(特别是神经机器翻译系统)都需要并行语料库进行训练。大多数的并行文本都只是适用于几个主要语言(例如英语、汉语),且限制于特定的领域。
为了解决这一问题,在去年七月份,Facebook曾发布了第一个系统处理Wikipedia上所有语言(包括资源贫乏的语言和方言)的数据集WikiMatrix,大约包含了亿级的并行语料,覆盖1620种语言对。
而最近,Facebook基于新的方法和数据源,开发并开源了一个目前为止最大的并行语料数据集 CCMatrix。这个数据集包含 45 亿并行语料(是WikiMatrix的近50倍),覆盖576种语言对。
论文:https://arxiv.org/abs/1911.04944
数据集开源地址:https://github.com/facebookresearch/LASER/tree/master/tasks/CCMatrix
1、语料库构建
首先,从语料来源上讲。目前有几个公共的多语言并行语料库,主要来自一些国际会议(如European Parliament 、the United Nations)的语料,这些都是专业的人工翻译语料,使用语言较为正式,且仅限于政治主题。此外也有几个依靠志愿者翻译而形成的语料库,例如news commentary 、Opensub- Titles 、the TED corpus等。2019年Facebook的Schwenk等人曾利用Wikipedia中的语料进行挖掘,从而开发了WikiMatrix数据集。
以上这些,从数据来源上讲都有局限。为了使并行语料库量大、覆盖主题广泛,Facebook在CCMatrix这项工作中,选择使用了随机抓取web中的数据作为并行语料的来源,他们每个月随机发送url,从而获得包含各种语言的网页快照(TB级)。
十次快照语料中,不同语言的单句数量(其中一次快照只包含英语)
然后通过预处理去除高达70%的重复数据(例如模板文件、导航菜单、cookie等),并使用fastText(语言识别器,可以识别176种语言)来识别文档中的语言,最后使用一个在Wikipedia上训练的模型来过滤掉低质量的内容,只保留较低困惑度的文档。如此处理获得一个包含有327亿个句子的CCNet数据集。
在这项工作中,使用的挖掘方法的底层思想是,首先学习一种多语言的语义嵌入,即在一个嵌入空间中语义上相似的句子会有较近的距离,而与它们所使用的语言无关。这意味着空间中的距离可以作为两个句子是否是相互翻译的指标。
用于大规模训练多语言句嵌入的框架
不过由于余弦距离的绝对阈值在全局上并不一致,所以Schwenk在这里所采用的是Margin criterion:
2、语料库分析
在超过320亿个句子中挖掘平行语料,计算上是非常昂贵的。在当前版本的CCMatrix语料库中,作者限制为38种语言。
CCMatrix:这里给出了单语文本的数量和提取的平行句子的数量(单位:百万),margin阈值为1.06,以及在TED测试中的BLEU分数。(编者注:这是11月份数据,当时数据集规模为35亿并行语料,下同)
CCMatrix:每种语言对的并行语料数量(单位:百万),Margin阈值为1.06。举例来说,希腊语/汉语对的语料数量为470万。
3、定性评估
为了评估这个数据集的质量,Schwenk等人还利用这个数据集进行了神经机器翻译系统的测试,并与几个公共测试集进行了对比。
1、在TED数据集上进行测试
Schwenk等人首先用CCMatrix对神经翻译系统(NMT)进行训练,然后在TED数据集上进行测试,结果如下:
这里只选择了其中的27种语言。以上所有BLEU值的平均值为14.3,英语对的平均BLEU值为26.7,最高的BLEU值为42.9。
当然,在TED上的SOTA远比这些高;但需要注意,这里测试所用的NMT系统没有使用Transformer框架等最新技术。
2、在WMT’19 上评估
上图是在Newstest'18(NT'18)和Newtest'19(NT‘19)测试集上的BLEU分数。可以看到,使用CCMatrix,可以提供非常有竞争力的BLEU分数。
3、在 WAT’19 上评估
利用CCMatrix在亚洲翻译研讨会的俄语/日语翻译任务上进行的测试如上图所示。这里所使用的模型与前面一样,没有Transformer,没有layer dropout。尽管相比SOTA略差,但仍然在同一层次。
4、总结
CCMatrix使NMT研究社区能够利用比以前仅几十种语言对更大的双语料数据集。这可以加速创建更有效的NMT模型,这些模型可以使用更多的语言,尤其是语料库相对有限的资源较少的模型。
由于规模庞大且使用了大量公共文本,或许CCMatrix将成为NMT领域中用于构建和评估系统的最常用资源之一。
当然,Facebook在构建CCMatrix过程中所提出的数据集构建方法更值得推广,或许能够帮助更多人来创建大规模数据集。
参考资料:
facebook开源官宣:https://ai.facebook.com/blog/ccmatrix-a-billion-scale-bitext-data-set-for-training-translation-models/
CCMatrix论文:https://arxiv.org/abs/1911.04944
CCMatrix开源链接:https://github.com/facebookresearch/LASER/tree/master/tasks/CCMatrix