我试图检查BOW语料库与LDA [BOW语料库]的内容(由在该语料库上训练的LDA模型转换,例如35个主题) 我找到了以下输出:
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的输出并纠正我对这个输出的理解,特别是因为在另一个线程HERE - 由Gensim本人的创建者,有人提到一个文件属于一个主题吗?
答案 0 :(得分:5)
您对LDA
gensim
的输出的理解是正确的。您需要记住的是LDA[corpus]
只会输出超过特定阈值的主题(初始化模型时设置)。
document belongs to ONE topic
问题是您需要自行决定的问题。 LDA为您提供每个文档主题的分布*。然后,您需要确定具有(例如)50%主题的文档是否足以使该文档属于所述主题。
(*)你必须记住,LDA[corpus]
只会向你显示超过阈值的那些,而不是整个分布。您也可以使用
theta, _ = lda.inference(corpus)
theta /= theta.sum(axis=1)[:, None]