我对围绕scikit-learn构建的LDA模型测量/计算主题一致性有一个疑问。

主题一致性是衡量给定LDA主题模型的人类可解释性的有用度量。 Gensim的CoherenceModel允许针对给定的LDA模型(包含多个变体)计算主题一致性。

我有兴趣利用scikit-learn's LDA而不是gensim's LDA来简化易用性和文档编制(请注意:我想避免使用gensim来进行scikit学习包装器,即实际上是利用sklearn的LDA)。根据我的研究,似乎没有与Gensim的CoherenceModel等效的scikit学习。

有没有一种方法可以:

1 -将scikit-learn的LDA模型输入gensim的CoherenceModel管道,方法是通过手动将scikit-learn模型转换为gensim格式,或者通过scikit-learn转换为gensim包装器(我已经看到了包装器)连贯性?

或者

2 -通过scikit-learn的LDA模型和CountVectorizer/Tfidf矩阵手动计算主题的一致性?

我已经对该在线用例的实现进行了大量研究,但还没有找到任何解决方案。我仅有的线索是科学文献中记录的方程式。

如果任何人都对任何类似的实现有任何了解,或者如果您可以为我指出为此创建手动方法的正确方向,那将是很好的。谢谢!

*旁注:我知道scikit-learn中可以使用困惑和对数似然来进行性能测量,但是从我所读的内容来看,这些并不能作为预测性指标。

最佳答案

将scikit-learn的LDA模型输入gensim的CoherenceModel管道

据我所知,没有“简便方法”可以做到这一点。您必须手动重新格式化sklearn数据结构,以与gensim兼容。我自己没有尝试过,但这使我感到震惊,因为这是不必要的步骤,可能需要很长时间。您可能想看看gensim-sklearn-wrapper上有一个古老的Python 2.7尝试,但它似乎已过时-也许您可以从中获得一些信息/启发。

根据scikit-learn的LDA模型和CountVectorizer/Tfidf矩阵手动计算主题的一致性?

您需要的向量求和可以通过循环轻松实现。您可以找到“手动” coherence calculation for NMF的代码示例。当然,计算取决于具体的度量,但是sklearn应该可以很容易地向您返回分析所需的数据。

资源

我不清楚您为什么会明确排除gensim-主题一致性管道非常广泛,并且存在文档。

例如,请参见这三个教程(在Jupyter笔记本中)。

  • Demonstration of the topic coherence pipeline in Gensim
  • Performing Model Selection Using Topic Coherence
  • Benchmark testing of coherence pipeline on Movies dataset

  • 几种相干测度的公式可以在本文here中找到。

    10-08 05:01