因此,我尝试按照tidytext网站:https://www.tidytextmining.com/ngrams.html上的步骤,使用tidytext包进行双字主题建模。

我能够进入“ word_counts”部分,其中R计算每个二元语法的频率。

“ word_counts”返回以下内容:

   customer_id       word          n
   <chr>            <chr>        <int>
 1 00000001234  sample text        45
 2 00000002345  good morning       30
 3 00000003456  happy friday       24


下一步是将上方的信息转换为dtm格式

我的代码如下:

lda_dtm <- word_counts %>%
  cast_dtm(customer_id, word, n)


出现警告消息:

Warning message:
Trying to compute distinct() for variables not found in the data:
- `row_col`, `column_col`
This is an error, but only a warning is raised for compatibility reasons.
The operation will return the input unchanged.


但是“ lda_dtm”看起来像是正确格式的。

lda_dtm
<<DocumentTermMatrix (documents: 9517, terms: 341545)>>
Non-/sparse entries: 773250/3249710515
Sparsity           : 100%
Maximal term length: NA
Weighting          : term frequency (tf)


但是,当我尝试运行lda时,它不起作用。

burnin <- 4000
iter <- 300
thin <- 500
seed <-list(2003,5,63,100001,765)
nstart <- 5
best <- TRUE
k <- 6

out_LDA <- LDA(lda_dtm,
                            k = k,
                            method="Gibbs",
                            control = list(nstart=nstart,
                                           seed = seed,
                                           best=best,
                                           burnin = burnin,
                                           iter = iter,
                                           thin = thin))


提出了以下警告:

Error in seq.default(CONTROL_i@iter, control@burnin + control@iter, by = control@thin) :
  wrong sign in 'by' argument


我在整洁的文本网站上没有关于二元语法的主题建模教程,该教程专门针对二元语法。我应该如何调整格式以使其适用于双向语法?

最佳答案

1:您从cast_dtm收到的消息实际上来自cast_sparse。 github上有两个问题,#120和#121,可以解决这个问题。目前,此问题已在github的软件包中修复,但尚未发布。

如果愿意,可以使用devtools::install_github("juliasilge/tidytext")从github安装它。

2:从LDA得到的错误与1无关。如果仅运行out_LDA <- LDA(lda_dtm, k = k),则LDA可以正常运行。问题出在您的控制选项thin上。该值应小于或等于iter参数。在您的情况下,将其设置为500,而将iter设置为300。因此会出现错误。您可以看到当Thin比iter高1时出现错误。

关于r - 如何在R中使用整洁的文本进行Bi-gram主题建模?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51106727/

10-09 02:55