使用scikit-learn进行LDA主题建模时,如何找到每个主题所对应的文档数量?

6

我正在跟随scikit-learn LDA示例(这里),并尝试理解如何(如果可能的话)表明已经被标记为每个主题的文档数量。我一直在研究LDA模型的文档(这里),但没有找到可以获取此数字的地方。有人之前能够在scikit-learn中完成这项任务吗?


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

6

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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接