1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > lstm 文本纠错_文本语法错误纠正(GEC)

lstm 文本纠错_文本语法错误纠正(GEC)

时间:2022-08-12 03:17:20

相关推荐

lstm 文本纠错_文本语法错误纠正(GEC)

内容速览文本语法错误纠正(GEC)背景介绍

《A Neural Machine Translation Approach to Chinese Grammatical Error Correction》论文阅读

《Chinese Grammatical Error Correction Using Statistical and Neural Models》论文阅读

《A Sequence to Sequence Learning for Chinese Grammatical Error Correction》论文阅读

《Controlling Grammatical Error Correction Using Word Edit Rate》论文阅读

《Cross-Sentence Grammatical Error Correction》论文阅读

1、文本语法错误纠正(GEC)背景介绍

Grammatical Error Correction (GEC) is the task of correcting different kinds of errors in text such as spelling, punctuation, grammatical, and word choice errors.

GEC is typically formulated as a sentence correction task. A GEC system takes a potentially erroneous sentence as input and is expected to transform it to its corrected version. See the example given below:

GEC用途包括协助外国人学习中文、写作助手、文本校对工具

中文和英文GEC的区别在于:没有单/数之分

动词没有时态之说

在某些情况下不能省略:“野心不仅是罪恶的根源,同时也是毁灭的根源”VS“Ambition is the mother of destruction as well as of evil”

中文和英文语法错误类型对比

目前,英文GEC的排名榜单以CoNLL- Shared Task作为测试集,目前SOTA方案如下:

中文GEC相对于英文GEC,甚少人进行研究,相关的资源和数据也稀少,NLPCC为最近关于中文GEC的竞赛,其发布的数据来自于学习中文的外国人作文,评价标准为F0.5。训练语料中,每个句子后面跟着0~n(n不定)个纠正过后的句子,若句子后面没有纠正的句子,则说明该句子是正确的。后面的n个句子都是正确结果。

在该比赛中,前3名的方案效果相差不大,接下来首先分享的3篇论文为该比赛的前3名方案论文,主要针对中文GEC。剩下的2篇论文为的论文,主要针对英文GEC。

2、《A Neural Machine Translation Approach to Chinese Grammatical Error Correction》论文阅读

该论文的insight为:将中文语法错误纠正任务分成了3个阶段,每个阶段训练各自模型

对于拼写错误(拼音错误和形近错误),在预处理阶段利用已有的音进形近词表,基于5-gram统计模型进行解决

该论文方案构建数据集的方法如下:如果没有纠正的句子,则纠正句子和原始句子一样;如果有多个纠正句子,则每一个纠正句子和原始句子分别构成纠正句子对。

此外,方案用5-gram模型对raw数据进行筛选,即如果tgt的ppl大于src,则剔除该数据,处理前有1.22million,处理后有0.76million

方案分为3个stage:preprocessing stage:首先remove输入句子中的“surface errors”(比如拼写错误),对于表面错误,本方案使用大量文本训练出来的5-gram字级模型作为辅助模型,并且使用 SIGHAN CSC Datasets 中提供字音、字形相似表。在有了5-gram模型和字表之后,他们使用的方式颇为暴力:对句子中的每个字,将其在字表中的候选字替换进去并计算得分,所有句子中困惑度最低的即为最终选择。

transformation stage:应用seq-to-seq模型,将其转化为机器翻译任务,将语法纠错任务看作是翻译问题,利用transformer作为翻译模型——在纠正完表面错误后,他们开始着手进行语法错误的纠正,这方面他们采用的是基于self-attention的 encoder-decoder框架Transformer ,因为在机器翻译领域 sub-word 效果更好,然而字级更能处理拼写和字级语法错误,因此他们分别构造了字级和词级的神经网络模型,试图将他们组合起来以此获取这两种颗粒度各自的优点。

ensemble stage:集成第二阶段的若干模型,输出最后结果,首先是低级错误模型单独来,然后是低级错误+高级错误模型,先字后词、先词后字以及只用字、只用词四种高级模型,由此得到了总共5个纠正模型:

最终得到了5个组合的输出,再用5-gram模型对这5个句子进行评分,选择困惑度最低的句子作为输出。

S1:直接选最低的ppl对应的句子

S2:若ppl最低的两个句子之间的差距小于阈值,则选取倒数第二个句子,其他情况和S1一样

S3:若ppl最低的两个句子之间的差距小于阈值,则从两个句子中随机选取一个,其他情况和S1一样

该实验目的:验证基于语言模型挑选句子的必要性,因为s1和s2有目的的挑选均比s3随机挑选好。

上图为本文的消融实验,验证各个模块的效果。

本方案总结如下:他们将纠错任务视作翻译任务,错误分为表面错误和语法错误,使用相似字音表+5-gram解决低级错误,使用字级、词级 Transformer 模型解决高级错误,将低级模型和高级模型进行组合,最终再用5-gram语言模型对纠正后句子进行困惑度分析,选择困惑度最低的句子。

3、《Chinese Grammatical Error Correction Using Statistical and Neural Models》论文阅读

本文方案的insight为:combine statistical and neural models for the GEC task

用多模型平行结构,使用基于规则、基于统计和神经网络三大类模型,先在类别内进行低级组合得到类别候选,再对类别间候选进行高级组合

在输入处理方面:本文方案生成了两类数据集,第一类是将待测句子和其纠正句子中编辑距离最小的句子构成样本对,称为NLPCC MinEd,第二类是将待测句子和所有纠正句子各构成样本对,称为NLPCC Expand。在神经网络翻译模型中使用不同的语料类训练模型并组合结果。

本文方案使用的模型和上一篇(有道)的不大相同,其有两个模块,一个是correction模块,一个是combination模块。有道的在单个模型组合里采用的是垂直结构:先纠简单再就复杂,然而阿里采用的是平行结构,不分简单复杂,模型自行把它们都搞定,而后再组合起来。

correction 模块:由一系列统计模型和神经网络模型构成

combination模块:由两种combination(组合)方式,一种是low-level,一种high-level

correction 模块分为3种:Rule-Based GEC Model:对句子进行分块,若分块在词表里面(由Gigawords数据集进行构造),则证明分块不需要纠错;若分块不在词表里面,则按照图中3个step构造候选纠正集合,最后基于语言模型来判断得分最高的候选纠正是否属实。

SMT-based GEC Model:由language model和translation model组成,并通过noisy channel进行融合,SMT-based可分为char-level和word-level两种,他们引入了基于规则的模型,在基于统计的模型中使用语言模型+翻译模型并用信道噪声+beam search挑选候选解。

NMT-based GEC Model:神经网络方面也是 Encoder-Decoder (各2层LSTM) + attention 的模型,他们只使用字级模型,但在其它方面做了修改,如LSTM是单向还是双向、是否使用以及是在Encoder还是在Decoder使用预训练的embedding,数据集是只挑错误句子到候选正确句子编辑距离最低的句子对还是使用所有候选正确句子,以此产生了4个模型组合:

combination模块:Low level combination用来融合statistical models和neural models类内的输出,High level combination:融合statistical models和neural models类间的输出,即低层组合组合同一类型模型的候选结果;高层组合组合不同类型模型的候选结果。

若是几个模型的输出结果不同,则称发生了冲突,他们提出了5种冲突解决方案:为模型分配优先级,当冲突发生时选择优先级高的模型的结果

将冲突句子对原句所做的更改做并集,选择可以最小化编辑距离的修改方式

对修改集做交集

用语言模型对修改后的句子进行评分,选择分数高的

用语言模型评分,并把句子长度作为正则化参数 (分数 / 句子长度)

其中,R:规则;S:统计;N:神经网络,P1,P2:加入的保护机制,当三种模型的冲突太多时则不对句子做修改,其中P1和P2的区别在于冲突阈值卡了不同的数值。

通过上图实验结果可分析得到,Rule:适合解决音近或形近的字,或解决顺序颠倒问题;SMT:适合解决一些低频错误;或者字符增删的问题;NMT:适合解决负责问题,即需要大幅度修改句子的问题

4、《A Sequence to Sequence Learning for Chinese Grammatical Error Correction》论文阅读

本文论文方案的insight有两点:使用的是基于CNN的seq2seq模型,因为语法错误更多和邻近词语有关,使用CNN能比LSTM更好捕捉邻近词的关系,而多层CNN也同样可以捕获较远距离的词语交互信息。

Embedding方面,他们使用了基于中文语法修正过后word2vec的wang2vec,并且将位置向量接在embedding以及生成的词语后面,以此给输入和输出层提供位置信息

本文的模型结构如下,采用CNN作为编码器,并使用经典的E-D模型结构:

分词方法和subword方法如下:

本文进行了消融实验,验证各模块的作用:

其中,+BPE应为分词后,使用subword方法

5、《Controlling Grammatical Error Correction Using Word Edit Rate》论文阅读

对于语法错误的句子,需要根据其需要纠正的程度来采取不同的纠正方法。在实际应用场景中,不同learner由于对语言的掌握程度不同,所写的句子需要纠错的程度有高有低;在评测的数据集中,有些句子需要纠错的程度高,有些低。

本文的insight分为4点:现有的GEC模型只考虑单一的语法错误纠正程度,提出了一个改进的GEC模型,能够控制多种语法错误纠正的程度

用编辑距离WER(句子和gt之间)作为衡量句子错误纠正的程度

在训练时,将WER tokens添加输入句子中,表示输入句子的纠正程度;推断时,从一些列不同纠正程度的句子中,挑选最合适的作为最终输出

相对于普通的GEC模型,增加纠正程度信息后的GEC模型,可以提高纠正正确率

本文使用了基于多级CNN的编解码模型结构,本文的处理步骤如下:首先,计算输入句子和参考句子之间的编辑距离,然后除以句子长度得到WER

然后,利用一个预先设置好的超参,将训练集按照WER划分为5个相等大小的子集,然后每个子集中对应一个WER tokens,将该token添加到子集里所有的句子开头进行标识

接着,将增加WER token后的训练集作为新训练集,训练GEC模型

在推断阶段,每一个输入句子根据5个WER tokens,会产生5个输出句子,对应5种纠正程度,因此,本文提出了两种排序方法,对5个输出句子进行排序,选择最合适的纠正程度对应的输出句子作为最终结果,本文采用两种排序方法,第一种是softmax,即将预测句子中,每一个字softmax之后的概率进行连乘,得到整个句子的概率作为该句子得分;第二种是LM,即基于语言模型,计算句子中所有n-gram得分,并相乘得到整个句子的得分

本文实验结果如下:

上述实验的为结论:1、召回率和WER成正比,精确率和WER成反比;2、WER等级为5的时候,PRF和GLEU效果不好是因为训练数据里包含了很多噪音数据,因为存在一些WER极大的噪音数据归类为5等级

其中,oracle是基于结果最优反过来挑选句子,代表了控制纠错程度的改进模型的上限值;gold wer是计算测试集中的句子和gt的wer,然后根据table 2中的划分范围来分配wer token,上述实验结论为:softmax得分ranking适用于纠错程度低的句子,LM得分ranking适用于纠错程度高的句子。

上述实验的结论为:随着wer token的变大,句子的纠正程度也会变大,4对应纠错是刚好的,1-3对应纠错不够,5对应纠错过度

上述实验的结论为:DET和NOUN:NUM这两种错误能够通过控制纠错程度来进行纠正,但其他错误对控制错误纠正程度不敏感。

6、《Cross-Sentence Grammatical Error Correction》论文阅读

该篇论文主要改进动词语态选择、限定词、连词这几种文本错误,本文的insight有3点:现有的GEC模型只考虑句子本身,而忽略了句子的上下文。本文首次提出了一个结合上下文信息进行文本纠错的GEC模型(corss-sentence model)

利用一个辅助的encoder来编码句子上下文信息,并基于attention机制在decoder端交互encoder的信息。

采用model emsembel和rescoring等策略,共同提升baseline和cross-sentence model的效果

本文的baseline和本文所提方案cross-sentence model概括如下:

下图为本文采用的模型结果,和上篇论文一样,都是基于多层CNN模型和ED框架,只不过增加了一个辅助编码器对上下文信息进行编码。

本文采用了以下几种trick,共同提升baseline和cross-sentence model的效果:Embedding初始化:initializing the word embedding vectors with pretrained embeddings

Decoder端pretrain:pretraining the decoder on large English corpora using a language modeling objective

label smoothing

Dropout:dropping out entire word embeddings of source words during training

Rescore:rescore the final candidates using feature-based rescoring(with edit operation and language model features,此外增加bert得分进行比较)

其中,bert得分计算公式如下:

上述实验的结论为:1、ensemble比average的增幅更明显;2、bert得分rescore效果最好

其中,NUS1+2+3为采用3组模型,然后每组模型设了4个参数种子,得到12个模型,NUS2+3+baseline为用baseline对应的4个模型(4个参数种子)替换效果最差的NUS1,NUS2+3+crosent同理。

上述实验为对本文尝试的3种将context的信息融入到当前句子的策略进行了对比,可看出+gate效果最好。

从上述实验可看得出,本文的效果提升主要来自于解决限定词错误和动词时态错误。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。