SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Языки и платформы

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 визуализации содержит слова и статистику корпуса: перед публикацией исключите секреты и персональные данные, даже если сами исходные документы в него не вкладывались.

Документация