NLP评价指标—BLEU&ROUGE

写在前面

在LLM横行的时代用如此古老的评价指标评价显然是不合适的,但是从学习的角度还是十分有意义,本文旨在总结网上的资料、论文和自己的理解,在此记录。

太长不看:总结

BLEU(Bilingual Evaluation Understudy)最早应用于统计语言模型的机器翻译效果评估,该方法快速、廉价且独立于语言,与人类评估高度相关。Bleu实现的主要任务是将生成翻译的n-gram与参考翻译的n-gram进行比较并计算匹配的数量 。这些匹配与位置无关。匹配越多,候选翻译越好。

ROUGE(Recall Oriented Understudy for Gisting Evaluation)可以理解为BLEU指标的改进版,它们均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。Rouge其实是一组评价指标的统称,包含Rouge-N, Rouge-L, Rouge-W, Rouge-S四个指标。

准备知识:N-gram语言模型

生成式语言模型其实在做的是文字接龙的任务 ------《生成式导论2024》李宏毅

试想一下在你在说出一句话/一段话/一篇文章的时候,不可能在说出第一字的时候就想到了最后一个字/词,我们在说出下一句时都会思考前文部分或全部词句。N-gram语言模型(早期NLP语言模型,是一种统计语言模型,与现在的GPT、Bert等神经网络语言模型相对)也是如此,它的本质是一个概率预测模型,下一个词的出现依赖于前文若干个词,N-gram中的N即考虑的前文单词数。N-gram语言模型有两大应用:

  • 机器翻译:基于一定的语料,对任意的词序列计算出该序列是一句话的概率。
  • 文本生成:基于一定的语料,给定部分词序列,语言模型生成/预测接下来的词序列。

可以看到两个任务都需要基于语料训练,这也带来了N-gram语言模型的致命问题:如果词序列没有在训练集出现过,模型输出该词序列的概率为0。 这意味着训练N-gram语言模型需要海量的语料,且无法预测未知,即现在的生成能力。

上文提到N-gram中的N是考虑的前文单词数,在英文下一般按照空格分词,在中文下需要特定的分词工具。 N=1时又称unigram,N=2时又称bigram,N=3时又称trigram。

N-gram result
1-gram OpenAI, is, an, artificial, intelligence, company
2-gram OpenAI is, is an, an artificial, artificial intelligence, intelligence company
3-gram OpenAI is an, is an artificial, an artificial intelligence, artificial intelligence company
N-gram result
1-gram OpenAI, 是, 一家, 人工智能, 公司
2-gram OpenAIs/是, 是/一家, 一家/人工智能, 人工智能/公司
3-gram OpenAI/是/一家, 是/一家/人工智能, 一家/人工智能/公司

BLEU(Bilingual Evaluation Understudy)

基本原理

The primary programming task for a BLEU implementor is to compare n-grams of the candidate with the n-grams of the reference translation and count the number of matches.

It appears that any single n-gram precision score can distinguish between a good translation and a bad translation.To be useful, however, the metric must also reliably distinguish between translations that do not differ so greatly in quality.

从论文原文可以看出,BLEU实现的主要任务是将生成翻译的n-gram与参考翻译的n-gram进行比较并计算匹配的数量 。而且作者认为在机器翻译质量评估任务中,区分非常好和非常差的翻译质量是很容易的,难点是如何区分没那么好和没那么差的翻译质量,这也是BLEU-score被提出以及拓展的目的。对于优化,作者主要做了三件事:

  1. 引入截断因子对模型产生大量重复单词做出惩罚。
  2. 从最初的unigram单独计算分数,扩展到1-gram~4-gram加权计算得分。
  3. 引入短句惩罚因子:候选翻译如果比最短参考翻译还要短,得分会很低。

下面是BLEU的主要公式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> B L E U = B P ⋅ e x p ( ∑ n = 1 N w n l o g p n ) B P = { 1 , c > r e x p ( 1 − r / c ) , c < = r BLEU=BP·exp(\sum_{n=1}^Nw_nlogp_n) \\ BP=\left\{ \begin{matrix} 1 \quad \quad \quad \quad \ \ \ \ \ , \ c>r\\ exp(1-r/c) \quad , \ c<=r\\ \end{matrix} \right. </math>BLEU=BP⋅exp(n=1∑Nwnlogpn)BP={1 , c>rexp(1−r/c), c<=r

其中

BP:短句惩罚因子

c:候选翻译长度

r:最短参考翻译长度

w_n:n-gram权重

p_n:n-gram匹配度

对于为什么要选择N=4,作者给出上图实验结果。图中深蓝色代表人工翻译(高质量)得分,浅蓝色代表候选翻译(低质量)得分。随着N变大,两者的差距逐渐变大,当N>4时,二者差距变大的程度不明显。当然N=4不是必须的,可以根据实际情况自行调整N值及其对应的权重。1−gram能够反映候选译文中有多少单词被单独翻译出来,代表翻译的充分性;2−gram、3−gram、4−gram值越高说明可读性越好,代表翻译的流畅性。


上图阐述了为什么公式中会有exp(随着N的增加,BLEU-score呈指数下降)。

小结

优点:

  1. 极致的简单粗暴,虽然BLEU公式看起来复杂,但其中蕴含的思想无非是单词/词组级的匹配,通过代码(python调用nltk包)可以实现"不假思索"的给出分数。
  2. 在机器翻译的任务中的评估结果比较接近人类评分。

缺点:

  1. BLEU不考虑语义(近义词),句子结构(倒装句、双重否定句)。
  2. BLEU需要大量高质量的参考翻译,作者建议每条给出4条参考翻译。
  3. BP惩罚因子没有想象中那么强(此条源于网络总结)。
  4. 对于目前评估chat模型结果拉跨。

从BLEU的原理出发,笔者的感受是BLEU并没有真正的评估翻译质量,仅仅是进行语句分割+字符串匹配,对于中文翻译一直奉行的"信达雅"更是不存在。而且BLEU依赖高质量的参考翻译数据集,对于构建这样的数据集是十分昂贵且难以复刻的。

即使BLEU的漏洞如此明显,至今仍为机器翻译任务中的主流指标。自从2002年提出以来,BLEU在机器翻译领域得到了广泛的应用和认可。其广泛使用形成了一个庞大的基准数据集和实验结果,使得研究者能够在一个共同的框架内进行比较和评估。在许多情况下,BLEU与人工评价的相关性仍然较高。特别是在衡量模型的整体改进时,BLEU分数依旧能够反映翻译质量的变化趋势。

Rouge(Recall Oriented Understudy for Gisting Evaluation)

基本原理

在 SMT(统计机器翻译)时代,机器翻译效果稀烂,因此需要同时评价翻译的准确度和流畅度;到 NMT (神经网络机器翻译)时代后,神经网络模型的脑补能力极强,翻译出的结果都是通顺的,但是有时候容易瞎翻译。ROUGE的出现很大程度上是为了解决NMT的漏翻问题(低召回率)。所以 ROUGE 只适合评价 NMT,而不适用于 SMT ,因为它不管候选译文流不流畅。ROUGE指标可以理解为BLEU指标的改进版,它们均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。ROUGE其实是一组评价指标的统称,包含ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S四个指标:

  • ROUGE-N :将BLEU的精确率优化为召回率,在 N-gram 上计算召回率)
  • ROUGE-L:将BLEU的n-gram优化为公共子序列,考虑了机器译文和参考译文之间的最长公共子序列
  • ROUGE-W:将ROUGE-L的连续匹配给予更高的奖励,改进了ROUGE-L,用加权的方法计算最长公共子序列
  • ROUGE-S:Rouge-N的一种扩展,允许n-gram出现跳词(skip)

ROUGE-N没什么可说的,仅仅是把BLEU中的精确率改为召回率(更关注参考翻译被召回的情况)。ROUGE-L则提出一种新的匹配机制------公共子序列LCS(X, Y):

  • 参考翻译(X):OpenAI is an artificial intelligence company.
  • 候选翻译(Y):OpenAI is an great AI company.
  • 最长公共子序列(LCS):OpenAI is an company.

ROUGE-L舍弃了严格的连续序列匹配,允许出现跳词现象。
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> R l c s = L C S ( X , Y ) m P l c s = L C S ( X , Y ) n R o u g e L = F l c s = ( 1 + β 2 ) R l c s P l c s R l c s + β 2 P l c s \begin{aligned} &R_{lcs}={LCS(X,Y) \over m} \\ &P_{lcs}={LCS(X,Y) \over n} \\ &Rouge_L=F_{lcs}={(1+\beta^2)R_{lcs}P_{lcs} \over R_{lcs}+\beta^2P_{lcs}} \end{aligned} </math>Rlcs=mLCS(X,Y)Plcs=nLCS(X,Y)RougeL=Flcs=Rlcs+β2Plcs(1+β2)RlcsPlcs

其中

m:参考翻译长度

n:候选翻译长度

β:超参数,值很大(因此Rouge-L受召回率的影响更大)

ROUGE-W就是所做的工作就是给连续的匹配给到更多的权重,让连续匹配的比非连续匹配的有更高的分数。

ROUGE-S的S表示:Skip-Bigram,允许跳过中间的某些词,同时结合了ROUGE-L的计算方式。

小结

本节着重介绍ROUGE-L,和BLEU一样,ROUGE同样简单粗暴,但BLEU存在的问题ROUGE并没有加以改善。由于更加关注召回率,ROUGE往往被用于评估文本摘要生成任务。

总结

笔者在应用这两个评价指标评估工作中的任务时,最大的感受是生成答案得分普遍较低,得分高的case问题较少,可能表明生成结果的质量相对较好,可以作为大量数据集测试结果的初步筛选方法(至少得分高的问题不大)。指标难以区分不同模型&不同版本生成结果的优劣。分析原因可能是因为:

  1. 参考回答多样性较少:每条问题仅配1条参考回答,且质量不高。
  2. 评估任务较复杂,段落级文本。
  3. 中文分词原因(此条不确定)。

因此,在使用BLEU和ROUGE指标时,参考答案的清洗和扩展至关重要。通过提高参考答案的质量、结合多种评价方法和设计任务定制化指标,可能会更全面、准确地评估生成文本的质量,指导模型优化和任务改进。

论文链接

  1. BLEU | Proceedings of the 40th Annual Meeting on Association for Computational Linguistics (acm.org)
  2. ROUGE: A Package for Automatic Evaluation of Summaries - ACL Anthology

参考文章

  1. 一文带你理解|NLP评价指标 BLEU 和 ROUGE(无公式) - 知乎 (zhihu.com)
  2. 【论文笔记】BLEU: a Method for Automatic Evaluation of Machine Translation-CSDN博客
  3. 评价度量指标之BLEU,METEOR,ROUGE,CIDEr_bleu度量-CSDN博客
  4. BLEU指标及评测脚本使用的一些误解 - 知乎 (zhihu.com)
  5. Understanding MT Quality: BLEU Scores (modernmt.com)
  6. BLEU - a Hugging Face Space by evaluate-metric
相关推荐
萱仔学习自我记录39 分钟前
PEFT库和transformers库在NLP大模型中的使用和常用方法详解
人工智能·机器学习
hsling松子4 小时前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
正在走向自律4 小时前
机器学习框架
人工智能·机器学习
好吃番茄5 小时前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
CV-King5 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
禁默5 小时前
2024年计算机视觉与艺术研讨会(CVA 2024)
人工智能·计算机视觉
whaosoft-1436 小时前
大模型~合集3
人工智能
Dream-Y.ocean6 小时前
文心智能体平台AgenBuilder | 搭建智能体:情感顾问叶晴
人工智能·智能体
丶21366 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
春末的南方城市7 小时前
FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!
人工智能·计算机视觉·stable diffusion·aigc·图像生成