我正在使用gensim包中的LDA算法来查找给定文本中的主题。
我被问到结果主题将包含每个主题的不同单词,EG如果主题A中包含单词“monkey”,则其他主题不应在其列表中包含单词“monkey”。
到目前为止我的想法:多次运行,每次都将之前的字词添加到停用词列表中。
自: A)我甚至不确定算法/逻辑上它是正确的做法。 B)我希望有一种内置的方式可以做到这一点,我不知道。 C)这是一个大型数据库,运行LDA大约需要20分钟 每次(使用多核版本)。
问题:有更好的方法吗?
希望得到一些帮助,
感谢。
答案 0 :(得分:0)
LDA为每个主题和每个单词提供主题生成该单词的概率。您可以尝试通过对概率的所有主题进行最大化来生成单词,从而为主题分配单词。换句话说,如果主题A生成概率为0.01的“猴子”而主题B生成概率为0.02的单词monkey,那么您可以将单词monkey分配给主题B.
答案 1 :(得分:0)
我认为你想要做的事情在逻辑上是错误的。例如,根据上下文,像“银行”这样的词有两个不同的含义(“河岸”或“钱币银行”)。当您故意从一个主题词中删除该词时,您可能会失去主题含义(特别是当该词的概率很高时)。看看这个:
https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/topic_methods.ipynb
我认为唯一剩下的选择(如果它甚至是理性的)是使用主题中单词的概率。