LDA主题模型性能-scikit-learn

时间:2018-08-30 18:01:56

标签: scikit-learn nlp gensim lda topic-modeling

我对围绕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中可以使用困惑度和对数似然性来进行性能测量,但是从我所阅读的内容来看,这些并不能提供预测性。

2 个答案:

答案 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