Je lance LDA sur un petit corpus de 2 docs (phrases) à des fins de test. Le code suivant renvoie des distributions sujet-sujet et document-sujet qui ne sont pas raisonnables du tout compte tenu des documents d'entrée. Exécution exactement les mêmes retours dans les résultats raisonnables de Python. Qui sait ce qui ne va pas ici?R topicmodels LDA
library(topicmodels)
library(tm)
d1 <- "bank bank bank"
d2 <- "stock stock stock"
corpus <- Corpus(VectorSource(c(d1,d2)))
##fit lda to data
dtm <- DocumentTermMatrix(corpus)
ldafit <- LDA(dtm, k=2, method="Gibbs")
##get posteriors
topicTerm <- t(posterior(ldafit)$terms)
docTopic <- posterior(ldafit)$topics
topicTerm
docTopic
> topicTerm
1 2
bank 0.3114525 0.6885475
stock 0.6885475 0.3114525
> docTopic
1 2
1 0.4963245 0.5036755
2 0.5036755 0.4963245
Les résultats de Python sont les suivants:
>>> docTopic
array([[ 0.87100799, 0.12899201],
[ 0.12916713, 0.87083287]])
>>> fit.print_topic(1)
u'0.821*"bank" + 0.179*"stock"'
>>> fit.print_topic(0)
u'0.824*"stock" + 0.176*"bank"'
Question intéressante. J'ai utilisé ce paquet dans un cadre réel et cela a donné de bons résultats. Je suis sûr que ces résultats puants ont quelque chose à voir avec le minuscule corpus que vous utilisez. Pourriez-vous publier les résultats de Python à des fins de comparaison? –
Bien sûr, s'il vous plaît voir le post mis à jour. – schimo
'gensim' et' topicmodels' utilisent des méthodes différentes. '' gensim' utilise l'inférence variationnelle, tandis que 'topicmodels' utilise l'échantillonnage des gibbs réduit ici. 'topicmodels' a aussi une option d'inférence variationnelle, mais elle donne les mêmes résultats merdiques .. Je suis dans une impasse aussi, désolé –