LDA 主题模型性能 - scikit-learn 的主题一致性实现

lea*_*guy 8 nlp lda gensim topic-modeling scikit-learn

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

主题一致性是衡量给定 LDA 主题模型的人类可解释性的有用指标。Gensim 的CoherenceModel允许为给定的 LDA 模型(包括几个变体)计算 Topic Coherence。

我对利用scikit-learn 的 LDA而不是gensim 的 LDA 感兴趣,以便于使用和记录(注意:我想避免使用 gensim 到 scikit-learn 包装器,即实际上利用 sklearn 的 LDA)。根据我的研究,似乎没有与 Gensim 的 CoherenceModel 等效的 scikit-learn。

有没有办法:

1 - 将 scikit-learn 的 LDA 模型输入到 gensim 的 CoherenceModel 管道中,通过手动将 scikit-learn 模型转换为 gensim 格式,或者通过 scikit-learn 到 gensim 包装器(我已经看到了包装器)来生成主题一致性?

或者

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

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

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

*旁注:我知道在 scikit-learn 中可以使用 perplexity 和 log-likelihood 进行性能测量,但从我读到的内容来看,这些并没有那么预测。

小智 3

将 scikit-learn\xe2\x80\x99s LDA 模型输入 gensim\xe2\x80\x99s CoherenceModel 管道

\n\n

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

\n\n

从 scikit-learn\xe2\x80\x99s LDA 模型和 CountVectorizer/Tfidf 矩阵手动计算主题一致性?

\n\n

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

\n\n

资源

\n\n

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

\n\n

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

\n\n\n\n

几种一致性度量的公式可以在本文中找到

\n