Реализация кластеризации текстовых документов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Реализация кластеризации текстовых документов
Средний
~3-5 дней
Часто задаваемые вопросы

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

Этапы разработки AI-решения

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

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

Реализация кластеризации текстовых документов

Кластеризация текстов — группировка документов по смысловой близости без предварительных меток. Применяется для обнаружения тем в корпусе, сегментации клиентских обращений, организации архивов документов.

Пайплайн кластеризации

[Документы]
    → [Очистка, нормализация]
    → [Эмбеддинги (Sentence-BERT)]
    → [Снижение размерности (UMAP)]
    → [Кластеризация (HDBSCAN / K-Means)]
    → [Интерпретация кластеров (ключевые слова)]
    → [Визуализация]

Эмбеддинги для русского текста

Качество кластеризации полностью зависит от качества эмбеддингов:

  • cointegrated/rubert-tiny2 — 312MB, 312ms/1000 текстов, хорошо для коротких текстов
  • sbert-base-ru-mean-tokens — лучше для длинных документов
  • text-embedding-3-small (OpenAI API) — наилучшее качество, платно

Алгоритмы кластеризации

K-Means: нужно знать количество кластеров заранее. Быстрый, хорошо масштабируется. Чувствителен к outliers.

HDBSCAN: не требует числа кластеров, автоматически определяет outliers (шум). Лучший выбор для поискового анализа:

import hdbscan
clusterer = hdbscan.HDBSCAN(min_cluster_size=10, metric='euclidean')
labels = clusterer.fit_predict(embeddings_umap)

BERTopic: end-to-end pipeline от текстов до топиков с названиями:

from bertopic import BERTopic
topic_model = BERTopic(language="russian", calculate_probabilities=True)
topics, probs = topic_model.fit_transform(documents)
topic_model.visualize_topics()

UMAP для снижения размерности

Перед кластеризацией: UMAP снижает 768-мерные эмбеддинги до 10–50 измерений. Это ускоряет кластеризацию и повышает её качество (проклятие размерности).

import umap
reducer = umap.UMAP(n_components=10, metric="cosine", random_state=42)
embeddings_reduced = reducer.fit_transform(embeddings)

Интерпретация кластеров

После кластеризации каждому кластеру нужно дать название. Методы:

  • TF-IDF топ-слова: самые характерные слова кластера vs остальные
  • LLM-интерпретация: передать 10 случайных документов кластера, попросить GPT сформулировать общую тему
  • BERTopic встроенный: автоматически формирует c-TF-IDF представление

Оценка качества без меток

  • Silhouette Score: [-1, 1], выше — лучше разделение. Цель: > 0.3
  • Davies-Bouldin Index: ниже — лучше. Сравнение плотности кластеров
  • Coherence: насколько топ-слова кластера семантически связны