2016-12-28 33 views
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) 

回答

0

在你的代碼B,你已經創造了JSON時計算後驗。

  1. θ:D×K矩陣是文檔主題分佈的後面。
  2. phi:K×W矩陣是主題詞分佈的後驗。

希望有所幫助!

相關問題