2014-05-07 5 views
4

J'ai essayé d'examiner le contenu du corpus BOW par rapport au LDA [Corpus BOW] (transformé par le modèle LDA formé sur ce corpus avec, disons, 35 sujets) J'ai trouvé la sortie suivante:Comprendre le Corpus Transformé LDA dans Gensim

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)] 

Où, DOC N est le document du corpus BOW LDA N est la transformation du DOC N par ce modèle LDA

Suis-je comprendre la sortie pour chaque document transformé « LDA N "être les sujets auxquels appartient le document N? Par cette compréhension, je peux voir certains documents comme 4, 5, 6, 7 et 8 d'appartenir à plus d'un sujet comme DOC 8 appartient aux sujets 12, 19, 22 et 28 avec les probabilités respectives.

Pourriez-vous expliquer la sortie de LDA N et corriger ma compréhension de cette sortie, d'autant plus que dans un autre fil HERE - par le créateur de Gensim lui-même, il a été mentionné qu'un document appartient à UN sujet?

Répondre

3

Vous comprenez la sortie de LDA de gensim est correcte. Ce que vous devez vous rappeler, c'est que LDA[corpus] affichera uniquement les sujets qui dépassent un certain seuil (défini lors de l'initialisation du modèle).

Le numéro document belongs to ONE topic est celui dont vous avez besoin pour décider vous-même. LDA vous donne une distribution sur les sujets pour chaque document que vous y alimentez *. Vous devez ensuite décider si un document ayant (par exemple) 50% d'un sujet est suffisant pour que ce document appartienne à ce sujet. (*) Encore une fois, vous devez garder à l'esprit que LDA[corpus] ne vous montrera que ceux qui dépassent un seuil, pas toute la distribution. Vous pouvez accéder à toute la distribution en utilisant également

theta, _ = lda.inference(corpus) 
theta /= theta.sum(axis=1)[:, None] 
+0

Merci pour l'explication @Matti - efface beaucoup les choses. Malheureusement, la documentation de gensim est plus clairsemée qu'une matrice de tfidf, ce qui rend difficile de trouver comment je "prends une décision" sur le nombre de sujets de chaque document. De [ici] (https://radimrehurek.com/gensim/models/ldamodel.html), il semble que 'gamma_threshold' soit lié, et je ne vois qu'une seule instance de' theta' que vous avez mentionnée. Comment puis-je prendre cette décision initiale lors de la formation du modèle de sorte que lorsque j'appelle 'lda [corpus [i]]' j'obtiens la distribution complète des 'n' sujets pour' doc [i] 'j'ai entraîné le modèle? – killerT2333

+0

Si vous voulez la distribution complète, je vous recommande d'utiliser le code ci-dessus, car c'est ce que 'LdaModel' fait en interne, mais ajoute une boucle for pour générer le format de sortie de liste - ce qui est une perte de temps si vous voulez dist entier de toute façon –

Questions connexes