Комментарии (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:
- Полнота в фокусе — штрафует за пропущенные элементы
- Хорошо работает для суммаризации, где главное — сохранить основную информацию
- Менее строга к переформулировкам
Сравнительная таблица
| Параметр | BLEU | ROUGE |
|---|---|---|
| Основная метрика | Precision (точность) | Recall (полнота) |
| Основное применение | Машинный перевод | Суммаризация, переформулирование |
| N-граммы | Обычные n-граммы | N-граммы, LCS |
| Чувствительность | К лишним словам | К пропущенным словам |
| Направление сравнения | Сколько из кандидата совпадает с эталоном | Сколько из эталона содержится в кандидате |
Практическое применение
Выбирайте BLEU, когда:
- Оценивается машинный перевод
- Важна точность и близость к эталону
- Структура текста должна быть похожа
Выбирайте ROUGE, когда:
- Оценивается суммаризация или переформулирование
- Допускаются перефразировки
- Главное — сохранить всю важную информацию
На практике часто используют комбинацию обеих метрик, чтобы получить полную картину качества генерации.