
Кастомный пайплайн BERTopic: кластеризация текстов и интерпретация тем с LLM
Антон из Ростелеком IT показал, как собрать энд‑то‑энд‑решение на базе BERTopic и локальной LLM для автоматической группировки отзывов, тикетов и комментариев и получения человекочитаемых названий тем.
Что показал автор
В статье на Habr AI Антон, специалист по NLP в Ростелеком Информационные технологии, описал процесс создания кастомного пайплайна BERTopic. Пайплайн покрывает все этапы: от получения эмбеддингов до интерпретации тем с помощью локальной большой языковой модели (LLM).
Основные шаги
- Эмбеддинги – использованы предобученные модели из Sentence‑Transformers (например,
all-MiniLM-L6-v2). - Кластеризация – применён алгоритм HDBSCAN, который автоматически определяет число кластеров и игнорирует шум.
- Уменьшение размерности – UMAP визуализирует кластеры в 2‑D‑пространстве.
- Тематическое представление – класс‑на‑основе TF‑IDF (
c‑TF‑IDF) формирует ключевые слова для каждого кластера. - Интеграция LLM – локальная модель Llama‑3‑8B‑Instruct (запущенная через Ollama) генерирует человекочитаемые названия тем, используя ключевые слова как подсказку.
Пример кода (сокращённый)
from bertopic import BERTopic
from sentence_transformers import SentenceTransformer
embedder = SentenceTransformer('all-MiniLM-L6-v2')
model = BERTopic(embedding_model=embedder, low_memory=True)
topics, probs = model.fit_transform(texts)
# LLM‑названия
for topic_id in model.get_topic_info()['Topic']:
keywords = ', '.join([w for w, _ in model.get_topic(topic_id)[:5]])
prompt = f"Назови тему, используя ключевые слова: {keywords}."
title = llm.generate(prompt) # вызов Llama‑3 через Ollama
print(topic_id, title)
Результаты
- На наборе из 12 000 отзывов о мобильных тарифах модель выделила 27 тем.
- Автоматические названия тем совпали с экспертными оценками в 84 % случаев, что значительно ускорило последующий анализ.
- Встроенный LLM добавил контекст и сделал названия более «человечными», избавив от необходимости ручного редактирования.
Ссылка на оригинал
Почему это важно
Традиционные подходы к тематическому моделированию часто дают набор бессмысленных токенов. Интеграция LLM позволяет превратить их в осмысленные заголовки, делая результаты сразу готовыми к бизнес‑аналитике.
Для разработчиков и студентов это практический пример, как объединить классический unsupervised‑pipeline с современными LLM. Такой гибридный подход ускоряет обработку больших массивов пользовательских сообщений и снижает нагрузку на аналитиков, но требует ресурсов для локального LLM и внимательного контроля качества генерируемых названий.


