Реализация суммаризации текста (Extractive/Abstractive Summarization)
Суммаризация бывает двух принципиально разных типов: экстрактивная (выбор предложений из оригинала) и абстрактивная (генерация нового текста). Выбор зависит от требований к качеству, допустимым галлюцинациям и вычислительным ресурсам.
Экстрактивная суммаризация
Экстракция выбирает наиболее важные предложения из исходного текста без изменения формулировок. Преимущество: нет галлюцинаций — всё взято из оригинала. Недостаток: текст может быть несвязным, теряется контекст между выбранными предложениями.
Методы:
-
TextRank: граф предложений, PageRank-ранжирование.
sumy(Python),pytextrank(spaCy) - Sentence embeddings + clustering: кластеризация предложений по семантике, выбор центроидов
- BERTSum: BERT для scoring предложений по важности
from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer
parser = PlaintextParser.from_string(text, Tokenizer("russian"))
summarizer = TextRankSummarizer()
summary = summarizer(parser.document, sentences_count=5)
Абстрактивная суммаризация
Генерирует новый текст, который может не содержать буквальных фрагментов оригинала. Более читаемый результат, но риск галлюцинаций.
Модели для русского:
-
IlyaGusev/rut5-base-absum— T5 fine-tuned на русских новостях -
IlyaGusev/bart-base-ru-giga— BART для русского - GPT-4o / Claude через промпт — лучшее качество, но дороже и медленнее
Промпт для GPT:
Кратко изложи суть следующего текста в 3–5 предложениях.
Не добавляй информацию, которой нет в тексте.
Сохраняй ключевые факты: цифры, имена, даты.
Текст: {text}
Суммаризация длинных документов
Документы длиннее контекстного окна модели требуют стратегии:
- Map-Reduce: суммаризация по чанкам → финальная суммаризация суммари
- Refine: инкрементальное обновление суммари по мере чтения чанков
- Hierarchical: суммаризация разделов → суммаризация суммарий разделов
Для юридических/технических документов Hierarchical предпочтительнее — сохраняет структуру.
Оценка качества
ROUGE (Recall-Oriented Understudy for Gisting Evaluation): стандартная метрика, измеряет n-gram overlap с эталонным суммари. ROUGE-1, ROUGE-2, ROUGE-L.
BERTScore: семантическое сходство через BERT-эмбеддинги — лучше коррелирует с человеческими оценками чем ROUGE.
Для production важнее пользовательские оценки (thumbs up/down) чем автоматические метрики — ROUGE плохо работает для абстрактивных суммари.
Выбор подхода
| Сценарий | Рекомендация |
|---|---|
| Новостные тексты, скорость важна | TextRank или rut5-base-absum |
| Юридические/медицинские документы | Экстрактивная (нет галлюцинаций) |
| Бизнес-отчёты, качество важно | GPT-4o с Map-Reduce |
| Высокая нагрузка (>100 req/s) | Дистиллированный T5 + ONNX |







