NLP领域中BeluScore直观解释

文摘   科技   2024-09-21 14:45   江苏  
点击蓝字
 
关注我们










01


引言



大多数NLP领域中的应用(如机器翻译、聊天机器人、文本摘要和语言模型)都会生成一些文本作为其输出。此外,图像描述或语音到文本转换等应用也会输出文本,尽管它们可能不被视为纯粹的 NLP 应用。
今天我们来讲些如何来评价这些文本输出的质量,闲话少说,我们直接开始吧!






02


预测结果的好坏


在训练这些应用程序时,常见的问题是我们如何判断这些输出的 "好坏"?
在图像分类等应用中,可以将预测类别与目标类别进行明确比较,以确定输出是否正确。然而,对于输出为句子的应用,问题就棘手得多。
在这种情况下,我们并不总是有一个普遍正确的答案--我们可能有许多正确的答案。例如,在翻译一个句子时,两个不同的人可能会得出两个略有不同的答案,而这两个答案都是完全正确的。比如:“The ball is blue” “The ball has a blue color”。
在图像文本描述任务或文本摘要生成等应用中,这个问题就更难解决了,因为在这些应用中,可接受答案的范围更大。

同一张图片可以有多个有效的文本描述

为了评估模型的性能,我们需要一个量化指标来衡量其预测质量。在本文中,我将介绍NLP中最常用的一个指标- Bleu Score。

在了解 Bleu Score 的计算方法之前,我们先来了解两个概念,即 N-grams 和 Precision。





03


 NLP指标


多年来,为了解决这一问题,人们开发了许多不同的NLP指标。其中最流行的一种称为 "Bleu Score"。它远非完美,也有许多缺点。但是,它易于计算和理解,并具有一些令人信服的优点。尽管它有许多替代品,但仍是最常用的指标之一。

该指标所基于的理念是,预测的句子越接近人类生成的目标句子,其效果就越好。Bleu 分数介于 0 和 1 之间。0.6 或 0.7 分被认为是最好的分数。对于一个问题,即使是两个人也可能会提出不同的句子变体,很少会达到完全匹配。因此,在实践中,接近 1 的分数是不现实的,此时应该警惕训练的模型已经过拟合了。
在继续了解 Bleu Score 的计算方法之前,我们先来了解两个概念,即 N-grams 和 Precision。






04


  N-gram


N-gram实际上是一个在常规文本处理中广泛使用的概念,并非 NLP 或 Bleu Score 所特有。它只是描述一个句子中n个连续单词的集合 的一种花哨的方式。
例如,在句子 "The ball is blue"中,我们可以得到这样的 n-grams:
  • 1-gram : “The”, “ball”, “is”, “blue”

  • 2-gram : “The ball”, “ball is”, “is blue”

  • 3-gram: “The ball is”, “ball is blue”

  • 4-gram: “The ball is blue”

请注意,N-gram 中的单词是按顺序排列的,因此 "blue is The ball "不是一个有效的 4-gram 。




05


  Precision


该指标用来衡量预测句中出现在目标句中的单词数量。比方说,我们来看个例子:
  • Target Sentence: He eats an apple
  • Predicted Sentence: He ate an apple

我们通常使用公式计算精确度Precision:

Precision = Number of correct predicted words / Number of total predicted words

因此上述例子中的Precision的计算为:

Precision = 3 / 4

但是,这样使用 Precision 还不够好。我们还需要处理两种特殊情况。
  • 重复

第一个问题是,这个公式允许我们作弊。我们可以预测一个句子:
  • Target Sentence: He eats an apple
  • Predicted Sentence: He He He
此时我们套入上面的计算公式,可以得到完美的Precision

Precision = 3 / 3 = 1

  • 多个目标语句

其次,正如我们已经讨论过的,同一个句子有许多正确的表达方式。在许多 NLP 模型中,我们可能会得到多个可接受的目标句子,以捕捉这些不同的变化。
我们使用修改后的Precision公式来考虑这两种情况,我们称之为 "Clipped Precision"。





06


  Clipped Precision

让我们通过一个例子来了解它是如何工作的。比方说,我们有如下句子:
  • Target Sentence 1: He eats a sweet apple
  • Target Sentence 2: He is eating a tasty apple

  • Predicted Sentence: He He He eats tasty fruit
我们现在有两个不同的做法:
  • 我们将预测句子中的每个单词与所有目标句子进行比较。如果该词与任何目标句子匹配,则认为该词是正确的。
  • 我们将每个正确单词的计数限制为该单词在目标句中出现的最多次数。这有助于避免重复问题。这一点将在下文中更加明确。

Clipped Precision
例如,单词he在每个目标句中只出现一次。因此,即使he在预测句中出现了三次,我们也会将其 "clip"为一次,因为这是任何目标句中的最大次数。

Clipped Precision = Clipped number of correct predicted words / Number of total predicted words

因此上述例子种的clipped_precision的计算如下:

Clipped Precision = 3 / 6

注:在本文的其余部分,我们将只使用precision来表示clipped precision。

好了,我们可以开始计算 Bleu 分数了。





07


  计算N-gram

假设我们有一个 NLP 模型,它能生成如下预测句子。为简单起见,我们将只使用一个目标句,但与上面的例子一样,使用多个目标句的过程也非常相似。
  • Target Sentence: The guard arrived late because it was raining
  • Predicted Sentence: The guard arrived late because of the rain

第一步是计算 1-gram 到 4-gram 的Precision分数。

  • Precision 1-gram

我们使用的是刚才讨论过的 "clipped precision"方法。

Precision 1-gram = Number of correct predicted 1-grams / Number of total predicted 1-grams

因此,上述精度计算如下:

1-gram (p₁) = 5 / 8

  • Precision 2-gram

Precision 2-gram = Number of correct predicted 2-grams / Number of total predicted 2-grams

让我们看看预测句子中的所有 2-grams :

因此,上述精度计算如下:

2-gram (p₂) = 4 / 7

  • Precision 3-gram

同样,我们看看预测句子中的所有 3-grams :

因此,上述精度计算如下:

3-gram (p₃) = 3 / 6

  • Precision 4-gram

同样,我们看看预测句子中的所有 4-grams :

因此,上述精度计算如下:

4-gram (p₄) = 2 / 5




08


  求几何平均

接下来,我们用下面的公式将这些precision得分合并起来。这可以根据不同的 N 值和权重值来计算。通常情况下,我们使用 N = 4 和统一权重 wₙ = N / 4

接着是计算 Brevity Penalty:

如果大家注意到precision的计算方法,我们可以输出一个由 "The "或 "late "等单词组成的预测句子。这样,1-gram Precision 就是 1/1 = 1,表示满分。这显然是一种误导,因为它鼓励模型输出更少的单词来获得高分。
为了弥补这一点,我们引入Brevity Penalty来对过于简短的句子进行惩罚。

  • c is predicted length: 预测句子中的单词数
  • r is target length 目标句子中的单词数
这就确保了即使预测的句子比目标句子长很多,Brevity Penalty也不会大于 1。而且,如果预测的字数很少,这个值也会很小。
在本例中,c = 8,r = 8,这意味着Brevity Penalty = 1






09


  Bleu Score

最后,为了计算Bleu Score,我们将Brevity Penalty与Precision Scores 的几何平均数相乘。

通常情况下,我们使用 N = 4。
  • BLEU-1 使用单字符精确度得分
  • BLEU-2 使用单字符和双字符精度的几何平均数
  • BLEU-3 使用单字符、双字符和三字符精度的几何平均数
  • 其他以此类推
如果您查看互联网上的不同资源,您可能还会遇到略有不同的Bleu Score公式的书写方式,但在数学上是等价的。






10


  Python实现

在实践中,大家很少需要自己实现 Bleu Score 算法。nltk 库是一个非常有用的 NLP 功能库,它提供了 Bleu Score 的实现。
from nltk.translate.bleu_score import corpus_bleu
references = [[['my', 'first', 'correct', 'sentence'], ['my', 'second', 'valid', 'sentence']]]candidates = [['my', 'sentence']]score = corpus_bleu(references, candidates)
既然我们已经知道了 Bleu Score 的工作原理,那么还有几点值得注意。



11


  优缺点

Bleu Score 之所以如此受欢迎,是因为它有以下几大优势:
  • 它计算过程简单,易于理解。
  • 它与人类评价同一文本的方式一致。
  • 重要的是,它与语言无关,因此可直接应用于您的 NLP 模型。

  • 当大家有一个以上的GT句子时,就可以使用它。

相应的该指标的缺点总结如下:
  • 它不考虑词语的含义。人类完全可以接受使用相同含义的不同词语,例如使用 watchman代替guard。但 Bleu Score 却认为这是一个不正确的词。
  • 它只查找完全匹配的单词。有时会使用同一个词的变体,例如rain和raining,但 Bleu Score 将其视为错误。

  • 它忽视了词语的重要性。在 Bleu Score 中,像to或 an这样与句子关系不大的预测错误的词语与对句子意义有重大影响的词语一样会受到严重的惩罚。





12


  总结

本文重点介绍了NLP领域中评价模型好坏的最常用的指标Bleu Score,该指标的相关概念和相应的计算过程,希望这能让大家了解 NLP的评价指标及其利弊。



您学废了嘛?






点击上方小卡片关注我




添加个人微信,进专属粉丝群!


AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
 最新文章