Старые LDA умерли. Да здравствуют нейронные темы
Помните те времена, когда topic modeling сводился к LDA и паре скриптов на Python? В 2026 году это выглядит как археология. Три новых подхода перевернули всё: FASTopic, TopicGPT и LlooM. Каждый решает одну проблему, но делает это по-своему.
Я потратил месяц, тестируя их на реальных данных — от техдокументации до соцсетей. Вот что получилось.
FASTopic: когда скорость важнее всего
FASTopic — это ответ на вопрос "как сделать topic modeling быстрее, чем LDA в 10 раз". Авторы взяли нейронные эмбеддинги и добавили кластеризацию. Результат? Молниеносная обработка миллионов документов.
FASTopic идеально подходит для потоковой обработки текстов. Если вам нужно анализировать ленты соцсетей в реальном времени — это ваш выбор.
Установка проще некуда:
pip install fastopic
Базовый пример:
from fastopic import FASTopic
import pandas as pd
# Загружаем данные
docs = pd.read_csv('documents.csv')['text'].tolist()
# Создаём модель
model = FASTopic(n_topics=20, embedding_model='all-MiniLM-L6-v2')
# Обучаем (это занимает секунды)
topics = model.fit_transform(docs)
# Смотрим результаты
for topic_id, words in model.get_topics().items():
print(f"Topic {topic_id}: {', '.join(words[:5])}")
Проблема FASTopic? Темы получаются слишком общими. "Искусственный интеллект", "машинное обучение", "нейронные сети" — всё смешивается в одну кашу. Для тонкого анализа не подходит.
TopicGPT: когда нужен человеческий язык
TopicGPT — это полная противоположность. Здесь вместо статистики используют LLM. Вы даёте модели текст, она возвращает темы с описаниями на естественном языке.
TopicGPT требует API-ключ или локальную LLM. Без локального запуска LLM будет дорого.
Пример с локальной моделью:
from topicgpt import TopicGPT
from transformers import AutoModelForCausalLM, AutoTokenizer
# Используем локальную модель
model_name = "Qwen/Qwen2.5-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Создаём TopicGPT
topic_model = TopicGPT(llm_model=model, llm_tokenizer=tokenizer)
# Анализируем
documents = ["Статья про новые методы машинного обучения...",
"Исследование применения ИИ в медицине..."]
results = topic_model.analyze(documents, n_topics=5)
# Темы с описаниями
for topic in results['topics']:
print(f"{topic['name']}: {topic['description']}")
print(f"Ключевые слова: {topic['keywords']}")
TopicGPT выдаёт такие темы: "Инновации в медицинском ИИ: применение нейросетей для диагностики заболеваний" вместо сухого "медицина, ИИ, диагностика".
Минус? Скорость. Обработка 1000 документов может занять час. И качество зависит от выбранной LLM — не все модели одинаково хороши для этой задачи.
LlooM: гибрид, который работает
LlooM — самый интересный из трёх. Он комбинирует статистические методы с нейросетями. Сначала кластеризует документы, потом использует LLM для описания кластеров.
Архитектура LlooM:
- Эмбеддинг документов через Sentence Transformers
- Кластеризация UMAP + HDBSCAN
- Генерация описаний через LLM (можно локальную)
- Постобработка и фильтрация тем
from llom import LlooM
import numpy as np
# Инициализация с кастомными параметрами
model = LlooM(
clustering_method='hdbscan',
min_cluster_size=10,
llm_backend='local', # или 'openai', 'anthropic'
local_model_path='./models/llama-3.1-8b'
)
# Загрузка данных
data = load_your_documents() # ваша функция
# Обучение
model.fit(data)
# Получение тем с уверенностью
topics_with_confidence = model.get_topics_with_confidence()
for topic in topics_with_confidence:
if topic['confidence'] > 0.7: # фильтруем слабые темы
print(f"{topic['label']} (conf: {topic['confidence']:.2f})")
print(f"Документов: {len(topic['documents'])}")
Сравнительная таблица: что выбрать?
| Критерий | FASTopic | TopicGPT | LlooM |
|---|---|---|---|
| Скорость (10к док.) | 2-3 минуты | 2-3 часа | 15-30 минут |
| Качество тем | Среднее | Высокое | Высокое |
| Требует GPU | Нет | Да (для скорости) | Опционально |
| Стоимость (100к док.) | $0 | $5-50 | $0-5 |
| Настройка | Минимальная | Сложная | Средняя |
Практический кейс: анализ техдокументации
Я тестировал все три метода на датасете из 5000 страниц документации к API. Цель — автоматически категоризировать разделы по темам.
1 Подготовка данных
Сначала нужно очистить текст. Удалить код, таблицы, служебные слова. Для этого подходит GliNER2 или простые регулярки.
2 Запуск моделей
FASTopic справился за 47 секунд. TopicGPT (с локальной Llama 3.1) — за 4 часа. LlooM — за 18 минут с тем же качеством, что у TopicGPT.
3 Результаты
FASTopic нашёл 15 тем, но половина пересекалась. TopicGPT выделил 12 чётких тем с описаниями типа "Аутентификация и авторизация: методы OAuth2, JWT, API-ключи". LlooM дал 14 тем с оценкой уверенности.
Не используйте TopicGPT на CPU для больших датасетов. Один запуск может занять сутки. Лучше арендовать GPU — есть способы сделать это дешевле.
Ошибки, которые все совершают
1. Слишком много тем. Если задать n_topics=50 на маленьком датасете, получите мусор. Правило: на 1000 документов — не больше 20 тем.
2. Игнорирование предобработки. Стоп-слова, лемматизация, удаление чисел — это важно. Без этого темы будут зашумлены.
3. Использование одной модели для всего. Для новостей подходит FASTopic, для научных статей — TopicGPT, для смешанных данных — LlooM.
4. Отсутствие валидации. Темы нужно проверять вручную на выборке. Автоматические метрики (когерентность) часто врут.
Что будет дальше?
Topic modeling движется к полной интеграции с LLM. Уже сейчас появляются модели, которые обучаются end-to-end: от текста к темам без промежуточных шагов.
Мой прогноз: к 2027 году мы увидим:
- Мультимодальный topic modeling (текст + изображения + аудио)
- Динамическое тематическое моделирование для потоковых данных
- Автоматический подбор числа тем через нейросети
Самый перспективный подход — комбинированный, как в LlooM. Статистика для скорости, LLM для качества. Это работает уже сейчас.
Если нужно анализировать техдокументацию — берите LlooM. Для соцсетей — FASTopic. Для научных статей — TopicGPT с хорошей LLM. И не забывайте, что выбор базовой модели решает всё.
Последний совет: не зацикливайтесь на одном методе. Соберите pipeline, где FASTopic делает первичную кластеризацию, а TopicGPT описывает самые крупные кластеры. Так вы получите и скорость, и качество.
И помните — topic modeling это не магия. Даже лучший алгоритм не заменит человеческого понимания данных. Используйте эти инструменты как помощников, а не как оракулов.