Отметим: когда в корпусе накапливаются десятки тысяч неструктурированных документов – обращения клиентов, научные статьи, юридические договоры – ручная категоризация становится невозможной. Кластеризация группирует документы по смысловой близости без единой метки, используя эмбеддинги и алгоритмы машинного обучения. Главная сложность – проклятие размерности: прямые 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 недели. Закажите пилотный проект, чтобы увидеть результат на своих данных.







