背景
文本语义纠错的应用场景十分宽泛,基本上只有波及到写作就有文本纠错的需要。书籍面市前就有独立的校对的环节来保障出版之后不呈现显著的问题。在新闻中咱们也时不时看到因为文字审核没到位造成大乌龙的状况,包含上市公司在公开文书上把“长期大会”写成为“临死大会”,政府文件把“报效国家”写成了“报销国家”。无关文本纠错的辅助工具能给文字工作人员带来较大的便当,对审核方面的危险也大幅升高。
除了不同的写作场景,文本纠错还会用在其余一些智能解决零碎中,具体的状况包含:音频通话记录通过主动语音辨认(ASR)转写成文本之后,存在一些转译谬误;光学字符识别(OCR)零碎辨认图片中的文字并进行提取,会存在字符识别谬误;在搜索引擎或主动问答零碎外面,用户在查问过程中的输出谬误,往往会导致系统无奈了解用户的实在用意,须要进行查问纠正改写。这些状况都须要通过文本纠错技术来进行修改,使产品整体的用户体验更加敌对。
文本语义纠错在学术畛域有三个子工作,别离是拼写查看(Spelling Check)、语法检错(Grammatical Error Detection)和语法纠错(Grammatical Error Correction)。其中语法检错是对文本中的语法错误进行检测,拼写查看是对文本中的错别字进行修改,语法纠错是纠正文本中的语法错误。拼写查看在英文场景体现为单词拼写错误,在中文场景体现为音近形近错别字。而语法纠错除此之外,还包含字词缺失、字词冗余、字词使用不当、语序不当等谬误类型。语法纠错区别于拼写查看的一个显著特点是,语法纠错纠正后的文本和原始文本的长度不肯定相等,而拼写查看纠正前后的文本长度都是保持一致的,这也决定了两者的算法反对存在差别。一般来说,拼写查看能够看作为语法纠错的一个工作子集。
咱们对语法纠错的问题作一下形式化定义,输出的原始文本定义为X={x1,x2,…,xn};原始文本正确的纠正后果文本序列定义为Y={y1,y2,…,ym},算法预测输入的文本,定义为P={p1,p2,…,pk}。
评估指标
在开始咱们的文本语义纠错算法探索之旅之前,咱们先思考一个问题,到底怎么样的模型体现才是公认更无效的,这个好坏应该从何种形式、如何量化地评估进去。这也是咱们在解决其余所有类型的NLP工作都须要先思考的问题,这个问题就是如何定义咱们的评测指标。上面列举了纠错算法罕用的一些评测指标:
01 M2(MaxMatch)
M2指标次要是通过计算输入文本和原始文本之间的编辑汇合G,而后与人工标注的编辑汇合E联合,计算准确率、召回率、F0.5值(采纳F0.5示意对准确率更加关注)。这里的编辑了解为一个转换动作,通过一组转换动作,能够实现原始文本到纠正文本的转换,M2指标定义形如:
F0.5=1.25*RP/(R+0.25P)下表列举了一组示例和计算过程:
表 1 纠错文本示例
其中编辑汇合G={孜→自,书→书写},人工标注编辑汇合E={孜→自,俱→具,读书→读}能够计算出来:
P=1/2=0.5
R=1/3=0.33
F0.5=1.250.330.5/(0.33+0.25*0.5)=0.45
02 ERRANT
ERRANT[1]是升级版的M2。M2的局限性也比拟显著,依附前置的人工标注,有比拟大的工作量,而且人工标注编辑汇合产生的形式可能不太统一,导致匹配不准。ERRANT在生成标准答案的编辑汇合和生成预测的编辑汇合都采纳了主动判断的形式,同时反对了25种的谬误类型,输入了更丰盛维度的错误报告信息。毛病是该工具面向英文,中文须要做较大革新。
03面向标注状态的其余指标
上述两者在解决纠错工作评测时存在一些毛病,包含M2不反对检错性能评估,编辑不能正确反映正当纠错动作等等。
咱们会在一些学术评测上看到,依据看待纠文本进行的谬误标注类型来制订的评测指标。上面举了NLPCC2022语法纠错评测指标为例,它对应的谬误类型总共有赘余(Redundant Words,R)、脱漏(Missing Words,M)、误用(Word Selection,S)、错序(Word Ordering Errors,W)四类,评估的维度蕴含以下方面:
- 假阳性(False Positive):正确句子被判蕴含谬误的比例。
- 侦测层(Detective-level):对句子是否蕴含谬误做二分判断。从句子是否有错,判断p/r/f1
- 辨认层(Identification-level):给出谬误点的谬误类型。按一个句子的谬误品种计算p/r/f1
- 定位层(Position-level):对谬误点的地位和覆盖范围进行判断,以字符偏移量计。谬误地位是否对计算p/r/f1
- 修改层(Correction-level):提交针对字符串误用(S)和缺失(M)两种谬误类型的修改词语。修改词语能够是一个词,也能够是一个词组。M/S的修改词语角度
- 因为纠错工作自身的特殊性(同一个谬误的文本能够有多种正确的纠正答案,或者同一个地位能够采纳不同的谬误类型进行标注),目前现存的评测指标大都有其局限性,如何定义主客观、对立、正当的语法纠错评测指标依然在一直探讨。
公开数据集
在确定了评估指标之后,咱们曾经确定了评判算法好坏的一个规范。锅曾经端好,就等米下锅了,数据对于算法研发人员来说是必需品,一方面它是验证成果的信息起源,另一方面它是进行模型构建的训练语料。比拟好的形式是从公开的渠道获取比拟优质的标注数据。目前公开的中文语义纠错数据集包含NLPCC2018[2]、NLPTEA2020[3]、SIGHAN2015[4]等,较多是非母语学生学习汉语收集得来的语料集,训练和验证的数据标注模式如图所示:
图1 公开数据集(NLPTEA2020、NLPCC2020和SIGHAN2015)
无监督办法
文本语义纠错的算法整体能够分成无监督和有监督的两种形式,咱们先从无监督的办法开始看。无监督办法的外围是如何构建一个好用的语言模型,并且用在纠错的工作上。对于NLPer来说,咱们经验了太多的预训练语言模型,像BERT、XLNet、GPT3等等,其本质还是语言模型或者说经典语言模型的一些变种。语言模型实际上是对文本序列的概率分布进行建模,艰深地来表白,语言模型是判断一句话是不是合乎常理,或者谈话应该怎么说才正当(合乎概率分布)。这个正好就对应上了纠错工作的实质需要,咱们从最经典的N元语言模型开始来介绍一下语法纠错的解决逻辑。
01 n元语言模型
一个语言模型构建字符串的概率分布p(W),假如p(W)是字符串作为句子的概率,则概率由下边的公式计算:
然而这样去计算句子概率会导致宏大的计算量,导致依据马尔科夫假如,一个词只和他后面n-1个词相关性最高,这就是n元语法模型,简化后的计算公式为:
在失去这个论断之后,咱们尝试应用N元语言模型来解决拼写查看的问题。
假如咱们采纳的是5元语言模型,训练阶段应用大量的语料来进行统计所有的p(w5|w1w2w3w4)并存储起来。在预测阶段,设定待纠正的文本序列为W={w1,w2,…,wn},针对每个地位的wk,咱们通过事后构建好的混同集取得w的音近形近字wk’。
而后通过上述公式别离计算原始文本和批改文本的句子概率P(w1…wk…wn)、P(w1…wk’…wn)。如果P(w1…wk’…wn)>P(w1…wk…wn),则阐明批改后文本的通顺度晋升(概率升高),能够承受该纠正批改(wk替换为wk’)。
从而咱们的纠错执行过程则蕴含如下:
- 计算输出句子的归一化对数概率,并且为句子的每个字构建一个混同汇合;
- 对句子每个字针对其不同混同字从新打分,利用单个最佳进行校对,将概率进步到以后最高值以上;
- 反复下面过程直至概率没变动。
图2 N元语言模型纠错执行计算过程
上述过程比拟好了解,同时能够显著看进去一些硬伤,包含会OOV(未登录词)问题导致语言模型计算出来的概率为0;模型会过分虐待高频短串,或者漠视低频短串。这时候须要通过平滑技术来改善概率算法,典型平滑办法蕴含Add-one、Interpolation和Modified Kneser-ney等。此外,仍有些难以通过技术手段解决的问题,包含上下文范畴局限较大(n 的减少会导致计算和资源耗费成倍增加)和短少泛化(不足理论予以的了解),此时须要引入基于神经网络的语言模型。
02基于神经网络的语言模型
比拟经典的基于神经网络的语言模型,数学表达式能够写为:
以k元文法为例,把前k-1个词作为特色,用softmax预测最初一个词。
个别基于神经网络的语言模型设计得更加简单,会把上下文的信息造成特色,来预测当中的每一个词。定义基于上下文context下wi的预测概率为P(wi|context_i),句子的概率能够示意为:
办法[5]就是采纳了BERT和GPT作为根底的语言模型来计算句子的概率。
有监督办法
无监督的纠错算法在解决文本时存在以下弱点:容易受部分高频或低频的序列影响,成果不够稳固;在须要对准确率和召回率进行均衡调整时,不太好通过阈值的形式进行管制;能够较好利用在拼写查看的工作上,然而对于句子长度有变动的语法纠错工作反对就比拟弱。此时须要应用有监督算法来作为实现伎俩。
01 NMT/Seq2Seq
解决字词冗余/缺失这类纠错前后句子长度有变动的工作,咱们第一感觉就想起能够通过文本生成的形式来训练对应的模型实现该性能。而且语法纠错工作和文本生成工作的状态基本上是统一的,也导致了文本生成模型很天然地被研究者留神,引入到语法纠错的工作畛域。
NMT-based GEC[6]是第一篇通过应用神经网络机器翻译来实现语法纠错的文章。2014年seq2seq模型一提出即引发了较大反应,后续seq2seq成为了文本生成的支流构造。seq2seq将一个作为输出的序列映射为一个作为输入的序列,这一过程由编码(Encoder)输出与解码(Decoder)输入两个环节组成, 前者负责把序列编码成一个固定长度的向量,这个向量作为输出传给后者,输入可变长度的向量。下图展示了一个根底的seq2seq构造。
图3 seq2seq构造
办法[7]应用了经典的Encoder-Decoder模型构造来解决中文语法纠错问题,嵌入层应用了非凡的嵌入示意,同时在编码层应用了卷积神经网络强化了纠错的局部性,具体的模型构造如下:
图4 Encoder-Decoder构造纠错模型
02 LaserTagger
因为书写谬误的呈现概率广泛不高,纠错工作自身的输入输出存在大量重叠(根本不必改),所以大多数文本能够放弃不变。然而咱们在通过seq2seq的形式进行实现时,对于失常的字符也要全副进行预测,造成效率十分低下。因而谷歌在EMNLP 2019提出了LaserTagger,在应用Encoder-Decoder的模型构造条件下,把预测的内容从文字变成了编辑操作类型。lasertagger其模型构造(采纳BERT作为编码层、自回归Transformer作为解码层)如下所示:
图5 LaserTagger纠错模型
编辑操作类型蕴含Keep(将单词复制到输入中),Delete(删除单词)和Add(在之前增加短语X),其中被增加的短语来自一个受限的词汇表。通过构造的革新,lasertagger体现了推理速度快和样本训练效率高的有点。因为预测的类型只有三种,绝对于seq2seq而言,解码的空间大幅升高,推理性能晋升显著,绝对于BERT+seq2seq的模型构造,larserTagger的性能晋升靠近100倍。同时因为预测的内容求解空间也大幅升高,所以对样本的需求量也大幅缩小,在1000份的样本下也能获得不错的成果。
03 PIE
与LaserTagger同年提出来的PIE(Parallel Iterative Edit Models)[8]同样是针对seq2seq 生成文本的可控性较差,推理速度也比较慢的问题进行来改良。与LarserTagger相似,PIE结构模型来对编辑操作进行预测,不过编辑操作的类型稍有区别,多了一个替换(replace)和词性变换(面向英文)。在解决替换和增加操作时,PIE将BERT编码层进行了扩大来反对替换和增加的信息输出,采纳了一个双层的双向transformer,构造如下所示:
图6 PIE纠错模型
上图示意了一个长度为3的文本输出(x1,x2,x3)。在最底层的输出层,M示意mask标识符的嵌入向量,p示意地位嵌入,x示意词嵌入。在中间层和输入层,r示意对应地位的替换信息,h示意对应地位的的原始信息,a示意对应地位的插入信息。之后利用三类信息来别离计算不同操作的概率,并归一化,CARDT 别离代表复制、插入、替换、删除、词形变换,计算公式如下:
纠错过程中,PIE模型输入概率最高的编辑操作,实现批改后再迭代地进行预测,直至句子不产生扭转后进行。
PIE定义的构造能够实现在并行解码的同时放弃较高的准确率,它在这篇文章第一次提出了seq2edit的概念。
04 GECToR
GECToR[9]提出了一种序列标注模型,编码层由预训练的 BERT 型 transformer 组成,下面重叠两个线性层,顶部有 softmax 层。模型输入的标签蕴含了根本变换和g-变换两种类型。其中根本变换蕴含保留(KEEP)、删除(DELETE)、增加(APPEND)和替换(REPLACE)。g-变换次要面向英文,针对了英语的语法变动总结出了5大类(大小写、单词合并、单词拆分、单复数和时态)29个小类的状态变换。
GECToR另外两个亮点是引入了不同的预训练Transformer解码器(包含XLNet、RoBERTa、ALBERT、BERT和GPT-2)并进行了比拟,以及采纳了三阶段的训练形式。第一阶段应用了大量(九百万)试验合成的蕴含语法错误+语法正确的句子对进行预训练,第二阶段应用了大量的公开纠错数据集的句子对进行Fine-tuning,第三阶段应用了语法错误+正确和语法正确+正确的句子对来进行Fine-tuning,试验证实第三阶段的Fine-tuning有成果晋升。
在预测阶段,GECToR也是采纳了多轮预测的计划。
05 PLOME
PLOME[10]在2021ACL发表,是针对中文文本纠错工作构建的预训练语言模型,构造和BERT比拟相似(12层Transformer)。PLOME的翻新点次要在于采纳了基于混同集的掩码策略、把拼音和字形信息作为模型输出以及把字符和拼音的预测工作作为了模型的训练和微调指标。
PLOME的掩码策略次要是基于以下4种:字音混同词替换(Phonic Masking)、字形混同词替换(Shape Masking)、随机替换(Random Masking)、原词不变(Unchanging)。PLOME的掩码策略同样仅遮蔽15%的token,且4种MASK策略占比别离为: 60% 、15%、10%、15%。
词嵌入模块方面,PLOME采纳了字符嵌入(character embedding)、地位嵌入( position embedding)、语音嵌入(phonic embedding)和形态嵌入(shape embedding)。其中,字符嵌入和地位嵌入与BERT的输出统一。其中构建语音嵌入时,应用Unihan数据库失去字符-拼音的映射表(不思考音调),而后将每一个字的多个拼音字母序列输出到GRU网络中,失去该字的拼音嵌入向量。同样,构建字形嵌入时,应用Chaizi数据库失去字形的笔画程序,而后将字形的笔画程序序列输出到GRU网络中,失去该字的字形嵌入向量。
在训练任务方面,PLOME训练了2个工作,字符预测和BERT一样,减少了拼音的预测,预测被替换词的正确发音,更够更好解决同音和音近谬误。
PLOME预训练语言模型的上游工作次要是文本纠错工作。该工作的输出是字符序列 ,输入是预测的字符序列。该论文仅在拼写查看工作上做了验证。
06 其余策略
(1)COPY机制
COPY机制同样是利用指标文本和源文本有大量反复这个特点。钻研[11]提出了Copy-Augment的GEC模型,其次要思维是:在生成序列过程中,思考两个生成散布:别离是复制输出序列中的词语(0/1示意是否复制)的概率分布和从候选词典中的词语生成的概率分布。将两者的概率分布加权求和作为最终生成的概率分布,进而预测每一个时刻生成的词语。根本架构如下:
图7 COPY机制
该模型将简略的词语复制工作交给了Copy机制,将模型构造中的Attention等构造更多地用来学习比拟难的新词生成,对训练更加可控。
(2)数据加强
数据加强能够通过基于规定和基于生成的形式实现。基于规定这个比较简单,咱们能够依照谬误的类型(字词冗余、缺失、词序谬误等)针对性地制订策略结构蕴含语法错误的样本,而后扔到模型来进行训练。不过基于规定的形式有点过于粗犷,很可能规定生成的谬误与理论产生的谬误差距比拟大,或者比拟不合乎惯例认知。
第二种形式就是基于生成。最早基于生成的数据加强形式应该是回译法,就是将文本从一个语种翻译到另外一个语种,而后再翻译回来,从而结构了句子对,这种数据加强模式针对失常的编辑写作可能不太无效,更加合乎跨语言学习的用户的谬误特点。另外有钻研[12]联合了分类器和自编码器来联结训练,达到生成固定类型谬误样本的目标。而钻研[13]通过对GEC模型进行反抗攻打,能够生成有价值的带有语法错误的句子,能够利用生成的句子训练GEC模型,晋升性能的同时晋升鲁棒性。
解决难点与技术挑战
01语料收集
目前公开的中文语义纠错数据集次要是不同母语的人学习汉语作为第二语言收集得来的语料集,目前大部分对于语法纠错的算法模型都是基于这些数据集来做成果验证的,不过咱们理论中要解决的数据通常并不是同样的模式诞生,更多是把握汉语作为母语的人因为失误导致的语法错误,这种状况和公开意料的状况差异比拟大,谬误的散布差距也比拟大,从而通过公开语料集训练得来的模型在上线到失常的业务流程外面,成果通常都会比拟个别。
02长依赖
长距离包含跨语句依赖在论文等文本中很常见,一旦呈现谬误,很难觉察并纠正。以后语法钻研大多集中在单个语句的语法检查和纠错,很少波及长距离语法问题,相干数据集和模型办法缺失,是语法纠错的难题之一。
03模型的泛化能力与鲁棒性
一般来说,不同行业、不同畛域的文本在措辞使用、表白习惯和专有名词等方面都存在较大的差别。譬如说政务机关红头文件十分谨严的语言表达和自媒体新闻绝对较自在的文风就有显著的差异,又譬如金融行研报告和医学论文在根本内容和专业术语上也截然不同。在一个畛域性能杰出的纠错模型在切换到另外一个畛域,往往成果降落显著。如何晋升模型的泛化能力和鲁棒性,面临着微小的技术挑战。
04成果指标与体验的均衡
SOTA的指标能够刷到,然而这些模型一旦染指理论场景的数据,成果会差得一塌糊涂,这个一方面是因为模型和场景严密相干,另外一方面是,通常公开数据集的谬误散布是呈高密度,然而理论场景是低密度,会容易导致十分高的误判。譬如说SOTA外面准确率的指标是80%,对于在低密度谬误的样本中,很可能准确率会降落到20~30%左右。纠错零碎的体验会比拟差。
05成果指标与纠错性能的均衡
工业界往往会采纳pipeline的形式,先对文本进行检错,如果检测进去有谬误,再对文本进行纠错解决。然而这个检错阶段的谬误会传递到纠错阶段,导致成果降落。如果间接走seq2seq或seq2edit的纠错模型,或者须要交融多种模型策略来生成最终纠错后果,纠错的性能会降落十分快,局部试验3000字的纠错可能须要长达40~60秒,这个无奈解决大量并发的文本纠错需要。咱们须要再成果和性能上获得均衡,或者有更好的办法在保障成果指标的前提下晋升纠错性能。
达观在语义纠错方面的产品实际
达观数据在语义纠错方面有比拟深刻的产品实际,开发出的投行质控零碎和公文智能解决零碎均解决了相干场景。达观投行质控零碎基于深度学习、NLP(自然语言解决)算法,帮忙用户解决几大文书审核场景,包含:文书格局纠错,文字纠错和完整性审核;文档目录智能辨认,一键定位:文档条款内容智能提取,不便业务人员对条款内容进行预审;反对文档多版本的内容比对等。达观智能公文解决零碎,严格遵循《党政机关公文解决工作条例》和《党政机关公文格局》规定,通过公文智能剖析、公文知识库援用、公文审校、公文排版、公文格局纠错、公文内容语义纠错、公文在线比对批改等一体化的性能,实现根底字词校对准确率超90%、法律援用校验和公务文书完整性校对准确率超95%,无力晋升政府机关整体公文品质,防止公文“带病”公布状况,确保政府机关公信度。
参考文献:
[1] Korre K, Pavlopoulos J. Errant: Assessing and improving grammatical error type classification[C]//Proceedings of the The 4th Joint SIGHUM Workshop on Computational Linguistics for Cultural Heritage, Social Sciences, Humanities and Literature. 2020: 85-89.
[2] Zhao Y, Jiang N, Sun W, et al. Overview of the nlpcc 2018 shared task: Grammatical error correction[C]//CCF International Conference on Natural Language Processing and Chinese Computing. Springer, Cham, 2018: 439-445.
[3] Rao G, Yang E, Zhang B. Overview of NLPTEA-2020 shared task for Chinese grammatical error diagnosis[C]//Proceedings of the 6th Workshop on Natural Language Processing Techniques for Educational Applications. 2020: 25-35.
[4] Tseng Y H, Lee L H, Chang L P, et al. Introduction to SIGHAN 2015 bake-off for Chinese spelling check[C]//Proceedings of the Eighth SIGHAN Workshop on Chinese Language Processing. 2015: 32-37.
[5] Alikaniotis D, Raheja V. The unreasonable effectiveness of transformer language models in grammatical error correction[J]. arXiv preprint arXiv:1906.01733, 2019.
[6] Yuan Z, Briscoe T. Grammatical error correction using neural machine translation[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 380-386.
[7] Ren H, Yang L, Xun E. A sequence to sequence learning for Chinese grammatical error correction[C]//CCF International Conference on Natural Language Processing and Chinese Computing. Springer, Cham, 2018: 401-410.
[8] Awasthi A, Sarawagi S, Goyal R, et al. Parallel iterative edit models for local sequence transduction[J]. arXiv preprint arXiv:1910.02893, 2019.[9] Omelianchuk K, Atrasevych V, Chernodub A, et al. GECToR–grammatical error correction: tag, not rewrite[J]. arXiv preprint arXiv:2005.12592, 2020.
[10] Liu S, Yang T, Yue T, et al. PLOME: Pre-training with misspelled knowledge for Chinese spelling correction[C]//Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers). 2021: 2991-3000.
[11] Zhao W, Wang L, Shen K, et al. Improving grammatical error correction via pre-training a copy-augmented architecture with unlabeled data[J]. arXiv preprint arXiv:1903.00138, 2019.
[12] Wan Z, Wan X, Wang W. Improving grammatical error correction with data augmentation by editing latent representation[C]//Proceedings of the 28th International Conference on Computational Linguistics. 2020: 2202-2212.
[13] Wang L, Zheng X. Improving grammatical error correction models with purpose-built adversarial examples[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020: 2858-2869.
作者简介
张健,达观数据联结创始人,复旦大学计算机软件与实践硕士,曾就任于隆重团体和腾讯文学,负责人工智能和大数据技术专家职位。目前负责达观数据文本利用部总负责人,对于机器学习算法和自然语言解决畛域的研发有丰盛的实践经验和技术积攒,负责客户意见洞察零碎、智能客服工单剖析零碎、文本语义纠错零碎、事件剖析平台、文本智能审核零碎等多个文本利用产品的开发和落地。荣获上海市浦东新区迷信技奖、“2021上海科技青年35人引领打算”、上海市青年科技启明星等多个奖项。
发表回复