0
從這個問題可能會或可能不明顯,我對R來說很新,而且我可以在這方面提供一些幫助。是否有可能找到LDAvis在給定文檔中發生的主題的後驗概率?如果是這樣,怎麼辦?
創建主題模型時,我已經嘗試了LDA和LDAvis - 下面(A)和(B)中的代碼。 (A)中的LDA使我能夠找到我的語料庫中每個文檔中出現的主題的後驗概率,我曾經用其他數據集中的變量運行迴歸。 (B)中,使用LDAvis的主題生成方法生成的是比(A)更好,更一致的主題,但是我一直未能找出如何找出給定文檔中出現的主題的後驗概率採用LDAvis方法,還是將其作爲不可能完成的任務來打折。
所有的建議非常感謝。
謝謝!
(A)
set.seed(1)
require(topicmodels)
set.seed(1)
P5LDA4 <- LDA(P592dfm, control=list(seed=1), k = 23)
set.seed(1)
terms(P5LDA4, k =30)
#find posterior probability
postTopics <- data.frame(posterior(P5LDA4)$topics)
postTopics
(B)
# MCMC and model tuning parameters:
K <- 23
G <- 5000
alpha <- 0.02
eta <- 0.02
# convert to lda format
dfmlda <- convert(newdfm, to = "lda")
# fit the model
library(lda)
set.seed(1)
t1 <- Sys.time()
fit <- lda.collapsed.gibbs.sampler(documents = dfmlda$documents, K = K,
vocab = dfmlda$vocab,
num.iterations = G, alpha = alpha,
eta = eta, initial = NULL, burnin = 0,
compute.log.likelihood = TRUE)
t2 <- Sys.time()
t2 - t1
#Time difference of 3.13337 mins
save(fit, file = "./fit.RData")
load("./fit.RData")
library(LDAvis)
set.seed(1)
json <- createJSON(phi = t(apply(t(fit$topics) + eta, 2, function(x) x/sum(x))),
theta = t(apply(fit$document_sums + alpha, 2, function(x) x/sum(x))),
doc.length = ntoken(newdfm),
vocab = features(newdfm),
term.frequency = colSums(newdfm))
serVis(json, out.dir = "./visColl", open.browser = TRUE)