Реалізація вилучення ключових фраз
Ключові фрази—короткі n-грами, що відображають основні теми документа. Застосування широке: індексування, пошук, теґування контенту, автоматичні анотації.
Методи вилучення
Статистичні методи—швидко, без навчання:
- YAKE (Yet Another Keyword Extractor): враховує позицію слова, колокації, частоту. Працює без корпусу, 5ms/документ
- RAKE (Rapid Automatic Keyword Extraction): розбивка за стоп-словами, скорингу via co-occurrence
- TF-IDF: найкращі слова за TF-IDF вагою—ефективно при наявності корпусу для IDF
Граф-based методи:
- TextRank (аналог PageRank для слів): будує граф co-occurrence, ранжує вузли. Реалізація: gensim, pytextrank
Семантичні методи (найкраща якість):
- KeyBERT: embedding документа та кандидатів порівнюються через косинусну подібність
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)
Для російської мови
Статистичні методи працюють гірше без лемматизації. Правильний pipeline: лемматизація (pymorphy3) → YAKE/KeyBERT. KeyBERT з rubert-tiny2 дає хорошу якість при latency ~50ms/документ.
Застосування в production
Типове завдання: теґування 10K статей на день. Оптимальний стек: YAKE для швидкості + KeyBERT для топ-документів. Результати нормалізуються (лемматизація, lowercase, дедупліка ція) та зберігаються у пошуковому індексі (Elasticsearch з полем keywords).







