据我所知,我需要修复Python/R中LDA建模的主题数量。但是,假设我设置了topic=10
,而结果显示,对于一个文档,九个主题都与“健康”有关,本文档的主题数量确实是 2
。如果不检查每个主题的关键词并手动计算真正不同的主题,如何才能发现它?
附注我用谷歌搜索得知,有按主题排列的词汇单词列表(单词库),我可以根据单词列表将每个主题与主题配对。如果多个主题属于同一主题,那么我可以将它们合并为一个不同的主题。我想这是一种值得尝试的方法,我正在寻找更聪明的想法,谢谢。
最佳答案
首先,你的问题有点假设 LDA 识别的主题对应于真正的语义主题 - 我会非常小心这个假设,并查看分配给你想要以这种方式解释的主题的文档和单词,如LDA 通常会分配随机的额外单词,可以将两个或多个实际主题合并为一个(特别是总体主题很少),并且可能根本没有意义(“垃圾”主题)。
回答你的问题:“不同数量的主题”的想法根本不清楚。我见过的大多数工作都使用一个简单的阈值来确定文档主题比例是否“重要”。
一种更原则的方法是查看文档中出现的分配给该主题的单词的比例 - 如果它“显着”高于平均水平,则该主题在文档中很重要,但同样,这涉及到一些问题任意阈值。我认为没有什么比仔细阅读一些示例才能做出有意义的选择更好的了。
我应该注意到,根据您之前设置文档主题的方式(通常是测试版),您可能不会让每个文档只专注于几个主题(就像您的情况一样),而是更均匀的混合。在这种情况下,“不同数量的主题”开始变得不那么有意义。
附注使用对您的应用程序有意义的单词列表并不是识别感兴趣的候选主题的好方法。如果您的模型中有很多主题,则特别有用(:
P.P.S.:我希望你有合理数量的文档(至少几千个),因为 LDA 往往越少意义越小,捕获的是偶然的单词共现,而不是有意义的单词。 P.P.P.S.:我会选择大量具有参数优化的主题(由 Mallet LDA 实现提供)——这可以有效地为您的模型选择合理数量的主题,而分配给“额外”主题的单词很少。
关于python - 在 Python/R 中查找 LDA 后不同主题的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38903061/