基于语句对训练和自注意力的语法错误纠正

摘要

自动语法错误检测系统有助于语言学习者识别自己写的文本是否有错误。与基于规则的方法相比,不同的模型在处理这一问题上受到了更多的关注,研究者们提出了多种方法,取得了更好的效果。众所周知,人工生成的不正确文本可以进一步提高语法错误纠正的性能,并且成对训练对于许多推荐算法是必要的。在本文中,我们将这两种技术结合起来,利用BERT的预训练单词嵌入来解决错误检测任务。这是第一个采用成对样本训练来检测语法错误的工作,因为以前的所有工作都是有计划地用成批样本训练模型。成对训练对于模型捕捉样本对中的差异是有用的,这对模型区分错误是直观有用的。大量实验证明了成对训练机制的有效性。实验结果表明,该方法能够在四种不同的标准基准上达到最佳性能。借助数据扩充和过滤,可以进一步提高F0.5的值。四个测试集的总体改进在2.5%左右,这证明了对来自不同领域的数据集进行成对训练的一般性。

Introduction

语法错误检测是语法错误纠正(GEC)社区的关键组成部分之一。曾几何时,这是GEC的第一步,因为许多GEC的方法是基于手工制作的规则。对于不同的语法错误类型,这些规则是不同的,检测给定文本中的错误是纠正系统的基础。仍然有一些基于神经网络的GEC方法是针对特定的误差类型而设计的[1],对于那些类型的模型来说,建立一个有用的GEC系统是必不可少的。对于语言学习者来说,一个有效的自动通用测试系统有助于他们发现自己写的文本是否有错误。特别是对于第二语言学习者来说,可靠的工具将是他们掌握外语的有力辅助。

主流的错误检测方法都是基于深层神经网络的,包括递归神经网络和Transformer [2],在监督学习中,学习和多任务学习设置,像传统文本分类中使用的经典方法[3]。研究人员像处理序列标签任务一样处理这个问题,预测给定文本中每个单词的正确或错误标签。预训练模型因其在图像分类任务中的能力而受到越来越多的关注,许多预训练的词嵌入被用于各种自然语言处理任务中。最具代表性的模型是BERT [5],它在11个不同的任务上取得了优异的性能。因此,在许多自然语言处理问题中,像BERT这样的预训练词嵌入和具有大规模未标记语料库的半监督词嵌入被广泛使用。文本错误检测的现有技术模型是训练好的序列标签器,结合了预先训练好的BERT和Transformer以及大规模的未标记数据,如[6]和[7]中的工作。

像通常用于纠错一样,使用合成错误文本来扩充训练数据可以进一步提高某些GEC系统的性能。已经对错误检测进行了一些尝试,在大量人工生成数据的帮助下,[8]和[9]中提出的方法获得了更好的结果。

在本文中,我们进一步利用预先训练的单词嵌入和大规模合成错误文本,通过成对训练机制来完成语法错误检测任务。与[6]和[7]中的工作不同,[6]充分研究了不同预训练方法进行的上下文嵌入的有效性,包括BERT、ELMo [10]和flair嵌入[11]。[7]研究如何充分利用BERT,不仅利用来自最终层的信息,还利用来自中间层的信息。我们的模型只是使用BERT作为权重初始化,并使用扩充的语料库进行微调。除了[8]和[9]之外,我们不仅使用所有的错误文本,还使用相应的正确文本进行成对训练。在这项工作中,大量的虚假数据是通过两种方式产生的,第一种是像反向翻译那样用序对序的框架把正确的文本翻译成错误的文本,另一种是基于规则的方法。据我们所知,这是第一次尝试通过用正确和错误对明确地训练模型来鼓励模型区分错误标记和正确标记。