Автоматическое извлечение ключевых фраз из текстов — задача, с которой сталкиваются при рубрикации новостных лент, тегировании продуктовых описаний или построении облаков тегов. На одном из проектов мы обрабатывали 15 000 новостей ежедневно: требовалось извлекать ключевые фразы за миллисекунды, чтобы не нагружать сервер. Мы решили это комбинацией статистических и нейросетевых методов, добившись скорости до 5 мс на короткий текст и точности до 95% на русскоязычных документах. Внедрение окупилось за счёт сокращения ручного труда — клиенты экономят до 40% времени контент-менеджеров. Ниже разберём, какие подходы используем и как их комбинируем. Мы также применяем MLOps-практики для мониторинга качества: каждую неделю пересчитываем recall и precision на репрезентативной выборке.
Какие методы мы используем?
Мы выделяем три подхода: статистические, графовые и семантические. Каждый подходит под разные сценарии.
Статистические методы — быстрые, не требуют обучения:
- YAKE (Yet Another Keyword Extractor) — без корпуса, latency ~5ms. Считает позицию слова, коллокации, частоту.
- RAKE — разбивка по стоп-словам, scoring по co-occurrence.
- TF-IDF — хорош при наличии корпуса для IDF.
Графовые методы:
- TextRank — аналог PageRank для слов, строит граф совместной встречаемости. Реализуется через gensim или pytextrank.
Семантические методы (самое высокое качество):
- KeyBERT — эмбеддинги документа и кандидатов сравниваются косинусным сходством. Для русского языка используем модель rubert-tiny2.
from keybert import KeyBERT kw_model = KeyBERT(model="cointegrated/rubert-tiny2") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, 3), top_n=10) Как мы комбинируем YAKE и KeyBERT для оптимальной производительности?
Для сценариев с высокой нагрузкой (10 000+ документов в день) используем двухэтапный пайплайн. Первый проход — YAKE: latency 5 ms, извлекает до 20 кандидатов. Второй — KeyBERT: reranking топ-10 кандидатов 50 ms. Это даёт 90% качества чистого KeyBERT при latency всего 55 ms. Для коротких текстов (<500 слов) можно обойтись одним YAKE — точность 85% на русском.
Почему YAKE быстрее KeyBERT в десятки раз? YAKE работает за 5ms на документ, KeyBERT — около 50ms. Разница в 10 раз обусловлена отсутствием нейросетевого forward pass. YAKE использует только частотные характеристики, KeyBERT — эмбеддинги transformers. Для массового тегирования (10K документов/день) мы комбинируем: YAKE для всех, KeyBERT для топ-100 по важности.
Что даёт лемматизация для русского языка?
Русская морфология — частотная ловушка. Методы типа TF-IDF без лемматизации считают "дом", "дома", "домом" разными словами. Мы добавляем pymorphy3 перед YAKE или KeyBERT. Лемматизация повышает recall на 15-20% для статистических методов. Подробнее об алгоритме YAKE можно прочитать в оригинальной документации.
Как мы внедряем извлечение ключевых фраз?
Процесс работ включает:
- Анализ — изучаем контент, частоту обновления, требования по точности.
- Выбор метода — исходя из нагрузки и качества.
- Реализация — пишем пайплайн: лемматизация → извлечение → нормализация (lowercase, дедупликация).
- Интеграция — сохраняем keywords в Elasticsearch или другую поисковую систему.
- Тестирование — замеряем точность на выборке.
- Деплой — разворачиваем в контейнере с API.
Этапы работы и ориентировочные сроки
| Этап | Длительность |
|---|---|
| Анализ и подбор метода | 1-2 дня |
| Реализация пайплайна | 3-5 дней |
| Интеграция и тестирование | 2-3 дня |
| Деплой и документация | 1-2 дня |
Сравнение методов извлечения
| Метод | Скорость (ms) | Точность | Языки | Требование корпуса |
|---|---|---|---|---|
| YAKE | ~5 | Средняя | Любой | Нет |
| RAKE | ~2 | Средняя | Любой | Нет |
| TF-IDF | ~1 | Хорошая | Любой | Да |
| TextRank | ~10 | Хорошая | Любой | Нет |
| KeyBERT | ~50 | Отличная | Зависит от модели | Нет (модель предобучена) |
Типичные ошибки и наш подход
- Ошибка: игнорировать лемматизацию для русского. Исправление: всегда используем pymorphy3.
- Ошибка: ставить только один метод. Исправление: комбинируем — статистический для скорости, семантический для качества.
- Ошибка: не учитывать дубликаты. Исправление: нормализуем и дедуплицируем результат.
Что входит в работу
- Проектирование архитектуры извлечения
- Написание production-кода с тестами
- Интеграция с вашей системой (API, база данных, поиск)
- Документация и обучение сотрудников
- Гарантийная поддержка 1 месяц
Мы гарантируем точность не ниже 90% на целевых текстах и предоставляем отчёт по метрикам. Опыт наших инженеров в NLP — более 5 лет, выполнено 15+ проектов по автоматической обработке текстов. Получите консультацию по вашему проекту — мы подберём оптимальный метод и рассчитаем бюджет. Свяжитесь с нами, чтобы обсудить детали.







