由于自然语言处理任务的多样性以及评价的主观性,因此很难使用单一的评价指标衡量所有任务的性能,所以针对不同类型的任务,往往采用不同的评价方法。对评价方法的准确把握,有助于深入理解各项自然语言处理任务。准确率(Accuracy)是最简单、直观的评价指标,经常被应用于文本分类等问题。其计算公式为:

但是,并非全部的序列标注问题都可以采用准确率进行评价,如在将分词、命名实体识别等序列分割问题转化为序列标注问题后,就不应该使用准确率进行评价。以命名实体识别为例,如果采用按词计算的准确率,则很多非命名实体(相应词对应的类别为O)也被计入准确率的计算之中。另外,如果错标了部分词,那么命名实体识别结果就是错误的,但是按照词准确率计算的话,仍然有部分词被认为分类正确了。如下图中的例子所示,按照词(此处为汉字)计算,在8个输入词中,仅仅预测错了1个(三),则准确率为7 /8 = 0.875,这显然是不合理的。分词等其他序列分割问题的评价也存在类似的问题。

那么,如何更合理地评价序列分割问题的性能呢?这就需要引入F值(F-Measure或F-Score)评价指标,其是精确率(Precision)和召回率(Recall)的加权调和平均,具体公式为:

在命名实体识别问题中,精确率和召回率的定义分别为:
P = 正确识别命名的实体数目/识别出命名实体的总数
R = 正确识别命名的实体数目 /测试文本中命名实体的总数
仍以上图中的示例为例,其中,“正确识别的命名实体数目”为1(“哈尔滨”),“识别出的命名实体总数”为2(“张”和“哈尔滨”),“测试文本中命名实体的总数”为2(“张三”和“哈尔滨”),那么此时精确率和召回率皆为1 /2 = 0.5,最终的F 1 = 0.5。与基于词计算的准确率(0.875)相比,该值更为合理了。
理解了准确率和F值两种评价指标的区别和联系后,就可以很容易地为一个自然语言处理任务选择合适的评价指标。例如,在评价依存句法分析时(分析结果是一棵句法依存树),由于正确的标注结果为每个词都赋予了一个正确的父节点,因此可以使用以词为单位的准确率对依存句法分析结果进行评价,以表明有多大比例的词正确地找到了父节点。不过,评价指标通常不被直接称作准确率,而使用UAS(Unlabeled Attachment Score)指标,即词的父节点被正确识别的准确率。另外,在考虑一个词与父节点的关系时,则使用LAS(Labeled Attachment Score)指标进行评价,即词的父节点以及与父节点的句法关系都被正确识别的准确率。而在对语义依存图任务进行评价时,由于每个词的父节点的个数不确定,则无法使用准确率进行评价,此时就需要使用F值了,即以图中的弧为单位,计算其识别的精确率和召回率,然后计算F值。与依存句法分析一样,F值也分为考虑语义关系和不考虑语义关系两种情况。类似地,短语结构句法分析也无法使用准确率进行评价,可以使用句法结构中包含短语(包括短语类型及短语所覆盖的范围)的F值进行评价。

虽然准确率和F值可以用来对标准答案比较明确的任务进行评价,但是很多自然语言处理问题的答案并不明确,或者说并不唯一。如《自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)》中介绍的语言模型问题,在给定历史文本预测下一个词时,除了在语料库中出现的词,还有许多其他词也是合理的。因此,不能简单地使用准确率进行评价,所以才引入了困惑度这一评价指标。对机器翻译系统的评价也类似,测试数据中的参考译文并非唯一正确的答案,目标语言翻译结果只要与源语言语义相同,其表达方式可以非常的灵活。BLEU值是最常用的机器翻译自动评价指标,其计算方法是统计机器译文与参考译文(可以不止一个)中N-gram匹配的数目占机器译文中所有N-gram总数的比率,即N-gram的精确率。其中N 的取值不易过大,也不易过小。过大的N 会导致机器译文与参考译文中共现的N-gram过少,而过小的N会无法衡量机器译文中词语的顺序信息,所以一般N最大取4。另外,由于此评价方法仅考虑了精确率,而忽视了召回率,所以其倾向于较短的翻译。因此,BLEU值引入了一个长度惩罚因子,鼓励机器译文中单词数目尽量接近参考译文中的数目。最终,BLEU值的区间是0~1,得分越高表明机器翻译系统的译文质量越好。

对人机对话系统的评价,虽然也可以利用历史上人人对话数据,采用BLEU值等指标,但是由于回复的开放性,这种自动评价的结果很难保证公正、客观。因为与机器翻译类似,人机对话系统的机器回复也没有唯一的标准答案,但比机器翻译评价更困难的是,人机对话系统的回复甚至都没有需要与输入语义相同这一约束,也就是说人机对话系统的答案是开放式的。此外,由于对话的交互性,不能简单地通过一轮人机对话就对系统进行评价。以上这些问题都给人机对话系统的自动评价带来了极大的挑战。因此,在评价一个人机对话系统时,往往采用人工评价的方式,即通过人与系统进行多轮对话后,最终给出一个总的或多个维度(流畅度、相关度和准确性等)的主观分数。由于评分的主观性,人工评价的一致性往往又比较低,也就是说不同人打分可能差异比较大,为了消除这种差异性,又需要多人进行评价并最终取一个平均分数。因此,人工评价的代价往往非常高,很难在系统开发的过程中多次进行。综上,人机对话系统的评价方法仍是目前自然语言处理领域一个非常棘手的开放性问题,并没有很好地被解决。

参考文献:
[1] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[2] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[3] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[4] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[5] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.