簡體   English   中英

R中的函數topicmodels :: lda錯誤

[英]Error with function topicmodels::lda in R

我正在嘗試使用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
        }
    }

所以我的文檔矩陣是d * w的稀疏矩陣,幾乎所有元素都是0或1。

然后,我需要我的docs矩陣成為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,瑪麗亞

您的確切問題是不可重現的,因為您沒有定義d,t,w,alpha或beta,並且沒有為rdirichlet()rdiscrete()函數調用加載適當的程序包。 但是,我很確定您的問題是從MASS包中調用了lda()函數-用於線性判別分析,而不是潛在的狄利克雷分配-而不是topicmodels包中的LDA()函數。 R區分大小寫,因此這些大寫有區別。 另外請注意,如果您認為將來可能遇到類似的問題,但對象名稱完全相同,則可以通過::形式的名稱空間指定想要的對象,例如topicmodels::LDA()

無論如何,我無法重現您的示例,但我認為該示例應說明您的錯誤和有效的解決方案。

> library(topicmodels)
> data(AssociatedPress)
> docs = AssociatedPress[1:100]
> ldafitmodel <- lda(docs, 4, method = "Gibbs")
Error in lda.default(docs, 4, method = "Gibbs") : 
  nrow(x) and length(grouping) are different
> (ldafitmodel <- LDA(docs, 4, method = "Gibbs"))
A LDA_Gibbs topic model with 4 topics. 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM