Описание методов предобработки, кластеризации и классификации
Описание методов
1) Предобработка
normalize_anglicisms
— унификация терминов.normalize_ru
(pymorphy2) — лемматизация, удаление предлогов/союзов/частиц, стоп-слов и чисел; латиница и бренды сохраняются.prepare_text(title, text)
— сборка и очистка для витрины тем.Два представления текста:
docs_ctx
— сырые (title + text
);docs_clean
— очищенные (леммы) для именования тем.
Длинные отзывы: чанкинг до
max_chars
(по умолчанию 1000) с последующим пуллингом.
2) Эмбеддинги и пуллинг
Модель эмбеддингов:
SentenceTransformer
(по умолчаниюBAAI/bge-m3
).Чанки кодируются по отдельности; агрегирование (pooling):
max
(по умолчанию),mean
,attn_len
(взвешивание по длине).
Итоговый вектор L2-нормализуется.
3) Тематическая кластеризация (BERTopic)
Векторизатор для названий тем:
CountVectorizer(ngram_range=(1,3), min_df=3, max_df=0.4, token_pattern=...)
доменные стоп-слова (банк, карта, приложение и пр.).
Кластеризация эмбеддингов:
по умолчанию KMeans (в BERTopic 0.17.x передаётся как
hdbscan_model=KMeans(...)
);альтернатива — HDBSCAN; опционально
reduce_outliers
для перераспределения-1
.
Улучшение названий тем:
update_topics(..., representation_model=MaximalMarginalRelevance(diversity=0.6))
.
Выход:
topic_info
— перечень тем,doc_info
— тема по документу.
4) Классификация (мультилейбл, zero-shot на эмбеддингах)
Словарь бизнес-классов (
src/final_classes.py
) в формате multi-prototype: по несколько фраз-прототипов на класс.Для каждого класса считаются эмбеддинги прототипов и усредняются ⇒ вектор класса.
Для документа берётся его эмбеддинг; считаются косинусы к векторам классов.
Отбор меток:
top-k классов на документ (значение
k
настраивается), илипо порогу косинуса.
Для удобства ранжирования используются квазивероятности
softmax_cos
по косинусам (температураτ = 0.07
).
5) Маппинг тем → бизнес-классы (zero-shot)
Кодируются top-слова темы ⇒ вектор темы.
Считаются косинусы «тема ↔ класс»; берётся top-k классов для темы.
Отчёт с маппингом сохраняется в
bertopic_outputs.xlsx
(листtopics_top3_classes
).
6) Артефакты
artifacts/latest/bertopic_model/
— модель BERTopic.artifacts/latest/embedder/
— сохранённый SentenceTransformer.artifacts/latest/class_vecs.npy
,class_names.json
— матрица векторов классов и имена.artifacts/latest/bertopic_outputs.xlsx
— отчёт (темы, маппинги, распределения, «сомнительные» темы).
Последнее обновление