我有一个关于测量/计算scikit-learn中内置LDA模型的主题一致性的问题。
主题一致性是衡量给定LDA主题模型的人类可解释性的有用指标。Gensim的一致性模型允许为给定的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包装器(我已经看到了包装器相反的方式(来生成主题一致性?
或
2- 从scikit-learn的LDA模型和CountVectorizer/Tfidf矩阵手动计算主题一致性?
我已经在网上对这个用例的实现做了相当多的研究,但没有看到任何解决方案。我唯一的线索是科学文献中记录的方程式。
如果有人对任何类似的实现有任何了解,或者如果您能指出我为此创建手动方法的正确方向,那就太好了。谢谢!
*旁注:我知道scikit-learn中提供了用于性能测量的困惑和对数可能性,但从我所读到的内容来看,这些并不能预测。
将scikit-learn的LDA模型输入gensim的CoherenceModel管道
据我所知,没有"简单的方法"可以做到这一点。您必须手动重新格式化 sklearn 数据结构以与 gensim 兼容。我自己没有尝试过,但这对我来说是一个不必要的步骤,可能需要很长时间。有一个旧的Python 2.7尝试使用gensim-sklearn包装器,你可能想看看,但它似乎已被弃用 - 也许你可以从中获得一些信息/灵感。
从scikit-learn的LDA模型和CountVectorizer/Tfidf矩阵手动计算主题一致性?
您需要的向量求和可以通过循环轻松实现。您可以找到 NMF 的"手动"一致性计算的代码示例。当然,计算取决于具体的测量值,但sklearn应该很容易地返回分析所需的数据。
资源
我不清楚为什么你会断然排除 gensim - 主题一致性管道非常广泛,并且存在文档。
例如,请参阅这三个教程(在 Jupyter 笔记本中(。
- Gensim 中主题一致性管道的演示
- 使用主题一致性执行模型选择
- 电影数据集上一致性管道的基准测试
几种一致性措施的公式可以在本文中找到。