是否有可能找到在给定文档中发生的LDAvis生成的主题的后验概率?如果是这样的话?

时间:2016-12-28 10:27:14

标签: r probability lda text-analysis topicmodels

从问题中可能或可能不是很明显,我对R很新,我可以对此做一些帮助。

在创建主题模型时,我已尝试使用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)

1 个答案:

答案 0 :(得分:0)

在你的代码B中,你已经在创建json时计算了后验。

  1. theta:D×K矩阵是文档主题分布的后验。
  2. phi:K×W矩阵是主题词分布的后验。
  3. 希望有所帮助!