发布人:Google Research 研究员 Felix Stahlberg 和 Shankar Kumar
语法错误纠正 (GEC) 指的是试图对语法和其他类型的写作错误进行建模,并给出语法和拼写建议,从而改善文档、电子邮件、文章甚至非正式聊天中的书面输出质量。在过去 15 年里,GEC 的质量有了很大提高,其中很大一部分原因是它 将问题重塑为一项“翻译”任务。例如,将这种方法引入 Google 文档后,用户采纳的语法纠正建议数量显著增加。
但是,GEC 模型面临的最大挑战之一是数据稀少。不同于其他语音识别 (Speech recognition) 和机器翻译 (Machine translation) 等自然语言处理 (NLP) 任务,即便是针对英语这样的高资源语言,GEC 可用的训练数据非常有限。对于这类问题,一个常见的补救措施是使用一系列技术来生成合成数据,其中包括启发式随机词或字符级的损坏,以及基于模型的方法。然而,这些方法往往是简化的,不能反映实际用户错误类型的真实分布。
在 EACL 第 16 届创新使用 NLP 构建教育应用研讨会上发表的《使用有标签损坏模型进行语法错误纠正的合成数据生成》 (Synthetic Data Generation for Grammatical Error Correction with Tagged Corruption Models) 一文中,我们介绍了有标签损坏模型。这种方法受到机器翻译中流行的 回译 数据合成技术启发,能够精确控制合成数据的生成,确保产生与实践中错误分布更加一致的多样化输出。我们使用有标签损坏模型来生成一个新的 数据集(包含 2 亿个句子)。目前这个数据集应发布,可供研究人员提供真实的 GEC 预训练数据。通过将新的数据集整合到训练流水线,我们能够显著改善 GEC 的基线。
有标签损坏模型
将传统的损坏模型应用于 GEC,其背后的理念是,从一个语法正确的句子开始,然后通过添加错误“损坏”它。通过在现有 GEC 数据集中切换源句和目标句,可以轻松地训练出损坏模型,之前的研究 已经表明,这种方法对生成改进的 GEC 数据集非常有效。
提供干净的输入句(绿色)后,传统损坏模型会生成一个不符合语法的句子(红色)
我们提出的有标签损坏模型建立在这一理念的基础之上,它将一个干净的句子作为输入,加上一个错误类型标签,描述所要重现的错误类型。然后,它为输入句生成一个包含指定错误类型的语法错误版本。与传统的损坏模型相比,为不同句子选择不同的错误类型增加了损坏的多样性。
有标签损坏模型会根据错误类型标签,为干净的输入句(绿色)生成损坏(红色)。限定词错误可能会导致丢失限定词 “a”,而名词屈折变化错误可能导致错误的复数形式 “sheeps”
为使用此模型生成数据,我们首先从 C4 语料库 中随机选择了 2 亿个干净的句子,并为每个句子分配了一个错误类型标签,令其相对频率与小型开发集 BEA-dev 的错误类型标签分布相匹配。由于 BEA-dev 是一个精心制作的集合,涵盖各种英语水平,范围很广,我们预计其标签分布能够代表现实中出现的写作错误。然后,我们用一个有标签损坏模型来合成源句。
使用有标签损坏模型生成合成数据。在合成的 GEC 训练语料库中,干净的 C4 句子(绿色)与损坏的句子(红色)配对。遵循开发集(条形图)中错误类型的频率,使用有标签损坏模型生成损坏的句子
结果
在我们的实验中,有标签损坏模型在两个标准开发集(CoNLL-13 和 BEA-dev)上表现优于无标签损坏模型,比后者高出三个 F0.5-点(GEC 研究中的一个 标准指标,结合了精确率和召回率 (Precision and recall),更注重精确率),并在两个广泛使用的学术测试集(CoNLL-14 和 BEA-test)上体现了最先进的水平。
此外,使用有标签损坏模型不仅能在标准的 GEC 测试集上获得收益,还能够让 GEC 系统适应用户的语言水平。这一点会十分有用,原因之一是英语母语写作者的错误标签分布往往与非英语母语写作者的分布有很大不同。例如,英语母语者通常会犯更多标点符号和拼写错误,而限定词错误(例如缺少或多加冠词,如 “a”、“an” 或 “the”)在非英语母语写作者的文本中更为常见。
结论
众所周知,神经序列模型对数据的需求非常大,但用于语法错误纠正的注释训练数据却很少。新的 C4_200M 语料库 是一个包含各种语法错误的合成数据集,用于预训练 GEC 系统时,它体现出了最先进的性能。通过发布该数据集,我们希望为 GEC 研究人员提供宝贵的资源来训练强大的基线系统。
原文:The C4_200M Synthetic Dataset for Grammatical Error Correction
中文:TensorFlow 公众号