我正在尝试使用 LDA in R 将IT支持服务单分类为相关主题。
我的语料库有: 5,550个文档和1882个术语。我以12,000个词开始,但在删除常见的停用词和其他噪音词后,我已经登陆了1800多个话。
在检查LDAvis输出时,算法返回的结果/主题非常好,我通过检查语料库的样本进行了验证。我在输出中的单词是专属的主题,一旦在第一次阅读时就可以到达主题
但是在检查文档主题概率矩阵时,矩阵中指定的概率在大多数情况下非常低(理想情况下,它应该很高,因为我们得到的主题是好的)
我已经尝试了以下内容 - 尝试不同的主题,增加迭代次数但到目前为止没有任何帮助。
如果我增加语料库中的术语数(不删除某些单词),那么我最终会出现错误的主题表示
我的代码和LDA参数是:
burnin <- 4000
iter <- 2000
thin <- 500
seed <-list(2003,5,63,100001,765)
nstart <- 5
best <- TRUE
k <- 29 ### established by log of likelihood function
ldaOut <-LDA(dtm,k, method="Gibbs",
control=list(nstart=nstart, seed = seed,
best=best, burnin = burnin, iter = iter, thin=thin,keep=keep))
LDA输出的Str是:
..@ seedwords : NULL
..@ z : int [1:111776] 12 29 3 27 11 12 14 12 12 24 ...
..@ alpha : num 1.72
..@ control :Formal class 'LDA_Gibbscontrol' [package "topicmodels"] with 14 slots
..@ delta : num 0.1
..@ iter : int 500
..@ thin : int 500
..@ burnin : int 4000
..@ initialize : chr "random"
..@ alpha : num 1.72
..@ seed : int [1:5] 2003 5 63 100001 765
..@ verbose : int 0
..@ prefix : chr
..@ save : int 0
..@ nstart : int 5
..@ best : logi TRUE
..@ keep : int 0
..@ estimate.beta: logi TRUE
..@ k : int 29
..@ terms : chr [1:1882] "–auto""| __truncated__ "–block""|
..@ documents : chr [1:5522] "1" "2" "3" "4" ...
..@ beta : num [1:29, 1:1882] -10.7 -10.6 -10.6 -10.5 -10.6 ...
..@ gamma : num [1:5522, 1:29] 0.0313 0.025 0.0236 0.0287 0.0287
..@ wordassignments:List of 5
..$ i : int [1:73447] 1 1 1 1 1 2 2 2 2 2 ...
..$ j : int [1:73447] 175 325 409 689 1185 169 284 316 331 478 ...
..$ v : num [1:73447] 12 29 3 27 4 12 12 12 3 3 ...
..$ nrow: int 5522
..$ ncol: int 1882
..- attr(*, "class")= chr "simple_triplet_matrix"
..@ loglikelihood : num -408027
..@ iter : int 500
..@ logLiks : num(0)
..@ n : int 111776
任何人都可以指导我如何提高文档主题概率,或者我们可以采取哪些措施来改进算法。
免责声明:我是第一次做LDA,所以如果你能给我一些资料来找到所需的信息,我真的很感激
答案 0 :(得分:0)
为什么需要大概率?如果你有一个大字典,你可能从LDA获得非常小的概率值,这很好。就每个主题中的单词排名不同而言,您正处于争夺良好主题模型的竞争中。如果您有兴趣从非常基础学习主题模型,我建议您查看此幻灯片(http://www.cs.virginia.edu/~hw5x/Course/CS6501-Text-Mining/_site/docs/topic%20models.pptx)。