Зауважимо: коли в корпусі накопичуються десятки тисяч неструктурованих документів – звернення клієнтів, наукові статті, юридичні договори – ручна категоризація стає неможливою. Кластеризація групує документи за смисловою близькістю без єдиної мітки, використовуючи ембеддінги та алгоритми машинного навчання. Головна складність – прокляття розмірності: прямі 768-вимірні вектори з Sentence-BERT дають погані кластери без зниження розмірності. Ми реалізували пайплайн для трьох великих проєктів: від сегментації техпідтримки (50 тис. діалогів) до організації корпоративного архіву (200 тис. договорів). Стек: cointegrated/rubert-tiny2, UMAP, HDBSCAN. У статті розберемо кожен етап, порівняємо алгоритми та покажемо, як отримати Silhouette Score >0.4. Також розглянемо типові помилки: ігнорування стоп-слів, неправильний min_cluster_size та використання лише однієї метрики. Це дозволяє заощадити до 40% часу на ручному розмічуванні. Отримайте консультацію щодо вашого корпусу – ми оцінимо придатність кластеризації.
Пайплайн кластеризації
Канонічний pipeline, який ми використовуємо, виглядає так:
- Очищення та нормалізація – видалення сміттєвих символів, лематизація (pymorphy2 або Mystem), фільтрація стоп-слів.
- Ембеддінги – перетворення текстів у вектори фіксованої розмірності (Sentence-BERT, ruBERT).
- Зниження розмірності – UMAP стискає 768-вимірні вектори до 10–50 вимірів, зберігаючи топологію.
- Кластеризація – HDBSCAN або K-Means.
- Інтерпретація – TF-IDF топ-слова або LLM-резюме.
- Візуалізація – 2D-карта через t-SNE/UMAP, кольорове маркування кластерів.
Приклад конфігурації для HDBSCAN
import hdbscan from umap import UMAP reducer = UMAP(n_components=15, metric='cosine') clusterer = hdbscan.HDBSCAN(min_cluster_size=10, min_samples=1) Як обрати алгоритм кластеризації?
Вибір алгоритму – ключовий компроміс між швидкістю та гнучкістю.
| Алгоритм | Сильні сторони | Слабкі сторони | Коли застосовувати |
|---|---|---|---|
| K-Means | Мільйони точок, лінійна складність | Потребує K, чутливий до викидів | Заздалегідь відомі категорії (наприклад, 10 типів звернень) |
| HDBSCAN | Не потребує K, автоматично знаходить шум | Повільніший на великих даних без оптимізації | Пошуковий аналіз, невідома кількість тем |
| BERTopic | End-to-end від тексту до топіків, LLM-інтерпретація | Залежність від ембеддінгів, ресурсоємний | Швидке прототипування з візуалізацією та док-темплейтами |
Для типового проєкту з 10 тис. документів ми обираємо HDBSCAN – він дає робастні кластери та автоматично відсіює сміття. Якщо потрібна миттєва інтерпретація, підключаємо BERTopic.
Порівняння моделей ембеддінгів
| Модель | Розмірність | Мова | Швидкість | Якість |
|---|---|---|---|---|
cointegrated/rubert-tiny2 |
312 | RU | висока | середня |
sbert-base-ru-mean-tokens |
768 | RU | середня | хороша |
text-embedding-3-small (OpenAI) |
1536 | Мульти | висока | відмінна |
Як ми це робимо: кейс сегментації звернень техпідтримки
Задача: 50 000 діалогів з клієнтами за останні 3 роки поділити на тематичні кластери. Розмітки немає.
Стек: cointegrated/rubert-tiny2 (компроміс якість/швидкість), UMAP -> HDBSCAN. Після кластеризації кожен кластер інтерпретували через TF-IDF топ-10 слів і додатково – через GPT-4o, передавши 10 випадкових діалогів з кластера. Результат: 23 теми, включаючи «проблеми оплати», «претензії до доставки», «запити документації». Точність розпізнавання теми за першим документом – 89%.
Критичний нюанс: без зниження розмірності UMAP метрики кластеризації падають на 20–30% через «прокляття розмірності». Ми налаштовуємо n_components=15, metric='cosine' – це збільшує Silhouette Score з 0.25 до 0.41.
Що входить в роботу
Ми пропонуємо повний цикл впровадження кластеризації під ключ за 2–3 тижні:
- Аудит корпусу: оцінка обсягу, якості, мовних особливостей.
- Підбір ембеддінгів та алгоритмів під вашу задачу (ми перебираємо 3–4 конфіги).
- Реалізація пайплайну на Python:
pandas+scikit-learn+umap-learn+hdbscan/bertopic. - Тестування на відкладеній вибірці: метрики + візуальний аналіз карти.
- Деплой у вигляді Docker-контейнера або REST API на FastAPI.
- Документація: інструкція з перенавчання, опис кластерів, дашборд (Grafana/Streamlit).
Ми гарантуємо прозорість – ви отримуєте відтворювані скрипти та опис моделі у форматі Model Card.
Оцінка якості без міток
Внутрішні метрики допомагають відсіяти провальні конфігурації:
- Silhouette Score – компактність і розділеність кластерів. Цільове значення >0.3.
- Davies-Bouldin Index – чим нижче, тим краще.
- Coherence (UMass/Word2Vec) – семантична зв'язність топ-слів кластера. Для українського тексту використовуємо натреновані fastText-вектори від RusVectōrēs.
Додатково проводимо експертну валідацію: випадкова вибірка 100 документів, розмітка 3 аналітиками. Розбіжності вирішуємо голосуванням – це дає ground truth для ручного підрахунку точності.
Типові помилки при кластеризації текстів
- Ігнорування стоп-слів та лематизації: ембеддінги «забиваються» частотним сміттям, кластери втрачають сенс.
- Занадто низький
min_cluster_sizeв HDBSCAN (менше 5): отримуємо сотні мікрокластерів, які статистично незначущі. - Пряма кластеризація 768-вимірних векторів без UMAP: прокляття розмірності знищує метрики.
- Використання лише однієї метрики якості: Silhouette хороший для K-Means, але для HDBSCAN краще комбінувати з Davies-Bouldin.
Чому варто працювати з нами?
Наш досвід в NLP – 5+ років, понад 50 реалізованих проєктів з обробки текстів, включаючи кластеризацію, RAG-системи та fine-tuning LLM. Ми розуміємо, як навчити модель на вашому корпусі, щоб результат був стабільним у продакшені. Вартість розраховується індивідуально.
Для оцінки вашого корпусу та підбору оптимального пайплайну зв'яжіться з нами – ми підготуємо рішення під ключ за 2–3 тижні. Замовте пілотний проєкт, щоб побачити результат на своїх даних.







