2016-12-28 16 views
0

質問からも分かるかもしれませんが、私はRにはかなり新しいので、これについて少し助けてもらえます。LDAvisで生成されたトピックの事後確率を特定の文書で見つけることは可能ですか?どうすればいい?

トピックモデルを作成するときは、以下の(A)と(B)のLDAとLDAvisコードを試しました。 (A)のLDAは、他のデータセットの変数を使って回帰を実行していた私のコーパス内の各文書で発生する事後確率を見つけることができます。 (B)、LDAvisを使用したトピック生成アプローチは、(A)よりも「より良い」、より一貫したトピックを生成しますが、特定のドキュメントで発生するトピックの事後確率を見つける方法を工夫することはできませんLDAvisのアプローチ、またはこれを不可能な課題として割り引くかどうかを決定します。

すべてのアドバイスをいただければ幸いです。

ありがとうございました!あなたのコードのBでは

(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

JSONを作成するとき、あなたはすでに後部を計算します。

  1. シータ:D×K行列は、文書トピック分布の後にある。
  2. phi:K×W行列はトピック用語分布の事後確率である。

希望すると助かります!

関連する問題