语法检查-微软实验结果表明,智能语法纠错模型已达到人的水平
编辑:pitaya02 日期:2020-09-08
由于seq2seq模型在语法纠错方面存在缺陷,微软亚洲研究院自然语言计算小组最近提出了一种改进seq2seq模型语法纠错性能的流畅性学习和推理机制。试验结果表明,改进后的模型获得了目前的最优性能,在两种基准条件下均达到了人的水平。
序列到序列(seq2seq)模型(Cho et al.,2014; Sutskever et al.,2014)近年来越来越受人们关注(Yuan& Briscoe,2016; Xie et al.,2016; Ji et al.,2017; Schmaltz et al.,2017; Sakaguchi et al.,2017;2017; Chollampatt& Ng,2018)。然而,用于 GEC的大多数seq2seq模型有两个缺点。首先,seq2seq模型在训练期间使用了有限的纠错句对,如图1 (a)所示。由于受到训练数据的限制,具有数百万参数的模型也不能很好地推广。所以,如果句子与训练实例稍有不同,这种模型通常不能对句子进行完美修改,如图1 (b)所示。其次,seq2seq模型通常不能通过单轮seq2seq推理对存在大量语法错误的句子进行完美的修改,如图1 (b)和图1 (c)所示,因为某些句子的错误可能会引起奇怪的语境,从而误导模型对其他错误的修改。
图1:(a)纠错句对;(b)如果句子与训练数据稍有差异,那么模型就不能完美地修改句子;(c)seq2seq单轮推理不能完美地修改句子,但是多轮推理可以。
针对上述局限性,微软的研究人员提出了一种新的提高流畅度的学习和推理机制,见图2。
为了提高句子的流畅度,seq2seq不仅使用原始纠错句对进行训练,而且生成流畅度较差的句子(例如从n-best输出的句子),将其与训练数据中的正确句子进行配对,以构造新的纠错句对,前提是该句子的流畅度低于正确句子,如图2 (a)所示。研究人员把生成的纠错句对称为流畅度提升句对(fluency boost sentencepair),因为目标句在流畅度方面总是高于源句。在培训期间产生的流畅性提升句对,将作为后续培训的附加训练实例,使纠错模型能够在培训期间看到有更多语法错误的句子,从而提高泛化能力。
在模型推理中,流畅度提高推理机制允许模型以多轮推理的方式逐步修改句子,只要每次建议编辑都能提高语句的流畅度,如图2 (b)所示。对存在多个语法错误的语句,将优先修复某些错误。修正后的部分可以使上下文更清楚,这对于模型随后修改其他错误很有帮助。另外,由于该任务的特殊性,我们可以对预测结果进行重复编辑。在此基础上,微软进一步提出了一种使用两个seq2seq模型的双向纠错方法,解码顺序为从左到右,seq2seq模型从右到左。另外,由于从左向右和从右向左的解码器使用不同的上下文信息对序列进行解码,因此它们对于特定的错误类型具有独特的优势。来回纠错能充分发挥各自的优势,实现互补性,显著提高召回率。
图2:流畅度增强学习及推理机制:(a)给出一个训练实例(即纠错句对),流畅度增强学习机制通过seq2seq的n-best输出建立多个流畅度增强句对,在训练过程中进行流畅度增强。在后续的 epoch训练中,流畅度提高句对将被用作训练实例,以帮助扩展训练集,帮助模型学习;(b)流畅度提高推理机制允许纠错模型在始终能提高流畅度的前提下,通过多轮seq2seq推理逐步修改句子。
将流畅度提升学习和推理与卷积seq2seq模型结合起来,微软亚洲研究院获得了目前最好的结果,它是第一个在两个基准上都达到人类水平的 GEC系统。
论文:REACHING HUMAN-LEVEL PERFORMANCE IN AUTOMATIC GRAMMATICAL ERROR CORRECTION: AN EMPIRICAL STUDY
报告地址:https://arxiv.org/pdf/1807.01270.pdf
文摘:神经序列-序列(seq2seq)方法在语法纠错(GEC)中得到了广泛应用。在此基础上,本文提出了一种基于seq2seq的提升学习和推理机制。在训练过程中,流畅度提高学习可以生成多个纠错句对,纠错模型学习可以利用更多实例来提高句子的流畅度,而流畅度提高推理则允许模型通过多个推理步骤对句子进行逐步修改。将流畅度提高学习和卷积seq2seq模型相结合,我们的方法获得了目前最好的结果:分别在CoNLL-2014标注数据集上得到75.02的 F0.5分和在 JFLEG测试集上得到62.42的 GLEU分,这是第一个在两个基准数据集上都能达到人类水平的 GEC系统(CoNLL72.58, JFLEG62.37)。
二背景:神经语法纠正
一个典型的神经 GEC方法是使用一个带注意力的编码-解码框架来编辑原始句子到语法正确的句子中,如图1 (a)所示。说出原句
这里 S*是纠错语句的对集合。
通过束搜索对模型推理的句子选择输出
三通畅促进学习
传统的 GEC的seq2seq模型只通过初始纠错句对参数进行学习。但是,这种纠错句对的可得性还存在不足。结果表明,许多神经 GEC模型的推广效果并不理想。
幸好神经 GEC与神经机器翻译(NMT)不一样。神经性 GEC的目标是提高句子的流畅度而不改变原始语义;因此,任何满足这一条件(提高流畅度条件)的句子对都可以作为训练实例。
本研究中,研究者定义 f (x)为句子 x的流畅度分数。
在这个例子中, P (x_i|x_< i)是在给定上下文x_< i下x_i的概率,由语言模型计算得到,| x|是句子 x的长度。H (x)是句子 x的交熵,在[0,+∞]范围内。所以 f (x)的范围是(0,1]。
“流畅性提高学习”的核心思想是生成流畅性提高的句对,它满足图2 (a)所示的在训练过程中提高流畅性的条件,因此,这些句对可以进一步帮助模型学习。
本节中,研究人员提出了三种提高流畅度的策略:反向提升(back-boost)、自提升(self-boost)和双向提升(dual-boost),这些策略通过不同的方式产生提高句子流畅度的句子对,如图3所示。
四流畅度推论
4.1多轮修正
就像在第一部分所讨论的,有些语句有多个语法错误,通常无法通过一般的Seq2Seq推理(单轮推理)得到完美的修正。幸好,神经 GEC不同于 NMT,它的源语和目的语一样。这个特性使得我们可以通过多轮模型来推理多条语句的编辑,从而产生流畅性提高的推理过程。正如图2 (b)所示,流畅度提高推断允许通过多轮Seq2Seq逐步编辑语句,只要每次建议编辑都能提高语句的流畅度。具体地说,纠错Seq2Seq模型首先将原始语句 x^ r作为输入,然后假定 x^o1为输出。流畅性提升推断将使用 x^o1作为输入来产生下一个输出 x^o2,而不是直接使用 x^o1作为最终预测。这个过程不会终止,除非 x^ ot不再能够提高 x^ot-1的流畅性。
4.2来回修正
在多次纠错思想的基础上,研究者提出了一种进阶流畅性提高的推论方法:双向纠错。与4.1中介绍的seq2seq模型不同,该方法并没有采用渐进性的方式修改句子,而是采用从右向左以及从左向右的seq2seq模型,如图4所示。
图4:来回纠正错误:由右向左的seq2seq模型在纠正某些类型的错误(例如,冠词错误)时比较容易,而由左向右的seq2seq模型在纠正主谓一致性时比较容易。双向纠错可以使两者相互补充,纠正比单一模型更多的语法错误。
第五实验
表格2显示了 GEC系统对 CoNLL和 JFLEG数据集的处理结果。因为使用了大量的训练数据,所以甚至基本的卷积seq2seq模型都比大多数以前的 GEC系统要好。流畅度增强学习进一步提高了卷积seq2seq模型的性能。
火龙果智能写作是全球第一款中英双语语法检查校对产品,运用火龙果智能写作技术进行错别字文本校对,除错别字校对以外,还可以对语法、标点等进行校对。
火龙果智能写作官网https://www.mypitaya.com
积极拥抱变化,才能更好的应对这个时代