NLP 基础解析 — Bleu Score 和 WER Metrics

用通俗易懂的语言介绍 NLP 模型的两个基本指标(Bleu Score 和 Word Error Rate)
NLP 基础解析 — Bleu Score 和 WER Metrics

大多数 NLP 应用程序(例如机器翻译、聊天机器人、文本摘要和语言模型)都会生成一些文本作为输出。此外,图像字幕或自动语音识别(即语音转文本)等应用程序也会输出文本,尽管它们可能不被视为纯 NLP 应用程序。

预测的输出有多好?

在训练这些应用程序时常见的问题是我们如何判断输出有多“好”?

对于图像分类等应用,可以将预测类别与目标类别进行明确比较,以决定输出是否正确。然而,对于输出为句子的应用,问题就复杂得多。

在这种情况下,我们并不总是有一个普遍正确的答案——我们可能有很多正确答案。例如,在翻译一个句子时,两个不同的人可能会得出两个略有不同的答案,但这两个答案都是完全正确的。

例如,“The ball is blue” and “The ball has a blue color”.。

对于图像字幕或文本摘要等应用来说,问题变得更加困难,因为可接受的答案范围甚至更大。

NLP 基础解析 — Bleu Score 和 WER Metrics
同一张图片可以有多个有效标题

为了评估模型的性能,我们需要一个定量指标来衡量其预测的质量。

在本文中,将介绍两个主要的 NLP 指标,您可能会在 NLP 模型中经常使用它们。

NLP 指标

多年来,人们开发了许多不同的 NLP 指标来解决这一问题。其中最流行的指标之一就是 Bleu Score。

它远非完美,而且有很多缺点。但它计算和理解起来很简单,而且有几个引人注目的优点。尽管它有很多替代方案,但它仍然是最常用的指标之一。

它基于这样的思想:预测的句子越接近人类生成的目标句子就越好。

Bleu 分数介于 0 到 1 之间,0.6 或 0.7 的分数被认为是您能达到的最好分数。即使是两个人也可能对同一个问题想出不同的答案,并且很少能实现完美匹配。因此,在实践中,接近 1 的分数是不切实际的,应该提醒您模型过度拟合了。

在我们了解如何计算 Bleu 分数之前,让我们先了解两个概念,即 N-gram 和准确率。

N 元语法

“n-gram” 实际上是常规文本处理中广泛使用的概念,并非特定于 NLP 或 Bleu Score。它只是描述“句子中一组连续的‘n’个单词”的一种花哨方式。

例如,在句子“球是蓝色的”中,我们可以有如下 n-gram:

  • 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。

精度

该指标衡量预测句子中同时出现在目标句子中的单词数量。

假设我们有:

  • 目标句子:He eats an apple
  • 预测句子:He ate an apple

我们通常使用以下公式计算精度:

精度 = 预测正确的单词数 / 预测的单词总数

精度 = 3/4

但这样使用精度还不够好,我们还需要处理两种情况。

重复

第一个问题是,这个公式允许我们作弊。我们可以预测一个句子:

  • 目标句子:He eats an apple
  • 预测句子:He He He

并获得完美的 精度 = 3 / 3 = 1

多个目标句子

其次,正如我们已经讨论过的,表达同一句话有很多种正确的方法。在许多 NLP 模型中,我们可能会得到多个可接受的目标句子,以捕捉这些不同的变化。

我们使用修改后的精度公式来解释这两种情况,我们称之为“裁剪精度”。

裁剪精度

让我们通过一个例子来了解它是如何工作的。

假设我们有以下句子:

  • 目标句 1:He eats a sweet apple
  • 目标句 2:He is eating a tasty apple
  • 预测句子:He He He eats tasty fruit

我们现在做了两件不同的事情:

  • 将预测句子中的每个单词与所有目标句子进行比较,如果单词与任何目标句子匹配,则认为它是正确的。
  • 将每个正确单词的计数限制为该单词在目标句子中出现的最大次数,这有助于避免重复问题。
NLP 基础解析 — Bleu Score 和 WER Metrics
裁剪精度

例如,“He”这个词在每个目标句子中只出现一次。因此,即使“He”在预测句子中出现了三次,我们也会将计数“削减”为 1,因为这是任何目标句子中的最大计数。

裁剪精度 = 裁剪的正确预测词数 / 总预测词数

裁剪精度 = 3 / 6

注意:在本文的其余部分,我们将仅使用“精度”来表示“裁剪精度”。

我们现在准备继续计算 Bleu 分数。

Bleu 分数是如何计算的?

假设我们有一个 NLP 模型,它会产生如下所示的预测句子。为简单起见,我们只取一个目标句子,但如上例所示,多个目标句子的过程非常相似。

  • 目标句子:The guard arrived late because it was raining
  • 预测句子:The guard arrived late because of the rain

第一步是计算 1-gram 到 4-gram 的精度。

精度 1-gram

使用刚刚讨论过的裁剪精度方法。

精度 1-gram = 预测正确的 1-gram 数量 / 预测的 1-gram 总数

NLP 基础解析 — Bleu Score 和 WER Metrics

因此,精度 1-gram(p₁)= 5 / 8

精度 2-gram

精度 2-gram = 预测正确的 2-gram 数量 / 预测的 2-gram 总数

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

NLP 基础解析 — Bleu Score 和 WER Metrics

因此,精度 2-gram ( p₂ ) = 4 / 7

精度 3-gram

类似地,精度 3-gram(p₃)= 3 / 6

NLP 基础解析 — Bleu Score 和 WER Metrics

精度 4-gram

并且,精度 4-gram(p₄)= 2 / 5

NLP 基础解析 — Bleu Score 和 WER Metrics

几何平均精度

接下来,我们使用以下公式将这些精度得分结合起来。这可以根据不同的 N 值和不同的权重值来计算。通常,我们使用N = 4和均匀权重wₙ = N / 4

NLP 基础解析 — Bleu Score 和 WER Metrics

简洁惩罚

第三步是计算“简洁惩罚”。

如果您注意到精度是如何计算的,我们可以输出一个由单个单词组成的预测句子,例如“The”或“late”。为此,1-gram 精度将是 1/1 = 1,表示满分。这显然具有误导性,因为它鼓励模型输出更少的单词并获得高分。

为了抵消这一点,“简洁惩罚”会对太短的句子进行惩罚。

NLP 基础解析 — Bleu Score 和 WER Metrics
  • c 是预测长度 = 预测句子中的单词数
  • r 是目标长度 = 目标句子中的单词数

这样可以确保简洁惩罚不会大于 1,即使预测的句子比目标长得多。而且,如果你预测的单词很少,这个值就会很小。

在此示例中,c = 8,r = 8,这意味着简洁性惩罚 = 1

Bleu 分数

最后,为了计算 Bleu 分数,我们将简洁性惩罚与精确度分数的几何平均值相乘。

NLP 基础解析 — Bleu Score 和 WER Metrics

可以根据不同的 N 值计算 Bleu 分数。通常,我们使用 N = 4。

  • BLEU-1 使用一元精度分数
  • BLEU-2 使用一元词和二元词精度的几何平均值
  • BLEU-3 使用一元组、二元组和三元组精度的几何平均值
  • 等等。

如果你查看互联网上的不同资源,你可能还会遇到稍微不同的编写 Bleu 分数公式的方法,但这在数学上是等效的。

NLP 基础解析 — Bleu Score 和 WER Metrics
Bleu Score 公式(作者提供图片)

使用 Python 实现 Bleu 评分

实际上,你很少需要自己实现 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 的工作原理,还有几点我们需要注意。

Bleu 分数是根据语料库而不是单个句子计算的

虽然我们使用了匹配单句的示例,但 Bleu 分数是通过将整个预测语料库的文本作为一个整体来计算的。

因此,你不能对语料库中的每个句子分别计算 Bleu 分数,然后以某种方式计算这些分数的平均数。

Bleu Score 的优势

Bleu Score 如此受欢迎的原因在于它有几个优势:

  • 计算快捷,易于理解
  • 它与人类评价同一文本的方式相对应
  • 它与语言无关,因此可以直接应用于你的 NLP 模型
  • 当你有多个基本事实句子时,就可以使用它
  • 它的用途非常广泛,这使得将你的结果与其他工作进行比较变得更容易

Bleu Score 的缺点

尽管 Bleu Score 很受欢迎,但它也因一些缺陷而受到批评:

  • 它不考虑单词的含义。人类完全可以接受使用具有相同含义的不同单词,例如使用“watchman”而不是“guard”。但 Bleu Score 认为这是一个不正确的单词。
  • 它只查找精确匹配的单词。有时可以使用同一个单词的不同变体,例如“rain”和“raining”,但 Bleu Score 会将其视为错误。
  • 它忽略了单词的重要性。使用 Bleu Score 时,与句子相关性较低的错误单词(如“to”或“an”)的惩罚与对句子意义有重大贡献的单词的惩罚一样严重。
  • 它不考虑单词的顺序,例如,句子“The guard arrived late because of the rain”和“The rain arrived late because of the guard”会得到相同的(单词)Bleu 分数,尽管后者完全不同。

语音转文本应用程序使用WER,而不是 Bleu 分数

虽然自动语音识别模型也会输出文本,但目标句子没有歧义,通常不需要解释。在这种情况下,Bleu Score 并不是理想的指标。

这些应用程序通常使用的指标是单词错误率 (WER) 或其同类指标字符错误率 (CER)。它逐字(或逐字符)比较预测输出和目标转录本,以找出它们之间的差异数量。

差异可能是成绩单中存在但在预测中缺失的单词(算作删除),成绩单中没​​有但已添加到预测中的单词(插入),或者预测和成绩单之间发生改变的单词(替换)。

NLP 基础解析 — Bleu Score 和 WER Metrics
计算转录本和预测之间的插入、删除和替换

度量公式相当简单,它是差异占单词总数的百分比。

NLP 基础解析 — Bleu Score 和 WER Metrics

WER 计算基于 Levenstein 距离,它测量两个单词之间的差异。

尽管 WER 是语音识别中最广泛使用的指标,但它也有一些缺点:

  • 它没有区分对于句子含义重要的词语和不太相关的词语。
  • 在比较单词时,它不会考虑两个单词是否只有一个字符不同,或者完全不同。

结论

希望这能让你了解 NLP 的两个最重要的指标及其优缺点。

© 版权声明

相关文章