Метод 7 NLTK remace_bleu дает оценки выше 1
При использовании НЛТК sentence_bleu
функция в сочетании с SmoothingFunction
метод 7, максимальная оценка 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
Я делаю что-то не так, это ожидаемое поведение или есть ошибка в реализации функции сглаживания?
1 ответ
Похоже, что эта реализация по крайней мере согласуется с Chen и Cherry, 2014. Они предложили усреднить n-1, n, n+1
-грамм считается. Также определено m0_prime
как m1 + 1
(так что в нашем случае это будет 2, и это нарушает наши вычисления).
я использую 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
и так далее.