Метод 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 и так далее.

Другие вопросы по тегам