【问题标题】:finding number of documents per topic for LDA with scikit-learn使用 scikit-learn 查找 LDA 的每个主题的文档数
【发布时间】:2016-05-17 02:51:34
【问题描述】:

我正在关注 scikit-learn LDA 示例 here 并试图了解我如何(如果可能)显示有多少文档被标记为具有这些主题中的每一个。我一直在研究 LDA 模型 here 的文档,但看不到我在哪里可以得到这个数字。以前有人可以用 scikit-learn 做到这一点吗?

【问题讨论】:

  • 虽然我没有使用 scikit 的 LDA,但我知道 fit_transform 方法返回一个形状为 [n_samples, n_features_new] 的 numpy 数组。 n_features_new 应该是您在构造函数中设置的主题数,它们代表每个文档上每个主题的“数量”(即一个主题属于多个主题)。您应该将返回数组中最大值的索引作为文档最可能的主题。

标签: scikit-learn lda


【解决方案1】:

LDA 计算每个文档的主题概率列表,因此您可能希望将文档的主题解释为该文档概率最高的主题。

如果 dtm 是您的文档术语矩阵,lda 是您的潜在狄利克雷分配对象,您可以使用 transform() 函数和 pandas 探索主题混合:

docsVStopics = lda.transform(dtm)
docsVStopics = pd.DataFrame(docsVStopics, columns=["Topic"+str(i+1) for i in range(N_TOPICS)])
print("Created a (%dx%d) document-topic matrix." % (docsVStopics.shape[0], docsVStopics.shape[1]))
docsVStopics.head()

您可以轻松找到每个文档最有可能的主题:

most_likely_topics = docsVStopics.idxmax(axis=1)

然后得到计数:

 most_likely_topics.groupby(most_likely_topics).count()

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 2016-02-27
    • 2017-12-22
    • 2019-02-05
    • 2019-01-12
    • 2017-10-27
    • 1970-01-01
    • 2020-06-09
    • 2017-12-22
    相关资源
    最近更新 更多