pyLDAvis и Gensim: подготовить темы и сохранить визуализацию
pyLDAvis помогает исследовать распределения обученной тематической модели: какие слова характерны для темы и насколько темы похожи. Он не обучает LDA вместо Gensim и не превращает тему в достоверный факт о документе. Качество результата зависит от корпуса и его предварительной обработки.
Окружение и модуль интеграции
python -m venv .venv
# Выберите интерпретатор .venv для следующих команд.
python -m pip install gensim pyLDAvis
python -m pip checkДля актуального адаптера Gensim используется pyLDAvis.gensim_models. Старое имя pyLDAvis.gensim в примерах другой версии может не импортироваться. Проверьте совместимость установленных Python, NumPy, SciPy, Gensim и pyLDAvis; обновление одного пакета не гарантирует исправления всей цепочки.
Минимальная цепочка: документы → словарь → LDA → HTML
from gensim.corpora import Dictionary
from gensim.models import LdaModel
import pyLDAvis
import pyLDAvis.gensim_models as gensim_vis
documents = [
["query", "table", "index"],
["query", "table", "join"],
["index", "join", "query"],
["button", "screen", "layout"],
["screen", "layout", "color"],
["button", "color", "screen"],
]
vocabulary = Dictionary(documents)
corpus = [vocabulary.doc2bow(words) for words in documents]
model = LdaModel(
corpus=corpus, id2word=vocabulary,
num_topics=2, passes=10, random_state=7,
)
panel = gensim_vis.prepare(
model, corpus, vocabulary, R=8, n_jobs=1,
)
pyLDAvis.save_html(panel, "topics.html")Пример задаёт все входные переменные: не нужно угадывать, откуда взялись corpus и dictionary. Передайте в prepare тот же словарь с теми же идентификаторами терминов, который использовался при обучении. Не отфильтровывайте и не перенумеровывайте его между этими шагами.
Как читать и проверять результат
- Откройте topics.html в браузере. По умолчанию HTML может ссылаться на внешние JS/CSS: один сохранённый файл не гарантирует работу без сети.
- Сравните слова выбранной темы и их частоты с исходными документами; имена тем назначает исследователь, а не библиотека.
- Близость кругов — проекция распределений в две координаты; оси не задают предметный смысл, а картинка не заменяет оценку модели.
- Игрушечный корпус из шести строк показывает порядок вызовов, но не доказывает полезность двух тем для реальных текстов.
Если prepare завершился ошибкой
Проверьте непустой словарь, ненулевую длину документов и согласованность матриц с моделью. Для воспроизведения сохраните версии библиотек и небольшой обезличенный корпус. HTML визуализации содержит слова и статистику корпуса: перед публикацией исключите секреты и персональные данные, даже если сами исходные документы в него не вкладывались.