背景
文本语义纠错的使用场景非常广泛,基本上只要涉及到写作就有文本纠错的需求。书籍面市前就有独立的校对的环节来保障出版之后不出现明显的问题。在新闻中我们也时不时看到因为文字审核没到位造成大乌龙的情况,包括上市公司在公开文书上把“临时大会”写成为“临死大会”,政府文件把“报效国家”写成了“报销国家”。有关文本纠错的辅助工具能给文字工作人员带来较大的便利,对审核方面的风险也大幅降低。
除了不同的写作场景,文本纠错还会用在其他一些智能处理系统中,具体的情况包括:音频通话记录经过自动语音识别(ASR)转写成文本之后,存在一些转译错误;光学字符识别(OCR)系统识别图片中的文字并进行提取,会存在字符识别错误;在搜索引擎或自动问答系统里面,用户在查询过程中的输入错误,往往会导致系统无法理解用户的真实意图,需要进行查询纠正改写。这些情况都需要通过文本纠错技术来进行修正,使产品整体的用户体验更加友好。
文本语义纠错在学术领域有三个子任务,分别是拼写检查(Spelling Check)、语法检错(Grammatical Error Detection)和语法纠错(Grammatical Error Correction)。其中语法检错是对文本中的语法错误进行检测,拼写检查是对文本中的错别字进行修正,语法纠错是纠正文本中的语法错误。拼写检查在英文场景表现为单词拼写错误,在中文场景表现为音近形近错别字。而语法纠错除此之外,还包括字词缺失、字词冗余、字词使用不当、语序不当等错误类型。语法纠错区别于拼写检查的一个显著特点是,语法纠错纠正后的文本和原始文本的长度不一定相等,而拼写检查纠正前后的文本长度都是保持一致的,这也决定了两者的算法支持存在差异。一般来说,拼写检查可以看作为语法纠错的一个任务子集。
我们对语法纠错的问题作一下形式化定义,输入的原始文本定义为X={x1,x2,...,xn};原始文本正确的纠正结果文本序列定义为Y={y1,y2,...,ym},算法预测输出的文本,定义为P={p1,p2,...,pk}。
评估指标
在开始我们的文本语义纠错算法探索之旅之前,我们先思考一个问题,究竟怎么样的模型表现才是公认更有效的,这个好坏应该从何种方式、如何量化地评估出来。这也是我们在解决其他所有类型的NLP任务都需要先考虑的问题,这个问题就是如何定义我们的评测指标。下面罗列了纠错算法常用的一些评测指标:
01M2(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.25*0.33*0.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的修正词语角度
由于纠错任务本身的特殊性(同一个错误的文本可以有多种正确的纠正答案,或者同一个