LDA主题模型性能-针对scikit-learn的主题相干实现

10

我有一个关于在scikit-learn中构建的LDA模型度量/计算主题连贯性的问题。

主题连贯性是衡量给定LDA主题模型的人类可解释性的有用指标。Gensim的CoherenceModel允许计算给定LDA模型的主题连贯性(包括几种变体)。

我有兴趣利用scikit-learn的LDA而不是gensim的LDA,因为它易于使用和文档化(注意:我想避免使用gensim到scikit-learn的包装器,即真正利用sklearn的LDA)。根据我的研究,似乎没有scikit-learn等效于Gensim的CoherenceModel。

是否有一种方法可以:

1 - 将scikit-learn的LDA模型输入gensim的CoherenceModel管道,要么通过手动将scikit-learn模型转换为gensim格式,要么通过一个scikit-learn到gensim wrapper(我已经看到了相反的包装器)来生成主题连贯性?

或者

2 - 从scikit-learn的LDA模型和CountVectorizer / Tfidf矩阵手动计算主题连贯性?

我在网上对这种用例的实现进行了相当多的研究,但没有看到任何解决方案。我唯一的线索是科学文献中记录的方程。

如果有人了解任何类似的实现,或者能够指导我创建手动方法来解决这个问题,那将是非常好的。谢谢!

*附注:我知道scikit-learn中有perplexity和log-likelihood可用于性能测量,但根据我所读的,它们并不具有预测性。


我对你的问题没有直接的答案。但是为什么不使用gensim来适配一个新的LDA模型呢?我没有在scikit-learn中使用LDA的经验,但我知道gensim非常快速和易于使用。 - KenHBS
2
说实话,当语料库变得非常大并且您要求50个以上的主题时,Gensim自己的LDA速度不是很快。它也倾向于比i.e MALLET的结果更差。我和作者有同样的问题。 - Tolga
如果您发现了这个问题,您应该看一下tmtoolkit:https://dev59.com/questions/t7noa4cB1Zd3GeqPV7d1 - David
1个回答

3
将Scikit-learn的LDA模型输入到Gensim的CoherenceModel流水线中
据我所知,没有“简单的方法”来实现这一点。您需要手动重新格式化Scikit-learn数据结构,使其与Gensim兼容。我自己没有尝试过这个过程,但是这让我觉得这可能是一个不必要的步骤,可能需要很长时间。有一个Python 2.7的旧版本尝试gensim-sklearn-wrapper,您可以看看,但它似乎已经被废弃了 - 或许你可以从中获得一些信息/灵感。
手动从Scikit-learn的LDA模型和CountVectorizer/Tfidf矩阵计算主题相干性吗?
您需要通过循环轻松完成向量总结。您可以在NMF的“手动”相干性计算的代码示例中找到。当然,计算取决于具体的度量标准,但是Scikit-learn应该轻松地为分析返回所需的数据。
资源
我不明白为什么您会把Gensim归为不可选项 - 主题相干性流水线非常广泛,并且存在文档。
例如,可以在这三篇Jupyter笔记本教程中看到:
演示Gensim中主题相干性流水线 here
使用主题相干度进行模型选择 here
对电影数据集上的相干性流程管道进行基准测试 here
几种相干性度量公式可以在此论文here中找到。

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