我正在尝试使用 R 中 topicmodels 包中的 LDA 模型。我需要测量方法的不稳定性,因此我从 Dirichlet 分布中生成了 w = 3000 个单词、t = 8 个主题和 d = 50 个文档的真实参数,其中大约 60 个单词每一个:
Theta = t(rdirichlet(d, alpha))
Phi = t(rdirichlet(t, beta))
docs = matrix(0, nrow = d, ncol = w)
for (i in 1:d) {
curn = rnorm(1, mean = 60, sd = 10)
for (j in 1:curn) {
curt = rdiscrete(1, Theta[,d], 1:t)
curw = rdiscrete(1, Phi[,curt], 1:w)
docs[i, curw] = docs[i, curw] + 1
}
}
所以我的 docs 矩阵是一个稀疏矩阵 d * w,几乎所有元素都是 0 或 1。
然后我需要我的文档矩阵成为 DocumentTermMatrix 类的对象,以便在 topicmodels:lda() 中使用它:
docs = as.DocumentTermMatrix(docs, weighting = weightTf)
我需要使用吉布斯采样方法,所以我写
ldafitmodel <- lda(docs, t, method = "Gibbs")
然后我得到:
lda.default(docs, t, method = "Gibbs") 中的错误:nrow(x) 和 length(grouping) 不同
我猜这个 topicmodels 包使用 MASS 包,但是这个分组参数是我无法明确控制的,可以吗?或者我对我的数据做错了什么?
请帮我!
BR,玛丽亚