← Назад к вопросам

В чем разница между BLEU и ROUGE?

2.0 Middle🔥 211 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

BLEU и ROUGE: ключевые метрики оценки текста

BLEU (Bilingual Evaluation Understudy) и ROUGE (Recall-Oriented Understudy for Gisting Evaluation) — это две наиболее распространённые метрики автоматической оценки качества текста, генерируемого нейросетевыми моделями. Несмотря на схожее назначение, они используются в разных задачах и имеют существенные различия.

BLEU — метрика для машинного перевода

BLEU изначально разработана для оценки качества машинного перевода. Она измеряет точность (precision) — насколько хорошо сгенерированный текст совпадает с эталонным переводом.

Как работает:

  • Сравнивает n-граммы (последовательности из n слов) в сгенерированном тексте с эталонными
  • Вычисляет долю совпадающих n-грамм (обычно 1-4 граммы)
  • Применяет штраф за краткость (brevity penalty), если сгенерированный текст короче эталона
  • Результат — значение от 0 до 1 (часто выражается в процентах)
from nltk.translate.bleu_score import sentence_bleu

reference = [[the, cat, sat, on, the, mat]]
candidate = [the, cat, sat, on, mat]

bleu_score = sentence_bleu(reference, candidate)
print(f"BLEU: {bleu_score:.4f}")  # ~0.7847

Особенности BLEU:

  • Точность в фокусе — штрафует за лишние слова
  • Требует нескольких эталонных текстов для надёжности
  • Хорошо работает для близких по структуре текстов

ROUGE — метрика для суммаризации и переформулирования

ROUGE разработана для оценки качества автоматического суммаризирования текстов. Она измеряет полноту (recall) — насколько хорошо сгенерированный текст содержит важную информацию из эталона.

Как работает:

  • Сравнивает n-граммы, но в обратном направлении: какая доля эталонных n-грамм присутствует в сгенерированном тексте
  • ROUGE-N — перекрытие n-грамм
  • ROUGE-L — самая длинная общая подпоследовательность (LCS), учитывает структуру
  • ROUGE-W — взвешенная LCS
from rouge_score import rouge_scorer

hypothesis = "the cat sat on the mat"
reference = "the cat sat on the floor"

scorer = rouge_scorer.RougeScorer([rouge1, rougeL], use_stemmer=True)
scores = scorer.score(reference, hypothesis)

print(f"ROUGE-1: {scores[rouge1].fmeasure:.4f}")
print(f"ROUGE-L: {scores[rougeL].fmeasure:.4f}")

Особенности ROUGE:

  • Полнота в фокусе — штрафует за пропущенные элементы
  • Хорошо работает для суммаризации, где главное — сохранить основную информацию
  • Менее строга к переформулировкам

Сравнительная таблица

ПараметрBLEUROUGE
Основная метрикаPrecision (точность)Recall (полнота)
Основное применениеМашинный переводСуммаризация, переформулирование
N-граммыОбычные n-граммыN-граммы, LCS
ЧувствительностьК лишним словамК пропущенным словам
Направление сравненияСколько из кандидата совпадает с эталономСколько из эталона содержится в кандидате

Практическое применение

Выбирайте BLEU, когда:

  • Оценивается машинный перевод
  • Важна точность и близость к эталону
  • Структура текста должна быть похожа

Выбирайте ROUGE, когда:

  • Оценивается суммаризация или переформулирование
  • Допускаются перефразировки
  • Главное — сохранить всю важную информацию

На практике часто используют комбинацию обеих метрик, чтобы получить полную картину качества генерации.