01
引言
02
预测结果的好坏
为了评估模型的性能,我们需要一个量化指标来衡量其预测质量。在本文中,我将介绍NLP中最常用的一个指标- Bleu Score。
在了解 Bleu Score 的计算方法之前,我们先来了解两个概念,即 N-grams 和 Precision。
03
NLP指标
多年来,为了解决这一问题,人们开发了许多不同的NLP指标。其中最流行的一种称为 "Bleu Score"。它远非完美,也有许多缺点。但是,它易于计算和理解,并具有一些令人信服的优点。尽管它有许多替代品,但仍是最常用的指标之一。
04
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 。
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
重复
Target Sentence: He eats an apple Predicted Sentence: He He He
Precision = 3 / 3 = 1
多个目标语句
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 = Clipped number of correct predicted words / Number of total predicted words
因此上述例子种的clipped_precision的计算如下:
Clipped Precision = 3 / 6
注:在本文的其余部分,我们将只使用precision来表示clipped precision。
07
计算N-gram
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
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
求几何平均
接着是计算 Brevity Penalty:
c is predicted length: 预测句子中的单词数 r is target length: 目标句子中的单词数
09
Bleu Score
BLEU-1 使用单字符精确度得分 BLEU-2 使用单字符和双字符精度的几何平均数 BLEU-3 使用单字符、双字符和三字符精度的几何平均数 其他以此类推
10
Python实现
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)
11
优缺点
它计算过程简单,易于理解。 它与人类评价同一文本的方式一致。 重要的是,它与语言无关,因此可直接应用于您的 NLP 模型。
当大家有一个以上的GT句子时,就可以使用它。
它不考虑词语的含义。人类完全可以接受使用相同含义的不同词语,例如使用 watchman代替guard。但 Bleu Score 却认为这是一个不正确的词。 它只查找完全匹配的单词。有时会使用同一个词的变体,例如rain和raining,但 Bleu Score 将其视为错误。
它忽视了词语的重要性。在 Bleu Score 中,像to或 an这样与句子关系不大的预测错误的词语与对句子意义有重大影响的词语一样会受到严重的惩罚。
12
总结
您学废了嘛?
点击上方小卡片关注我
添加个人微信,进专属粉丝群!