digestors.

Понятно, практично, по делу

Вопросы и ответы

Экстракция ключевых слов: 4 метода извлечения сути для ИИ-суммаризаторов

Каждое утро мы пролистываем десятки заголовков и иногда — целые сводки, сгенерированные ИИ. Нам показывают три-четыре «главные» фразы, и мы либо кликаем, либо проходим мимо.

Экстракция ключевых слов: 4 метода извлечения сути для ИИ-суммаризаторов

Лид

За этой кажущейся простотой стоит вполне конкретная инженерная задача: машина должна за доли секунды понять, о чём вообще этот документ, и выделить из него ядро.

Давайте на пальцах разберёмся, как именно алгоритмы экстракции ключевых слов вытаскивают суть из текста. Под капотом у каждого подхода — своя математическая идея, свои параметры и свои подводные камни. Я посмотрела на четыре самых популярных метода, пощупала их руками и теперь расскажу, чем они отличаются — без заумных формул и корпоративного канцелярита.

TF-IDF: статистика, на которой всё держится

Самый возрастной и самый понятный подход. TF-IDF расшифровывается как «term frequency — inverse document frequency». Идея простая: если слово часто встречается в нашем конкретном документе и при этом редко встречается во всём остальном корпусе — оно наверняка важное. Слово «корпоратив» в одной новостной подборке про слияния и поглощения будет «весомее», чем в общем потоке, где такие публикации встречаются через раз.

В библиотеке scikit-learn есть готовый TfidfVectorizer, который превращает текст в набор чисел. По умолчанию он работает с униграммами — одиночными словами: ngram_range=(1, 1), обратная частота документа включена (use_idf=True), сглаживание IDF тоже (smooth_idf=True), а нормализация идёт по L2. Эти параметры — фундамент, и каждый из них вполне можно трогать под свои данные.

Подводный камень номер один: TF-IDF — статистический зверь. Ему абсолютно без разницы, что слово означает. Если у вас в коллекции сто документов про маркетинг и один — про ветеринарию, то «хвост» в ветеринарной статье резко станет «важным» просто потому, что встречается редко во всём корпусе. Это и плюс, и ограничение одновременно: метод не понимает смысла, он считает.

Хорошая новость — TfidfVectorizer умеет работать и с символьными n-граммами, и с диапазонами длин (ngram_range=(1, 2) возьмёт униграммы и биграммы). Есть там и привычные параметры min_df и max_df, которые отсекают слишком редкие и слишком частые слова. Это не магия, а настройка: крутите ручки под свой корпус, и качество заметно вырастет.

TextRank: маленький PageRank для текста

В 2004 году на конференции EMNLP вышла статья (страницы 404–411), которая перенесла алгоритм ранжирования веб-страниц PageRank на текст. Логика почти та же: слова или предложения становятся вершинами графа, между ними протягиваются связи, и алгоритм итеративно оценивает, какие узлы «авторитетнее» остальных.

Никакого обучения с учителем не нужно. TextRank работает в unsupervised режиме — вы просто берёте текст, строите по нему граф (обычно с окном в 2–3 слова, то есть учитываются только соседи в пределах нескольких позиций), прогоняете несколько итераций PageRank и получаете отсортированный список ключевых фраз. Самые «авторитетные» узлы — это и есть кандидаты на ключевые слова.

TextRank — это PageRank, только вместо веб-страниц в графе сидят слова и фразы. Кто на кого больше ссылается по соседству, тот и важнее.

Чем хорош: ему не нужна эталонная коллекция документов. Можно скормить один-единственный текст и получить его тематическое ядро. Чем неудобен: качество очень зависит от предобработки — лемматизации, удаления стоп-слов, аккуратного подбора окна. На коротеньких новостных заметках в двести слов TextRank часто выдаёт мусор, потому что граф получается слишком разреженным.

Ещё одна тонкость: TextRank работает по принципу co-occurrence — рядом стоящие слова «голосуют» друг за друга. Это значит, что тематически связанные термины вроде «налог», «бюджет», «поступление» в одном абзаце будут тянуть друг друга вверх. Хорошо для связных статей, плохо для новостных «выжимок», где каждое предложение — отдельная мысль.

YAKE!: пять шагов для одного документа

YAKE! появился в 2020 году в журнале Information Sciences и, пожалуй, самый дружелюбный к одиночным документам из всех четырёх. Его заточили именно под наш случай с новостным дайджестом, где часто надо по одной статье понять, о чём она, без оглядки на остальной корпус.

Метод работает в пять этапов: предобработка и поиск кандидатов, извлечение локальных текстовых признаков, вычисление оценок, формирование n-грамм и устранение дубликатов. На этапе признаков YAKE! учитывает сразу несколько сигналов: позицию слова в тексте (первые абзацы — весомее), частоту вхождения, регистр (заглавные буквы подсказывают важность), «липкость» к соседям и распределение по документу. Чем больше таких локальных подсказок — тем выше оценка термина.

YAKE! доверяет только самому документу. Это его суперсила — и его же ахиллесова пята.

Подводный камень в том, что YAKE! не смотрит «наружу». Где TF-IDF сравнивает с коллекцией, YAKE! оценивает каждое слово только по контексту внутри текста. Это плюс для уникальных расследований или научных обзоров: ни одна коллекция не нужна. Но минус в новостном потоке: одни и те же слова («заседание», «пресс-конференция», «сообщил») будут всплывать в каждой заметке, и YAKE! не сможет ранжировать их «относительно других статей».

Зато формирование n-грамм на четвёртом этапе работает на удивление аккуратно: метод старается склеивать слова в устойчивые связки, а не выдавать гору разрозненных терминов. Пятый этап — устранение дубликатов — чистит близкие по форме кандидаты, чтобы «корпоративный» и «корпоративного» не считались как разные ключевые слова.

KeyBERT: когда текст читает нейросеть

А вот это уже подход из другой эпохи. KeyBERT берёт заранее обученную языковую модель из семейства BERT, считает векторное представление всего документа, а потом сравнивает его с векторами отдельных слов или фраз через косинусное сходство. Чем ближе вектор фразы к вектору документа — тем она «главнее». Параметр keyphrase_ngram_range задаёт длину извлекаемых фраз: униграммы, биграммы, триграммы — что угодно в настраиваемом диапазоне.

Главная сила KeyBERT — семантическое понимание. Он «видит», что «погода» и «метеосводка» — близко по смыслу, а TF-IDF этого не понимает в принципе. Для новостных заголовков, где смысл часто спрятан в синонимах и перефразированиях, это серьёзное преимущество.

Главная слабость — зависимость от модели. Модель обучена на каком-то конкретном корпусе, и качество на русскоязычных текстах может заметно проседать по сравнению с английскими, особенно если модель не дообучали под наш домен. Поэтому перед боевым использованием KeyBERT стоит прогнать на своих данных и глазами проверить, насколько выдача адекватна.

В KeyBERT есть и полезная настройка разнообразия — параметр diversity, который работает по принципу Maximal Marginal Relevance (MMR). Он следит за тем, чтобы выданные ключевые фразы не были семантическими близнецами: пять почти одинаковых терминов — бессмысленный результат. MMR помогает выбирать фразы, которые похожи на документ, но при этом отличаются друг от друга.

Сравнение четырёх подходов

МетодЧто под капотомГде силёнГде буксует
TF-IDFСтатистика по коллекции документовБольшие однородные корпуса, стабильная терминологияНе ловит смысл, зависит от полноты коллекции
TextRankГраф PageRank без учителяОдиночные средние по длине документы, без разметкиКапризен к предобработке, плохо работает на коротких текстах
YAKE!Локальные признаки одного документаДлинные уникальные материалы, где важны позиция и контекстНе различает слова по коллекции, слаб для однотипных потоков
KeyBERTЭмбеддинги языковой модели + косинусСмысловые связки, синонимы, нюансы языкаЗависит от модели, «чужой» язык или домен — хуже

Границы применимости: экстракция не равно суммаризация

Это важный момент, который я хочу подчеркнуть отдельно. Все четыре метода выбирают или ранжируют слова и фразы. Ни один из них сам по себе не строит связного пересказа. Если вам нужна полноценная сводка — экстракцию придётся ставить первым шагом в конвейер, а дальше подключать уже другие алгоритмы: seq2seq, трансформеры или современные LLM, которые умеют писать связно.

По тем же причинам не стоит ждать от одного метода чудес на всех языках и жанрах. TF-IDF прекрасно работает на англоязычных научных статьях, потому что терминология там стабильна и коллекции легко собрать. YAKE! хорош в длинных уникальных расследованиях. KeyBERT вытягивает новости, где есть смысловые переклички и важны синонимы. TextRank удобен как «бесплатный» baseline, когда под рукой нет ни коллекции, ни нейросети. Универсального победителя нет — есть правильный инструмент под правильную задачу.

Ещё одна тонкость: при переносе методов с английского на русский параметры по умолчанию из scikit-learn не переносятся один в один. Русский текст богаче морфологией, у слов больше форм, и униграммы в чистом виде часто проигрывают лемматизированным формам. Если вы берёте TF-IDF для русского дайджеста — позаботьтесь о предобработке отдельно.

Что выбрать: короткая шпаргалка

Если вы только начинаете строить пайплайн новостного дайджеста — начните с TF-IDF как базовой линии. Он быстрый, понятный, и вы сразу увидите, какие слова в вашем потоке «частые», а какие «редкие». Дальше добавьте YAKE! для длинных материалов: он часто выдаёт более качественные связки за счёт учёта позиции и распределения по тексту. Если нужен смысл, а не статистика — подключайте KeyBERT, но обязательно проверьте модель на вашем языке и домене, прежде чем раскатывать на прод.

TextRank я бы держала в запасе на случай, когда нет ни коллекции, ни нейросети, а быстро понять документ хочется. Графовый подход хорошо ложится на средние по длине тексты без жёстких требований к скорости.

И не забывайте: лучший способ выбрать метод — взять штук пять своих реальных документов, прогнать через все четыре и посмотреть глазами. Метрики важны, но ваш глаз и ваша задача — самый честный фильтр. Сначала поймите, что для вас «хорошо извлечённое ключевое слово», и только потом выбирайте алгоритм. Удачи в сборке!

Частые вопросы

Что такое TF-IDF и как он работает?
TF-IDF расшифровывается как term frequency — inverse document frequency. Метод определяет важность слова по принципу: если оно часто встречается в конкретном документе и редко во всем остальном корпусе, то оно считается весомым.
Нужно ли обучение для работы алгоритма TextRank?
Нет, TextRank работает в unsupervised режиме без обучения с учителем. Достаточно взять текст, построить по нему граф и прогнать итерации PageRank для получения ключевых фраз.
В чем главная особенность метода YAKE!?
Главная особенность YAKE! заключается в том, что он оценивает каждое слово исключительно по контексту внутри самого документа, не сравнивая его с остальной коллекцией.
Как KeyBERT определяет ключевые слова?
KeyBERT использует заранее обученную языковую модель из семейства BERT, которая считает векторное представление всего документа и сравнивает его с векторами отдельных слов или фраз через косинусное сходство.
Можно ли использовать методы экстракции ключевых слов для построения связного пересказа?
Нет, все четыре метода выбирают или ранжируют слова и фразы, но сами по себе не строят связного пересказа. Для полноценной сводки экстракцию нужно использовать как первый шаг в конвейере.