【发布时间】:2017-02-01 06:14:49
【问题描述】:
我正在尝试使用 R 中的 LDA 将 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,所以如果你能给我一些资源来找到所需的信息,我将不胜感激
【问题讨论】:
-
这是一个关于数据分析的问题,而不是编程问题。您应该在Cross Validated 或其他更合适的网站上询问此类问题。
标签: r algorithm lda topic-modeling