我使用R包主题模型运行LDA,并且我一直在尝试获取delta的值,在我的理解中,delta是主题上单词的dirichlet的参数。但是,我无法访问该值。 我只是设法使用
获得初始值LDA@control@delta
或
slot(LDA@control,"delta")
我知道如何为后验分布获取alpha(文档主题的Dir参数),这只是slot(LDA,"alpha")
但是如何获得delta?
非常感谢!
答案 0 :(得分:0)
topicmodels
使用抽样方法的控制参数列表,这里是Gibbs抽样。默认情况下,alpha = 50/k
中会假设delta = 0.1
和control_LDA_Gibbs
的值 - 您当然可以指定其他值。也许您没有正确指定控件。在任何情况下,这里都是一个简短的代码示例,它应该提供有关输出中deltaprior的信息。我希望这有助于解决您的问题。
library(text2vec)
library(topicmodels)
library(slam) #to convert dtm to simple triplet matrix for topicmodels
ntopics <- 10
alphaprior <- 0.1
deltaprior <- 0.001
niter <- 1000
seedpar <- 0
docssubset <- 1:500
docs <- movie_review$review[docssubset]
#Generate document term matrix with text2vec
tokens = docs %>%
tolower %>%
word_tokenizer
it = itoken(tokens, ids = movie_review$id[docssubset], progressbar = FALSE)
vocab = create_vocabulary(it) %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.2)
vectorizer = vocab_vectorizer(vocab)
dtm = create_dtm(it, vectorizer, type = "dgTMatrix")
control_Gibbs_topicmodels <- list(
alpha = alphaprior
,delta = deltaprior
,iter = niter
,burnin = 100
,keep = 50
,nstart = 1
,best = TRUE
,seed = seedpar
)
ldatopicmodels <- LDA(as.simple_triplet_matrix(dtm)
,k = ntopics
,method = "Gibbs"
,control = control_Gibbs_topicmodels
)
str(ldatopicmodels)
ldatopicmodels@control@delta