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