我对围绕scikit-learn构建的LDA模型测量/计算主题一致性有疑问。
主题一致性是衡量给定LDA主题模型的人类可解释性的有用度量。 Gensim的CoherenceModel允许针对给定的LDA模型(包含多个变体)计算主题一致性。
我有兴趣利用scikit-learn's LDA而不是gensim's LDA来简化易用性和文档编制工作(注意:我想避免使用gensim来进行scikit-learn包装,即实际上是利用sklearn的LDA )。根据我的研究,似乎没有与Gensim的CoherenceModel等效的scikit学习。
有没有办法做到这一点?
1 -通过手动将scikit-learn模型转换为gensim格式或通过将scikit-learn转换为gensim包装器,将scikit-learn的LDA模型输入gensim的CoherenceModel管道中。反过来)以生成主题连贯性?
或
2 -从scikit-learn的LDA模型和CountVectorizer / Tfidf矩阵手动计算主题的连贯性?
我已经对该在线用例的实现进行了大量研究,但是还没有任何解决方案。我仅有的线索是科学文献中记录的方程式。
如果任何人都对任何类似的实现有任何了解,或者如果您可以为我指出为此创建手动方法的正确方向,那就太好了。谢谢!
*旁注:我了解scikit-learn中可以使用困惑度和对数似然性来进行性能测量,但是从我所阅读的内容来看,这些并不能提供预测性。
答案 0 :(得分:1)
将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笔记本中)。
可以在本文here中找到几种相干度量的公式。
答案 1 :(得分:0)
Gensim是专有文本库。
它的功能强大得多,并且功能更丰富,可以进行文本分析。
请结帐,
LDA MALLET - It's more accurate than other LDA implementations
DISTRIBUTED LDA - Makes LDA Faster using Parallel Programming