Реализация извлечения ключевых фраз (Keyword/Keyphrase Extraction)

Автоматическое извлечение ключевых фраз из текстов — задача, с которой сталкиваются при рубрикации новостных лент, тегировании продуктовых описаний или построении облаков тегов. На одном из проектов мы обрабатывали 15 000 новостей ежедневно: требовалось извлекать ключевые фразы за миллисекунды, чтоб

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Автоматическое извлечение ключевых фраз из текстов — задача, с которой сталкиваются при рубрикации новостных лент, тегировании продуктовых описаний или построении облаков тегов. На одном из проектов мы обрабатывали 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 можно прочитать в оригинальной документации.

Как мы внедряем извлечение ключевых фраз?

Процесс работ включает:

  1. Анализ — изучаем контент, частоту обновления, требования по точности.
  2. Выбор метода — исходя из нагрузки и качества.
  3. Реализация — пишем пайплайн: лемматизация → извлечение → нормализация (lowercase, дедупликация).
  4. Интеграция — сохраняем keywords в Elasticsearch или другую поисковую систему.
  5. Тестирование — замеряем точность на выборке.
  6. Деплой — разворачиваем в контейнере с 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+ проектов по автоматической обработке текстов. Получите консультацию по вашему проекту — мы подберём оптимальный метод и рассчитаем бюджет. Свяжитесь с нами, чтобы обсудить детали.