Баллы BLEU: могу ли я использовать nltk.translate.bleu_score.sentence_bleu для расчета баллов bleu на китайском языке

Если у меня есть список китайских слов: например, reference = ['我', '是', '好','人'], гипотеза = ['我', '是', '善良的','人] . Могу ли я использовать: nltk.translate.bleu_score.sentence_bleu(ссылки, гипотезы) для перевода на китайский язык? это так же, как английский? Как насчет японского? Я имею в виду, если у меня есть список слов (китайский и японский), как английский. Спасибо!

1 ответ

Решение

TL;DR

Да.


В длинном

Балл BLEU измеряет n-граммы и его независимость от языков, но зависит от того, могут ли языковые предложения разбиваться на токены. Так что да, это может сравнить китайский / японский...

Обратите внимание на предостережения от использования баллов BLEU на уровне предложений. BLEU никогда не создавался с учетом сравнения уровней предложений, вот хорошее обсуждение: https://github.com/nltk/nltk/issues/1838

Скорее всего, вы увидите предупреждение, когда у вас есть действительно короткие предложения, например,

>>> from nltk.translate import bleu
>>> ref = '我 是 好 人'.split()
>>> hyp = '我 是 善良的 人'.split()
>>> bleu([ref], hyp)
/usr/local/lib/python2.7/site-packages/nltk/translate/bleu_score.py:490: UserWarning: 
Corpus/Sentence contains 0 counts of 3-gram overlaps.
BLEU scores might be undesirable; use SmoothingFunction().
  warnings.warn(_msg)
0.7071067811865475

Вы можете использовать функции сглаживания в https://github.com/alvations/nltk/blob/develop/nltk/translate/bleu_score.py для преодоления коротких предложений.

>>> from nltk.translate.bleu_score import SmoothingFunction
>>> smoothie = SmoothingFunction().method4
>>> bleu([ref], hyp, smoothing_function=smoothie)
0.2866227639866161
Другие вопросы по тегам