【问题标题】:pyldavis Unable to view the graphpyldavis 无法查看图表
【发布时间】:2017-09-05 03:16:33
【问题描述】:

我正在尝试使用 pyldavis 在 python 中直观地描述我的主题。但是我无法查看图表。是我们必须在浏览器中查看图表还是会在执行时弹出。下面是我的代码

import pyLDAvis
import pyLDAvis.gensim as gensimvis
print('Pyldavis ....')
vis_data = gensimvis.prepare(ldamodel, doc_term_matrix, dictionary)
pyLDAvis.display(vis_data)

程序在执行上述命令时一直处于执行模式。我应该在哪里查看我的图表?或者它将存储在哪里?它是否仅与 Ipython 笔记本集成?请指导我完成此操作。 PS我的python版本是3.5。

【问题讨论】:

    标签: python-3.x lda topic-modeling


    【解决方案1】:

    我现在面临同样的问题。 编辑: 我的脚本如下所示:

    第一部分:

    import pyLDAvis
    import pyLDAvis.sklearn
    print('start script')
    tf_vectorizer = CountVectorizer(strip_accents = 'unicode',stop_words = 'english',lowercase = True,token_pattern = r'\b[a-zA-Z]{3,}\b',max_df = 0.5,min_df = 10)
    dtm_tf = tf_vectorizer.fit_transform(docs_raw)
    lda_tf = LatentDirichletAllocation(n_topics=20, learning_method='online')
    print('fit')
    lda_tf.fit(dtm_tf)
    

    第二部分:

    print('prepare')
    vis_data = pyLDAvis.sklearn.prepare(lda_tf, dtm_tf, tf_vectorizer)
    print('display')
    pyLDAvis.display(vis_data)
    

    问题出在“vis_data = (...)”行。如果我运行脚本,它将打印“准备”并在此之后继续运行而不打印任何其他内容(因此它永远不会到达“打印”行('显示'))。

    有趣的是,当我运行整个脚本时,它会卡在该行,但是当我运行第一部分时,进入我的控制台并纯粹执行单行“vis_data = pyLDAvis.sklearn.prepare(lda_tf, dtm_tf, tf_vectorizer)" 这将在几秒钟内执行。

    至于图表,我将其保存为html(“简单”)并使用html文件查看图表。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题(我使用 PyCharm 作为 IDE)问题是 pyLDAvize 是为 Ipython 开发的(请参阅文档,https://media.readthedocs.org/pdf/pyldavis/latest/pyldavis.pdf,第 3 页)。 我的修复/解决方法:

      • 制作 lda_tf、dtm_tf、tf_vectorizer 的 dict(例如 pyLDAviz_dict)将 dict 转储到文件(例如 mydata_pyLDAviz.pkl)
      • 将 pkl 文件读入笔记本(我确实从 pyLDAviz 获得了一些折旧信息,但这对最终结果没有影响)
      • 在笔记本中玩弄 pyLDAviz
      • 如果您对视图感到满意,请将其转储到 html 中

      原因(很可能)是 pyLDAviz 期望持续的用户交互(包括用户发起的“退出”)。但是,我宁愿从智能 IDE 中转储数据并将其读入 jupyter,而不是在 jupyter notebook 中开发/编码。这很像回到 emacs 之前的时代。

      根据经验,这种方法非常适合其他绘图程序

      【讨论】:

        【解决方案3】:

        这不起作用:

        pyLDAvis.display(vis_data)

        这对你有用:

        pyLDAvis.show(vis_data)

        【讨论】:

          【解决方案4】:

          如果您收到模块错误pyLDA.gensim,请改用这个:

          import pyLdAvis.gensim_models
          

          由于新版本更新,您收到错误消息。

          【讨论】:

          • 可能值得一提的是哪些版本与可疑错误和您的解决方案相关。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多