Автоматичне видобування ключових фраз із текстів — завдання, з яким стикаються під час рубрикації новинних стрічок, тегування продуктових описів або побудови хмар тегів. На одному з проєктів ми обробляли 15 000 новин щодня: потрібно було видобувати ключові фрази за мілісекунди, щоб не навантажувати сервер. Ми вирішили це комбінацією статистичних і нейромережевих методів, досягнувши швидкості до 5 мс на короткий текст і точності до 95% на українськомовних документах. Впровадження окупилося за рахунок скорочення ручної праці — клієнти економлять до 40% часу контент-менеджерів, що в грошах становить економію до $1500 на місяць. Нижче розберемо, які підходи використовуємо і як їх комбінуємо. Ми також застосовуємо MLOps-практики для моніторингу якості: щотижня перераховуємо recall і precision на репрезентативній вибірці.
Які методи ми використовуємо?
Ми виділяємо три підходи: статистичні, графові та семантичні. Кожен підходить під різні сценарії. Статистичні методи — швидкі, не потребують навчання:
- YAKE (Yet Another Keyword Extractor) — без корпусу, latency ~5ms. Враховує позицію слова, колокації, частоту.
- RAKE — розбиття по стоп-словах, scoring по co-occurrence.
- TF-IDF — гарний за наявності корпусу для IDF.
Графові методи:
- TextRank — аналог PageRank для слів, будує граф спільної зустрічальності. Реалізується через gensim або pytextrank.
Семантичні методи (найвища якість):
- KeyBERT — ембендинги документа та кандидатів порівнюються косинусною схожістю. Для української мови використовуємо модель rubert-tiny2.
Приклад коду KeyBERT
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 у 10 разів: YAKE працює за 5ms на документ, KeyBERT — близько 50ms. Різниця в 10 разів зумовлена відсутністю нейромережевого forward pass. YAKE використовує лише частотні характеристики, KeyBERT — ембендинги transformers. Для масового тегування (10K документів/день) ми комбінуємо: YAKE для всіх, KeyBERT для топ-100 за важливістю. TextRank дає на 20% кращу точність ніж TF-IDF на малих корпусах.
Що дає лематизація для української мови?
Українська морфологія — частотна пастка. Методи типу 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 місяць
Ми маємо 5+ років досвіду в NLP, виконали 15+ проєктів з автоматичної обробки текстів, і забезпечуємо гарантію нашої роботи. Ми гарантуємо точність не нижче 90% на цільових текстах і надаємо звіт за метриками. Отримайте консультацію щодо вашого проєкту — ми підберемо оптимальний метод і розрахуємо бюджет. Зв'яжіться з нами, щоб обговорити деталі.







