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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до 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

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

Кластеризація текстів—групування документів за смисловою близістю без попередніх міток. Застосування: виявлення тем у корпусі, сегментація клієнтських звернень, організація архівів документів.

Pipeline кластеризації

[Документи]
    → [Очистка, нормалізація]
    → [Embedding (Sentence-BERT)]
    → [Зниження розмірності (UMAP)]
    → [Кластеризація (HDBSCAN / K-Means)]
    → [Інтерпретація кластерів (ключові слова)]
    → [Візуалізація]

Embedding для російськомовного тексту

Якість кластеризації повністю залежить від якості embedding:

  • 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-мірні embedding до 10–50 вимірів. Прискорює кластеризацію, підвищує якість (прокляття розмірності).

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

Інтерпретація кластерів

Після кластеризації кожному кластеру потрібно дати назву. Методи:

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

Оцінка якості без міток

  • Silhouette Score: [-1, 1], більше—краще розділення. Ціль: > 0.3
  • Davies-Bouldin Index: менше—краще. Порівняння щільності кластерів
  • Coherence: як семантично пов'язані top-слова кластера