放牧代码和思想
专注自然语言处理、机器学习算法
    愛しさ 優しさ すべて投げ出してもいい

语法纠错的评测指标

目录

在进行一项NLP任务前,了解评测指标至关重要。以语法纠错为例,一项评测如何定义、如何对齐黄金与预测数据、是否符合人工评测、是否支持多语种等等都值得关注。本文简要评测几个常用的评测指标,特别关注对中文的支持程度。

gec.jpeg

首先,语法纠错任务经常定义为预测一个对原文本的修正动作(edit)的集合,无需进行修改时该集合为空。由于这个原因,绝大多数的评测标准都定义为针对答案动作集合和预测动作集合的某种F均值。不同点在于,有些评测指标还会将错误类型纳入考虑、有些评测指标细化为错误检测与错误改正等等。

语法纠错常用的评测指标基本就是MaxMatch($M^2$)和ERRANT,另外国内的CIEC-CTC 2021 中文文本纠错比赛也提了一个小众的评测指标。按时间顺序一个个介绍吧。

MaxMatch($M^2$

在上述基本定义的前提下,在答案方面,$M^2$要求提供单词级别的edit集合,该集合是外部提供的(通常是标注员人工标注的而不是某个对齐工具自动产生的)。比如,对于原文本:

There is no a doubt , tracking system has brought many benefits in this information age .

黄金edit集合为{a doubt → doubt, system → systems, has → have}。

在预测方面,该评测指标会根据Levenshtein编辑距离自动产生edit。比如,对于系统预测:

There is no doubt , tracking system has brought many benefits in this information age .

预测edit集合为{a doubt → doubt}。

该算法未对齐的单词会被合并为短语,这种做法稍显粗糙,后续出现了许多改进的方法,包括利用统计方法和语言学特征决定是否合并等等。

得到了系统的edit集合后,$M^2$根据两个集合的交集与它们本身分别计算precision与recall值,以它们的$F_{0.5}$作为最终性能。

比如,对于上述例子,R = 1/3, P = 1/1, $F_{0.5}= (1 + 0.5^2 ) × RP/(R + 0.5^2 × P) = 5/7$。

不同于广泛采用的$F_1$,这样设计的初衷是,语法纠错系统的precision更受终端用户的关注,所以采用$F_{0.5}$去双倍地关注precision。

ERRANT

ERRANT主要解决了$M^2$的两个问题。

ERRANT不再要求提供黄金的edit以及错误类型,而是在答案和预测两方面都采取了自动提取edit自动判断错误类型的方便措施。自动提取的好处是大量减小了标注员的负担,缺点是有一定误差。在自动提取edit上,ERRANT采用了以词性和词干作为考量的Damerau-Levenshtein算法。在判断错误类型上,ERRANT采用了一系列针对词性和词干编写的规则。

根据作者的评估,ERRANT与人工评测的相关性更高。

然而,这两项规则都是语言相关的,目前仅仅针对了英文编写,无法直接用于中文。并且所采用的词性和词干特征,都需要通过第三方工具预测,有一定误差传播和不可控的缺点。

CIEC-CTC 2021

CIEC-CTC 2021的组织者也提了一个评测标准,仅要求提供黄金和预测平行句对,利用Levenshtein编辑距离得到两者的edit集合,划分为缺失、别字、别词、赘余四种类型,然后计算错误检测与错误改正的$F_1$。

然而遗憾的是,该评测至少有2个问题。

  1. 如同上文所述,Levenshtein对短语的支持不好,可能导致评分比$M^2$虚高。

  2. $F_1$无差别对待precision与recall值,可能导致与终端用户的人工评价相关性低。

另外,中文分词也可能导致一些误差,这个很难避免。

所以,with all due respect,CIEC-CTC 2021的评测指标是三者中最差的,完全不建议使用。

我的作品

HanLP自然语言处理包《自然语言处理入门》