Обучение модели суммаризации текста
Fine-tuning суммаризационной модели нужен для специализированных доменов или когда общие модели генерируют суммари несоответствующего стиля (слишком разговорные для деловых отчётов, или наоборот).
Архитектуры для суммаризации
T5 (t5-base, IlyaGusev/rut5-base-absum для русского): универсальный генеративный трансформер. Хорошо fine-tuning на небольших данных.
BART (facebook/bart-base, IlyaGusev/bart-base-ru-giga): специально разработан для seq2seq задач, включая суммаризацию. Обычно лучше T5 для английского.
mT5/mBART: мультиязычные варианты. google/mt5-base или facebook/mbart-large-cc25.
Данные и форматирование
Нужны пары (документ, суммари). Источники:
- Новостные датасеты: CNN/DailyMail, XSum (английский), Gazeta.ru dataset (русский)
- Корпоративные: исторические отчёты + их краткие изложения, протоколы совещаний
- Синтетические: GPT-4o генерирует суммари для существующих документов → качество данных зависит от GPT
Fine-tuning T5
from transformers import T5ForConditionalGeneration, T5Tokenizer, Seq2SeqTrainer
model = T5ForConditionalGeneration.from_pretrained("IlyaGusev/rut5-base-absum")
tokenizer = T5Tokenizer.from_pretrained("IlyaGusev/rut5-base-absum")
def preprocess(examples):
inputs = tokenizer(
["summarize: " + doc for doc in examples["document"]],
max_length=1024, truncation=True, padding=True
)
targets = tokenizer(
examples["summary"],
max_length=256, truncation=True, padding=True
)
inputs["labels"] = targets["input_ids"]
return inputs
Настройка генерации
Параметры generate() сильно влияют на качество суммари:
summary_ids = model.generate(
input_ids,
num_beams=4, # beam search vs greedy
length_penalty=2.0, # штраф за короткие суммари
min_length=50, # минимальная длина
max_length=200, # максимальная длина
no_repeat_ngram_size=3, # предотвращение повторов
early_stopping=True,
)
Оценка: ROUGE-1/2/L + BERTScore. Добавьте human evaluation для финального решения: дайте 30 суммари людям оценить по шкале 1–5 по критериям accuracy, fluency, completeness.







