В чем разница между mteval-v13a.pl и NLTK BLEU?
Существует реализация BLEU Score в Python NLTK, nltk.translate.bleu_score.corpus_bleu
Но я не уверен, что он такой же, как скрипт mtevalv13a.pl.
В чем разница между ними?
1 ответ
Короче
Нет, BLEU в NLTK - это не то же самое, что mteval-13a.perl
,
Но это может быть очень близко, см. https://github.com/nltk/nltk/issues/1330
nltk.translate.corpus_bleu
соответствуетmteval-13a.pl
до 4-го порядка ngram с некоторыми расхождениями с плавающей точкой
Подробную информацию о сравнении и используемом наборе данных можно скачать по https://github.com/nltk/nltk_data/blob/gh-pages/packages/models/wmt15_eval.zip или:
import nltk
nltk.download('wmt15_eval')
Основные отличия:
В длинном
Есть несколько различий между mteval-13a.pl
а также nltk.translate.corpus_bleu
:
Первое отличие заключается в том, что
mteval-13a.pl
поставляется с собственным токенизатором NIST, в то время как версия BLEU для NLTK является реализацией метрики и предполагает, что входные данные предварительно токенизированы.- Кстати, этот постоянный PR ликвидирует разрыв между токенайзерами NLTK и NIST
Другое важное отличие состоит в том, что
mteval-13a.pl
ожидает, что вход будет в.sgm
формат, в то время как NLTK BLEU принимает список списков строк в python, см. README.txt в zipball здесь для получения дополнительной информации о том, как преобразовать текстовый файл в SGM.mteval-13a.pl
ожидает порядка ngram по крайней мере 1-4. Если минимальный порядок ngram для предложения / корпуса меньше 4, он вернет 0 вероятность, которая являетсяmath.log(float('-inf'))
, Чтобы подражать этому поведению, в NLTK есть_emulate_multibleu
флаг:mteval-13a.pl
может генерировать оценки NIST, в то время как NLTK не имеет реализации оценки NIST (по крайней мере, пока)- Оценка NIST в NLTK будет в этом PR
Помимо различий, оценки NLTK BLEU упакованы в большее количество функций:
для обработки дополнительных случаев, которые первоначальный BLEU (Papineni, 2002) упустил из виду
Кроме того, для обработки дополнительных случаев, когда наибольший порядок Ngram составляет < 4, равномерные веса индивидуальной точности Ngram будут повторно взвешиваться таким образом, чтобы масса весов составляла 1,0
в то время как NIST имеет метод сглаживания для геометрического сглаживания последовательности, NLTK имеет эквивалентный объект с тем же методом сглаживания и еще более сглаживающими методами для обработки уровня предложений BLEU от Chen and Collin, 2014
Наконец, для проверки функций, добавленных в версию BLEU от NLTK, к их учетным записям добавлен регрессионный тест, см. https://github.com/nltk/nltk/blob/develop/nltk/test/unit/translate/test_bleu.py