徐明 编译
论文地址:https://www.isca-speech.org/archive/SLaTE_2017/pdfs/SLaTE_2017_paper_5.pdf
相关开源项目:https://github.com/shibing624/pycorrector
本文提出了一个基于循环神经网络(RNN)用于语法错误校正的深层上下文模型。对于特定的错误类型,我们将错误纠正任务视为可以从大量的本地文本数据中学习语法表示的分类任务。传统的分类方法需要复杂的语言知识做特征工程,而且做出的特征工程可能无法涵盖所有的上下文特征。我们的模型不需要人工特征工程,在CoNLL-2014年的开放语法纠错比赛中实验表明:我们的模型达到第一名的成绩,显著优于当前最先进的文本分类模型及基于机器翻译的语法纠错模型。
关键词:语法纠错,深层上下文模型,循环神经网络
自动语法错误纠正(GEC)是一个为数百万学习英语的人提供的,必要的,有用的工具。近年来,在这个领域已做了大量工作,包括几个开放比赛:HOO和CoNLL。在比赛中使用的方法一般包括以下三种:预定义规则,分类和机器翻译(MT)。基于规则的方法不能覆盖所有语法错误模式,通常组合其他方法一起使用。在分类方法中,把文本语法纠错(GEC)视为多分类问题,其中会针对给定的错误类型指定一个混淆集合,并且使用的特征通常包括文本的表面形式和语法信息(例如,使用词性标签和依存句法)。使用分类方法,错误类型和提取特征方法需要事先定义清楚。举个例子,最大熵分类器做文本纠错,通常特征是单词和词性的组合。其他分类器如平均感知器和朴素贝叶斯算法也适用于GEC任务。在这些方法中,特征必须是手动设计,很难覆盖所有的情况,因此,GEC任务由于语言的复杂性,手动设计的特征可能不足以满足该任务要求。
另一种主流方法是基于统计机翻译(MT),旨在将不正确的文本翻译成正确的文本。机器翻译方法的一个优点它可以充分利用大规模语料资源(全网数据的语言模型)和正确文本。然而,基于短语的MT方法存在以下局限性:由于缺少词向量表示、线性映射和缺少全局的上下文表示。最近,神经机器翻译(NMT)方法已被应用于GEC任务的encoder-decoder框架中。NMT方法可以应对冗余与未登录词问题。其他神经网络模型,像双向LSTM也适用于语法错误任务。而MT方法更适用于多错误类型,并且擅长处理复杂的错误类型,如在多个错误交互的地方。
分类方法相比MT方法而言至少有两个优点:第一,它依赖的标注数据少,标注数据成本高昂,而MT方法需要大量的标注数据才能拟合。
第二,分类方法易于融合其他更高级的上下文信息。许多语法纠错方法可以从词性信息,句法树信息获益,而且实验表明分类方法融合这些信息对错误纠正效果提升明显。
在本文中,我们提出了一种新的分类方法,它是基于深度上下文的文本语法纠错模型。我们使用文本深层特征代替浅层特征(词性、句法树等)。具体是,我们使用双向门控递归单元(Gated Recurrent Units, GRU)来表示文本上下文特征。与传统用于GEC的分类方法相比,我们的方法不需要为特定错误类型的做特征工程,深层上下文表示可以从文本语料库中以端到端的方式自动学会这些特征信息。
需要注意,使用标记数据来优化特定任务的上下文表示,已应用于各种NLP任务,包括词义消歧,共指解析与释义检测。通用的词向量,例如word2vec和Glove,是从大规模语料库中学习、捕捉每个单词的语义及句法信息。以上方法,使用神经网络都可以对文本上下文进行有效的建模。确实,上下文语境对词语的选择是必不可少的信息,可以帮助我们纠正文本的语法错误。另一方面,不同于其他文本任务对大量的标注数据做特征提取后,只使用小部分有效特征。我们的方法可以充分利用丰富的原始文本语料与上下文表示,使用分类模型联合来纠正语法错误。实验CONLL-2014年数据集的结果表明,我们的模型显著优于目前最先进的分类模型和机器翻译模型。
对于某一类错误,模型学习目标词上下文的向量表示,然后通过上下文的向量预测该目标词。如果预测结果不同于原始目标词,原词被标记为错误,预测结果用作校正。我们的深层上下文模型使用双向GRU,它是基于context2vec的体系结构。句子的上下文表示可以是从句子的开头到目标词,也可以从句子结尾到目标字,也可以是固定窗口大小的上下文。
图1说明了深度上下文向量表示的结构。我们使用两个GRU网络。对于目标单词"go",我们把上下文从左到右的顺序输入到GRU网络(“I”),另一个是把上下文从右到左输入(“to school everyday”)。给定上下文W1:n,目标词Wi的上下文向量定义如下:
其中lGRU是GRU从左到右至目标词的上下文,rGRU是从右到左的。l,r 分别表示 从左到右的词向量和从右到左词向量。之后,我们把向量合并结果输送给多层感知器(MLP)来捕捉两个向量的依存关系,在MLP的第二层输出中,使用softmax层来预测目标词或目标词的状态(如:名词是单数还是复数):
其中MLP代表多层感知器,ReLU是激活函数,ReLU(x) = max(0,x),L(x)=Wx+b是一个全连接的线性运算。模型的最终输出是:
其中y是预测词或目标词的预测状态。如果预测结果不同于原始单词或其状态,则检测到错误,预测结果用作校正。如表1所示,对于不同的错误类型,y的定义方式不同。在冠词纠错模型中,如果y等于0,1或2,则意味着冠词应该选择介词“a/an”、“the”或“非冠词”;在介词纠错模型中,y表示每个介词(in , from , to,at …)的索引位置;在动词纠错模型中,y表示动词的形式(0为动词原形,1为动名词或现在分词,2为动词过去式);在主谓一致(人称)纠错模型中,0表示非第三人称单数,1表示第三人称单数;在名词纠错模型中,0表示单数名词,1表示复数名词。
我们把分类的标签表示为y,而训练的目标函数是:
其中n是训练样本的数量。
注意,之前的深度学习方法都把所有错误类型统一考虑,并试图将不正确的文本翻译成正确的文本,而我们的方法是把每一种特定的语法错误类型学出一个模型去处理。
我们使用CONLL-2014测试集评估深度上下文模型,测试集包含1312个句子。我们使用F0.5作为纠错指标。F0.5是准确率(P)和召回率(R)的组合指标,并且分配两倍权重到准确率上,因为在纠错任务中准确率要求往往比召回率更重要。
准确率、召回率和F0.5定义如下:
其中g是两个人类标注员的黄金金标准结果和e是对应的系统预测结果。由于有许多其他错误类型和动词使用错误之间的有重叠出现的现象,所以计算g时会考虑所有错误类型。
我们从wiki中提取训练样本。在实验中,我们使用Glove词向量来初始化,在训练过程中更新词向量,词向量维度为300。所有的输入文本转小写,而且把所有不在词表中的词映射为unk表示,词表大小是40000。
我们为语法纠错任务建立了五种常见错误类型的分类模型。错误类型是:冠词,介词,动词形式,名词数,主谓一致,对于每种错误类型,分类器都是独立训练。
斯坦福大学的corenlp工具常被用来分词,定位句子中需要检查的目标词。如果预测的结果不同于原始词,并且两者的差值大于阈值,则该词大概率认为是错词。例如,在主谓一致纠错任务中,我们用分词工具提取非第三人称单数单词和第三人称单数单词的映射关系。在测试中,分词工具可以定位动词,指示这些动词应该用我们的模型来检查。如果检查到错误,我们可以使用预测结果来纠正句子。
英语学习者经常在名词短语前使用a,an,the时,混淆不清。冠词分为不定冠词"a,an"、定冠词"the"和零冠词三种,零冠词指的是不用冠词的情况。冠词可以出现在名词短语前面,我们把名词短语作为名词和形容词的组合。
与冠词纠错任务类似,主谓一致纠错任务可以转换成两类:动词是第三人称单数与不是。我们检查每一个动词是否是第三人称单数。
动词形式纠错任务分为三类:动词原形、动名词或现在分词和过去分词。
介词纠错任务,我们选择了11个最常使用的介词(“about”, “at”, “by”, “for”, “from”, “in”, “of”, “on”, “to”, “until”, “with”, “against”)作为分类标签。
名词数纠错任务,也可以看作是两类:名词是否应该是复数。我们检查所有的名词。
纠正不同类型的语法错误可能需要不同的文本长度。例如,在主谓一致任务中,动词的状态可能受远离动词的词语影响。举个例子,“frequently, the intention of the carriers does not want to tell their families is to continue their own …” ,词"is"远离"the intention"。相反地,介词的确定一般只需要附近的词语,举个例子,"to prevent the bigger problem from happen …"中,"prevent from"是搭配词。因此,我们使用不同的窗口大小处理不同语法错误。对于主谓一致和动词形式纠错任务,我们用整个句子作为窗口,因为这两种错误类型通常需要依赖远离目标词的上下文。对于冠词、介词和名词数纠错任务,窗口大小如表4所示,这是在CONLL-2013测试集上不同窗口的表现结果。结论:在冠词错误类型,窗口大小设置为5;介词错误类型,窗户大小为3;名词数错误类型,窗口大小为15。
词根是词的基本形式。例如,单词“walk”, “walks”, “walked”, “walking”的词根都是一样的,都是“walk”。在名词数模型中,除围绕目标名词的上下文词,我们还需要引入目标词的词根信息,因为目标词的单复数与该词自身密切相关。例如,目标词“apples”在句子“many apples are …”,如果左边出现的是“many apple”。
表5显示了加入了词根表示的名词数纠错模型效果。可以取得比没有加入词根表示更好的效果,因此我们选择把名词词根(如:-ness, happyness,selfishness …)加入名词数模型。
如表2所示,深度上下文模型修正了一些语法错误的例子。语法错误被证实可以被上下文表示发现。第一句和第二句显示动词形式错误可以纠正。介词错误在第三句和第四句中被纠正。主谓一致错误在第五句和第六句中被纠正。即使第七句和第八句话的上下文相似,模型仍然能成功纠正名词数错误。冠词错误在第九句和第十句中被纠正。
表3显示了深度上下文模型与CoNLL-2014比赛中的最佳分类模型的效果对比。与CoNLL-2014(CUUI)最佳分类模型相比,深度上下文模型在冠词、介词、名词数、主谓一致错误上均有更好的表现。实际上,表3所示的准确率,可能会更大一些,这是由于一些错误会重叠出现,这时准确率被低估。例如,在表2的第11句中,“encourage”一词被纠正成“encourages”,但对于这句话“government”是被标注员标注为“governments”,因此,这个正确的校正被计数为错误校正。换言之,黄金标注集的修正方法单一是准确率被低估的原因之一。
最后,我们使用一些规则修正了一些手工错误(标点符号用错,英文拼写错误和首字母大写错误)。我们在CoNLL-2014纠错任务测试集上评估了我们的模型与一些最优模型的效果,结果显示在表6。CoNLL-2014中的Top-1模型是一个混合模型,使用规则和机器翻译方法相结合,而Top-2模型是基于分类器的系统(表3中的CUUI)。实验结果表明我们的模型显著地优于这两个模型。我们也与最近流行的encoder-decoder加attention机制的模型比较,我们的模型尽管只解决了五种常见错误类型,依然表现出更好效果。结果。在参考文献[10]中,作者探讨了在GEC任务中,分类方法和MT方法两者的主要优点,并表明分类方法实际上在许多方面做得更好。我们也与参考文献[10]中的最优分类模型比较,结果显示我们的模型也显著地优于该文献的分类模型。
我们提出了一种新的上下文表示神经网络模型,然后用它来纠正语法错误。它在文本语法纠错领域,优于目前最先进的分类模型和机器翻译模型。与传统的分类模型相比,我们的模型不需要复杂的特征工程,这是由于分类模型以端到端的方式联合学习了上下文特征表示,该模型能有效利用大量原始文本数据。如第3.3节所示,我们发现不同的错误类型可能需要不同数量的上下文信息。
在未来,我们计划引入注意力机制,这样模型能聚焦在那些影响语法使用的上下文词上。也可以类似参考文献[10]中所示,使用流水线结构应用于分类器的输出可以大大提高GEC效果。我们相信结合深度上下文模型及机器翻译模型将会在文本语法纠错上表现更上一层楼。
[1] D. Dahlmeier and H. T. Ng, “Grammatical error correction with alternating structure optimization,” in Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies-Volume 1. Association for Computational Linguistics, 2011, pp. 915–923.
[2] ——, “A beam-search decoder for grammatical error correction,” in Proceedings of the 2012 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning. Association for Computational Linguistics, 2012, pp. 568–578.
[3] H. T. Ng, S. M. Wu, T. Briscoe, and C. Hadiwinoto, “The conll2013 shared task on grammatical error correction.” in CoNLL Shared Task, 2013, pp. 1–12.
[4] H. T. Ng, S. M. Wu, T. Briscoe, C. Hadiwinoto, R. H. Susanto, and C. Bryant, “The conll-2014 shared task on grammatical error correction.” in CoNLL Shared Task, 2014, pp. 1–14.
[5] N.-R. Han, M. Chodorow, and C. Leacock, “Detecting errors in english article usage by non-native speakers,” Natural Language Engineering, vol. 12, no. 02, pp. 115–129, 2006.
[6] A. Rozovskaya, K.-W. Chang, M. Sammons, D. Roth, and N. Habash, “The illinois-columbia system in the conll-2014
shared task.” in CoNLL Shared Task, 2014, pp. 34–42.
[7] M. J.-D. R. Grundkiewicz, “The amu system in the conll-2014 shared task: Grammatical error correction by data-intensive and feature-rich statistical machine translation,” CoNLL-2014, p. 25, 2014.
[8] Z. Xie, A. Avati, N. Arivazhagan, D. Jurafsky, and A. Y. Ng, “Neural language correction with character-based attention,”
arXiv preprint arXiv:1603.09727, 2016.
[9] M. Rei and H. Yannakoudakis, “Compositional sequence labeling models for error detection in learner writing,” arXiv preprint arXiv:1607.06153, 2016.
[10] A. Rozovskaya and D. Roth, “Grammatical error correction: Machine translation and classifiers,” Urbana, vol. 51, p. 61820, 2016.
[11] A. Trask, P. Michalak, and J. Liu, “sense2vec-a fast and accurate method for word sense disambiguation in neural word embeddings,” arXiv preprint arXiv:1511.06388, 2015.