深度解析塑造未来的技术文章。

机器翻译的低资源语言难题

为什么在1600多种语言之间做机器翻译远比以英语为中心的MT困难,以及新方法如何缩小这一差距。

明亮书架旁摆放着数百本渐入黑暗的书籍

全球大约有7000种语言在使用。Google翻译支持其中约130种,大多数商用机器翻译系统能较好处理的语言则不到30种。如果你说的是约鲁巴语、克丘亚语或高棉语,你对机器翻译的体验大概从“勉强能用”到“离谱到好笑”不等。令人不太舒服的事实是:过去十年NLP的进展大多以英语为先,而高资源语言与低资源语言之间的差距正在拉大,而不是缩小。

Meta近期推动的全语种机器翻译(覆盖1600多种语言)是改变这一局面最有雄心的尝试之一。但其中涉及的技术挑战,暴露出我们构建语言模型时内嵌的一些根本性假设,也说明了为什么单纯堆规模并不能解决问题。

什么样的语言算是“低资源”

在机器翻译研究中,“高资源”语言对意味着你手上有数百万条平行句对,也就是两种语言之间经过专业翻译的文本。英法、英汉、英西这些语言对拥有来自欧盟议会、联合国、新闻机构以及数十年专业翻译积累下来的庞大平行语料。在这些语言对上训练的模型表现相当出色。

“低资源”语言可能只有几千条平行句,甚至完全没有。丰语(约200万人在贝宁使用)与英语几乎没有平行数据。巴马科语(约1400万人在马里使用)的数据稍多,但仍比传统机器翻译系统所需的数据少了好几个数量级。对许多语言来说,现有最大的文本语料可能就是一份圣经译本,外加几篇维基百科文章。

资源差距不只是数据量的问题,还是数据多样性的问题。即使低资源语言确实存在平行文本,它也往往集中在宗教文本或政府文件中。模型学会了翻译正式、重复的文体,但一遇到日常对话、技术术语,或任何偏离其训练领域的内容,就会崩溃。

为什么不能靠堆规模解决

现代机器学习的直觉是:数据更多、模型更大,效果就更好。这种思路在以英语为中心的任务上取得了惊人的成功。基于海量英文token训练的GPT类模型能生成相当流畅的文本。但对于低资源机器翻译,这种方法有三个关键的失效模式。

  • 数据根本不存在。如果从来没有人公开发布过大量丰语与英语的平行文本,你就无法从互联网上爬取到。网络爬取是大多数大规模机器翻译训练集的来源,但它天然偏向网络上内容丰富的语言。
  • 分词器失效。大多数语言模型使用的分词器主要基于英语(或少数高资源语言)训练。如果把阿姆哈拉文或缅甸文输入一个以英语训练的BPE分词器,字符会被切成极长的token序列。一个阿姆哈拉语单词可能要占用8到12个token。这意味着模型大部分上下文窗口都用来编码输入,留给真正理解内容的空间所剩无几。
  • 迁移学习有其局限。mBERT、XLM-R等多语言模型表明,在多种语言上训练确实能帮助低资源语言,模型能捕捉到结构上的相似性。但这种迁移在亲缘语言之间最强。一个法语很好的模型可以把部分知识迁移到海地克里奥尔语上,却几乎无法迁移到普通话或纳瓦霍语。

“枢纽语言”问题

许多号称支持数百种语言的机器翻译系统,实际上都是以英语为中转的。想把斯瓦希里语翻译成泰语?系统会先翻成英语,再翻成泰语,即斯瓦希里语→英语→泰语。这种“枢纽”方法很实用,因为你只需要构建与英语之间的翻译模型,但它会带来误差累积,还有一种隐蔽的文化扁平化问题。

当你以英语为枢纽时,那些无法清晰映射到英语的概念就会丢失。日语的动词形式编码了多个层次的敬语。约鲁巴语的声调变化会改变词义。泰米尔语区分包含听话人的“我们”和不包含听话人的“我们”。这些信息一旦经过英语这个瓶颈,就会丢失,因为英语本身并不编码这些区别,模型也就无从保留。

非英语语言对之间的直接翻译,比如斯瓦希里语直接译成泰语,不绕道英语,能保留更多信息。但为每一对可能的语言都构建直接翻译模型,在组合上是不可能的。面对1600种语言,你需要256万个有向翻译对。即使只直接处理使用最广的100种语言,也仍需9900对。

现代方法有何不同

当前新一代大规模多语言机器翻译模型采取的方法与枢纽策略根本不同。它们不为每个语言对单独构建模型,而是训练一个单一模型,同时学习所有语言的共享表示。关键创新大致可分为几类。

与语言无关的分词

分词器的问题正在通过以均衡的多语言语料而非以英语为主的语料训练分词器来解决。Meta的方法采用字符级回退机制,确保没有任何语言会出现病态般过长的token序列。经过显式语言均衡训练的SentencePiece模型,能产生更加公平的分词结果:一句意思相近的约鲁巴语句子和英语句子,消耗的token数量大致相当。

这一点比听起来更重要。如果你的分词器对语言X的效率低4倍,那么模型处理该语言的有效容量就相当于少了4倍。修复分词是提升低资源语言表现的最高杠杆点。

从网络中挖掘平行数据

其中最巧妙的技术贡献之一是自动化平行数据挖掘。其思路是:训练一个多语言句子编码器,把任意语言的句子映射到一个共享的嵌入空间。然后爬取网络,找出映射到相似向量的不同语言句子,这些句子很可能互为译文。

这项技术起源于LASER等工具,并在后续工作中不断扩展,已经从CCNet、OSCAR等网络爬取数据中提取出数亿条平行句对。它确实很嘈杂,提取出的句对中可能只有20%到30%是真正的平行句,但过滤启发式规则能提高精度,而海量数据又能弥补噪声。对某些语言而言,这种自动挖掘得到的平行数据,已经超过了此前所有人工整理数据集的总和。

回译与自训练

回译是指用你现有的(不完美的)机器翻译模型,把单语文本翻译成目标语言,再用这些合成的平行句对训练更好的模型。这是一种自举方法,效果出人意料地好。

流程大致是:先在现有的平行数据上训练初始模型,用它翻译单语数据,过滤掉糟糕的译文,再在真实数据与合成数据的组合上重新训练,然后不断重复。每一轮迭代都会提升模型,更好的模型又能产生更好的合成数据,进而推动下一轮迭代。对于起步时只有几千条平行句的语言,回译可以把训练数据有效地放大10到50倍。

# Simplified back-translation loop
def back_translate_cycle(model, parallel_data, monolingual_target, rounds=3):
for round in range(rounds):
# Generate synthetic source from monolingual target text
synthetic_pairs = []
for target_sent in monolingual_target:
source_sent = model.translate(target_sent, direction='reverse')
score = model.score_pair(source_sent, target_sent)
if score > QUALITY_THRESHOLD:
synthetic_pairs.append((source_sent, target_sent))
# Combine real and synthetic data
combined = parallel_data + synthetic_pairs
# Retrain model on combined data
model = train_mt_model(combined)
print(f'Round {round+1}: {len(synthetic_pairs)} synthetic pairs added')
print(f'BLEU score: {evaluate(model, test_set)}')
return model

评测比你想象的更难

BLEU分数是机器翻译质量的标准指标,但它对低资源语言存在严重问题。BLEU衡量的是模型输出与参考译文之间的n元组重合度。对英语来说,它效果还算合理,因为英语语序相对固定,形态变化有限。但对于土耳其语、芬兰语这类黏着语来说,一个单词就能表达英语中需要一整个短语才能表达的内容,BLEU会惩罚那些使用不同形态形式的有效译文。

还有参考译文的问题:谁来撰写你用于评测的参考译文?高资源语言有专业译者,而许多低资源语言的所谓“金标准”参考译文,是由传教士、以正式语域工作的政府译员或研究生完成的。这些参考译文在技术上可能正确,但文风不自然,结果是,一个能生成更自然译文的模型,得分反而会更低。

COMET和BLEURT等新指标使用神经模型来估计译文质量,与人类判断的相关性更好。但它们同样主要基于高资源语言数据训练,因此对结构差异很大的语言可能泛化效果不佳。一些团队已开始针对最关键的语言对,请母语者进行人工评测,但这种做法无法扩展到1600种语言。

文化与伦理层面

为1600种语言构建机器翻译,不仅仅是工程挑战。它引发的问题包括:谁从中受益、谁来决定语言如何被呈现,以及当模型编码了错误或带有偏见的翻译时会发生什么。

对许多濒危语言来说,主要使用者是农村地区的年长社区成员。他们并不是使用机器翻译API的人。直接受益者更可能是研究人员、非政府组织和政府机构,这可能是好事(获取信息更便利),也可能带来问题(监控、强制同化),取决于具体情境。在未征求社区意见的情况下为原住民语言开发机器翻译,有着令人不安的历史。

语言标准化问题同样存在。许多低资源语言有显著的方言差异,并没有单一的“标准”形式。当机器翻译模型选定一种方言作为标准(通常是训练数据中占比最高的那种)时,就等于在无形中边缘化了其他方言的使用者。这并非假设,它在资源较丰富的语言中已经发生了。阿拉伯语机器翻译模型通常能较好地处理现代标准阿拉伯语,却难以应对埃及语、黎凡特语或海湾方言,而数亿人实际使用的正是这些方言。

这对开发者意味着什么

如果你在开发面向全球用户的软件,机器翻译的现状会对你的架构和产品决策产生实际影响。

  • 不要假定机器翻译质量是统一的。你的应用可能会用Google翻译或类似API做本地化。法语的质量很好,但阿姆哈拉语可能勉强到几乎不可用。对你声称支持的每一种语言,都要请母语者测试,而不只是前十种语言。
  • 为机器翻译失败做好优雅降级。把原文与译文并排展示,允许用户标记糟糕的译文。不要隐瞒内容经过机器翻译这一事实,用户迟早会发现,如果你假装是人工翻译的质量,他们只会更不信任你。
  • 考虑分词的“隐性成本”。如果你在多语言场景中使用的是语言模型(而不仅仅是机器翻译),要意识到非英语语言会消耗更多token。你的4K上下文窗口能容纳的泰语或阿拉伯语文本,远少于英语。请据此做好预算。
  • 投入建设多语言测试数据。支持低资源语言最难的部分不在模型本身,而在于你能否判断输出是否正确。请与能够验证质量的母语者建立合作关系。自动化指标会误导你。

未来之路

尽管存在种种注意事项,推动全语种机器翻译的进展依然令人兴奋。五年前,为一种只有1万条平行句的语言构建翻译模型,还只是研究领域的小众好奇心。如今,回译、多语言迁移和自动化平行挖掘等技术让这件事变得可行,虽然谈不上完美,但已经可用。

剩下的挑战与其说是技术问题,不如说更多是社会问题。为濒危语言获取训练数据需要与社区建立合作,而不能只靠网络爬取。大规模评测质量需要新的指标和母语者的参与。确保机器翻译工具真正服务于使用这些语言的社区,而不是仅仅勾选一个“覆盖语种”的清单,需要持续的投入与沟通。

但方向是对的。语言不应成为获取信息的障碍。我们如今正尝试为1600种语言构建翻译系统,而不是一遍又一遍地优化同样的30种语言,这本身就代表着优先级的一次有意义的转变。工程难度很大,仅仅是准确识别并解决分词问题就花了数年。但对于那些语言长期被科技行业忽视的数十亿人来说,这项工作的意义远大于英法BLEU分数上又一个零点几个百分点的提升。