NLTK sentence_bleu 方法 7 给出的分数高于 1
NLTK sentence_bleu method 7 gives scores above 1
当结合SmoothingFunction
方法7使用NLTKsentence_bleu
函数时,最高分是1.1167470964180197
。而 BLEU 分数被定义为介于 0
和 1
之间。
此分数显示为与参考完美匹配。我正在使用方法 7,因为我并不总是有长度为 4 的句子,有些可能更短。使用方法 5 给出相同的结果。其他方法确实给出了 1.0 作为满分。
当我使用单个参考和候选时出现,例如:
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
cc = SmoothingFunction()
reference = ['overofficious 98461 54363 39016 78223 52180']
candidate = 'overofficious 98461 54363 39016 78223 52180'
sentence_bleu(reference, candidate, smoothing_function=cc.method7)
这给出了分数:1.1167470964180197
我是不是做错了什么,这是预期的行为还是平滑函数的实现存在错误?
看起来这个实现至少与 Chen 和 Cherry,2014 年一致。他们建议平均 n-1, n, n+1
克计数。还将 m0_prime
定义为 m1 + 1
(因此在我们的例子中它将是 2,这会破坏我们的计算)。
我正在使用来自 here 的 method5
(它被 method7
使用)。
cc = SmoothingFunction()
references = ['overofficious 98461 54363 39016 78223 52180'.split()]
candidate = 'overofficious 98461 54363 39016 78223 52180'.split()
p_n = [Fraction(1, 1)] * 4
p_n5 = cc.method5(p_n, references, candidate, len(candidate))
输出:
[Fraction(4, 3), Fraction(10, 9), Fraction(28, 27), Fraction(82, 81)]
我们可以这样计算4/3
:(2 + 1 + 1) / 3
; 10/9 = (4/3 + 1 + 1) / 3
等等。
当结合SmoothingFunction
方法7使用NLTKsentence_bleu
函数时,最高分是1.1167470964180197
。而 BLEU 分数被定义为介于 0
和 1
之间。
此分数显示为与参考完美匹配。我正在使用方法 7,因为我并不总是有长度为 4 的句子,有些可能更短。使用方法 5 给出相同的结果。其他方法确实给出了 1.0 作为满分。
当我使用单个参考和候选时出现,例如:
from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction
cc = SmoothingFunction()
reference = ['overofficious 98461 54363 39016 78223 52180']
candidate = 'overofficious 98461 54363 39016 78223 52180'
sentence_bleu(reference, candidate, smoothing_function=cc.method7)
这给出了分数:1.1167470964180197
我是不是做错了什么,这是预期的行为还是平滑函数的实现存在错误?
看起来这个实现至少与 Chen 和 Cherry,2014 年一致。他们建议平均 n-1, n, n+1
克计数。还将 m0_prime
定义为 m1 + 1
(因此在我们的例子中它将是 2,这会破坏我们的计算)。
我正在使用来自 here 的 method5
(它被 method7
使用)。
cc = SmoothingFunction()
references = ['overofficious 98461 54363 39016 78223 52180'.split()]
candidate = 'overofficious 98461 54363 39016 78223 52180'.split()
p_n = [Fraction(1, 1)] * 4
p_n5 = cc.method5(p_n, references, candidate, len(candidate))
输出:
[Fraction(4, 3), Fraction(10, 9), Fraction(28, 27), Fraction(82, 81)]
我们可以这样计算4/3
:(2 + 1 + 1) / 3
; 10/9 = (4/3 + 1 + 1) / 3
等等。