在 Python/ R 中查找 LDA 后不同主题的数量

Find the Number of Distinct Topics After LDA in Python/ R

据我所知,我需要在 Python/ R 中修复 LDA 建模的主题数量。但是,假设我设置 topic=10 而结果显示,对于文档, 九个主题都是关于 'health' 的,而本文档的不同主题数确实是 2。如果不检查每个主题的关键词并手动计算真正不同的主题,我如何发现它?

P.S。我用谷歌搜索得知有按主题分类的词汇表(Word Banks),我可以根据单词表将每个主题与一个主题配对。如果几个主题属于同一主题,那么我可以将它们组合成一个不同的主题。我想这是一种值得尝试的方法,我正在寻找更聪明的想法,谢谢。

首先,你的问题假设 LDA 识别的主题对应于真实的语义主题 - 我会非常小心这个假设并查看分配给你想要解释的主题的文档和单词,因为 LDA 通常分配了随机的额外单词,可以将两个或多个实际主题合并为一个(尤其是总体主题很少)并且可能根本没有意义("junk" 个主题)。

然后回答你的问题:"distinct number of topics" 的想法一点都不清楚。我看到的大部分工作都使用一个简单的阈值来决定文档主题比例是否为 "significant"。

一个更有原则的方法是查看分配给该主题的单词在文档中出现的比例 - 如果它 "significantly" 高于平均水平,则该主题在文档中很重要,但同样,这这涉及一个有点武断的阈值。我认为没有什么比仔细阅读一些例子更能做出有意义的选择了。

我应该注意,根据您之前设置文档主题的方式(通常是测试版),您可能不会让每个文档只关注几个主题(这似乎是您的情况),而是更多甚至混合。在这种情况下 "distinct number of topics" 开始变得不那么有意义了。

P.S。使用在您的应用程序中有意义的单词列表是识别感兴趣的候选主题的好方法。如果您的模型中有很多主题(:

P.P.S.: 我希望你有合理数量的文档(至少几千个),因为 LDA 越少越有意义,捕捉机会词共现而不是有意义的. P.P.P.S.: 我会选择更多参数优化的主题(由 Mallet LDA 实现提供)——这有效地为您的模型选择了合理数量的主题,分配给"extra" 个主题。