理解Gensim中的LDA转换语料库

6

我尝试比较BOW语料库和经过LDA模型(使用35个主题)转换后的LDA[BOW Corpus]。以下是我的研究结果:

DOC 1 : [(1522, 1), (2028, 1), (2082, 1), (6202, 1)]  
LDA 1 : [(29, 0.80571428571428572)]  
DOC 2 : [(1522, 1), (5364, 1), (6202, 1), (6661, 1), (6983, 1)]  
LDA 2 : [(29, 0.83809523809523812)]  
DOC 3 : [(3079, 1), (3395, 1), (4874, 1)]  
LDA 3 : [(34, 0.75714285714285712)]  
DOC 4 : [(1482, 1), (2806, 1), (3988, 1)]  
LDA 4 : [(22, 0.50714288283121989), (32, 0.25714283145449457)]  
DOC 5 : [(440, 1), (533, 1), (1264, 1), (2433, 1), (3012, 1), (3902, 1), (4037, 1), (4502, 1), (5027, 1), (5723, 1)]  
LDA 5 : [(12, 0.075870715371114297), (30, 0.088821329943986921), (31, 0.75219107156801579)]  
DOC 6 : [(705, 1), (3156, 1), (3284, 1), (3555, 1), (3920, 1), (4306, 1), (4581, 1), (4900, 1), (5224, 1), (6156, 1)]  
LDA 6 : [(6, 0.63896110435842401), (20, 0.18441557445724915), (28, 0.09350643806744402)]  
DOC 7 : [(470, 1), (1434, 1), (1741, 1), (3654, 1), (4261, 1)]  
LDA 7 : [(5, 0.17142855723258577), (13, 0.17142856888458904), (19, 0.50476192150187316)]  
DOC 8 : [(2227, 1), (2290, 1), (2549, 1), (5102, 1), (7651, 1)]  
LDA 8 : [(12, 0.16776844589094803), (19, 0.13980868559963203), (22, 0.1728575716782704), (28, 0.37194624921210206)]  

在这里,DOC N是来自BOW文本语料库的文档,LDA N是通过该LDA模型转换的DOC N。

对于每个转换后的文档"LDA N",我的理解是输出是文档N所属主题。基于这个理解,我可以看到像4、5、6、7、8等一些文档属于多个主题,比如DOC 8属于主题12、19、22和28,并分别有相应的概率。

请您解释一下LDA N的输出并纠正我的理解,尤其是在另一个线程中,Gensim的创建者在此处提到文档只属于一个主题。

1个回答

6
您对来自gensim的LDA输出的理解是正确的。但您需要记住,当您初始化模型时,LDA [corpus]仅会输出超过一定阈值的主题。
“文档属于一个主题”问题需要您自己做出决策。LDA为您提供了每个输入文档的主题分布。您需要决定,例如,50%的主题是否足够让该文档属于该主题。
再次提醒您,LDA [corpus]仅会显示超过阈值的主题,而不是整个分布。您也可以使用以下方法访问整个分布:
theta, _ = lda.inference(corpus)
theta /= theta.sum(axis=1)[:, None]

感谢@Matti的解释-让事情变得更清晰了。不幸的是,gensim文档比tfidf矩阵更少,这使得我很难找到如何“做出决策”以确定每个文档的主题数量。从这里看来,gamma_threshold可能与此相关,而我只看到了一个无关的theta实例,您也提到了它。在训练模型时,我该如何做出这个初始决策,以便在调用lda [corpus [i]]时,我可以获得我已经训练了模型的doc[i]的“n”个主题的完整分布? - PyRsquared
如果您想要完整的分布,我建议您使用上面的代码,因为这就是LdaModel在内部执行的操作,但是它还会添加一个for循环来生成列表输出格式——如果您无论如何都想要完整的分布,那么这是浪费时间的。 - Matti Lyra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接