Использование tidytext и broom, но не найти более аккуратного для LDA_VEM

В книге tidytext есть примеры с tidier для тематических моделей:

library(tidyverse)
library(tidytext)
library(topicmodels)
library(broom)

year_word_counts <- tibble(year = c("2007", "2008", "2009"),
+                            word = c("dog", "cat", "chicken"),
+                            n = c(1753L, 1157L, 1057L))

animal_dtm <- cast_dtm(data = year_word_counts, document = year, term = word, value = n)

animal_lda <- LDA(animal_dtm, k = 5, control = list( seed = 1234))

animal_lda <- tidy(animal_lda, matrix = "beta")

# Console output
Error in as.data.frame.default(x) : 
  cannot coerce class "structure("LDA_VEM", package = "topicmodels")" to a data.frame
In addition: Warning message:
In tidy.default(animal_lda, matrix = "beta") :
  No method for tidying an S3 object of class LDA_VEM , using as.data.frame

Повторение ошибки, которая также видна здесь но в данном случае library(tidytext) присутствует.

Ниже приведен список всех пакетов соответствующих им версий:

 packageVersion("tidyverse")
 ‘1.2.1’

 packageVersion("tidytext")
 ‘0.1.6’   

 packageVersion("topicmodels")
 ‘0.2.7’  

 packageVersion("broom")
 ‘0.4.3’

Вывод из вызова функции sessionInfo():

R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] broom_0.4.3       tidytext_0.1.6    forcats_0.2.0     stringr_1.2.0     dplyr_0.7.4       purrr_0.2.4       readr_1.1.1       tidyr_0.8.0      
 [9] tibble_1.4.2      ggplot2_2.2.1     tidyverse_1.2.1   topicmodels_0.2-7

loaded via a namespace (and not attached):
 [1] modeltools_0.2-21 slam_0.1-42       NLP_0.1-11        reshape2_1.4.3    haven_1.1.1       lattice_0.20-35   colorspace_1.3-2  SnowballC_0.5.1  
 [9] stats4_3.4.3      yaml_2.1.16       rlang_0.1.6       pillar_1.1.0      foreign_0.8-69    glue_1.2.0        modelr_0.1.1      readxl_1.0.0     
[17] bindrcpp_0.2      bindr_0.1         plyr_1.8.4        munsell_0.4.3     gtable_0.2.0      cellranger_1.1.0  rvest_0.3.2       psych_1.7.8      
[25] tm_0.7-3          parallel_3.4.3    tokenizers_0.1.4  Rcpp_0.12.15      scales_0.5.0      jsonlite_1.5      mnormt_1.5-5      hms_0.4.1        
[33] stringi_1.1.6     grid_3.4.3        cli_1.0.0         tools_3.4.3       magrittr_1.5      lazyeval_0.2.1    janeaustenr_0.1.5 crayon_1.3.4     
[41] pkgconfig_2.0.1   Matrix_1.2-12     xml2_1.2.0        lubridate_1.7.2   assertthat_0.2.0  httr_1.3.1        rstudioapi_0.7    R6_2.2.2         
[49] nlme_3.1-131      compiler_3.4.3   

person Isaiah    schedule 13.02.2018    source источник


Ответы (4)


Удаление .Rhistory и .RData привело к правильному поведению.

person Isaiah    schedule 15.02.2018

Вау, это очень загадочно для меня. Я не могу воспроизвести эту ошибку. Я установил все те же версии / и т. Д., Что и вы, за исключением того, что я на MacOS, а не на Windows. У меня есть тесты для tidiers LDA, которые работают и передайте Windows на Appveyor, поэтому я ожидаю, что это сработает.

Код, который у вас есть, должен работать без загрузки broom, чего бы это ни стоило.

library(tidyverse)
library(tidytext)
library(topicmodels)

year_word_counts <- tibble(year = c("2007", "2008", "2009"),
                           word = c("dog", "cat", "chicken"),
                           n = c(1753L, 1157L, 1057L))

animal_dtm <- cast_dtm(data = year_word_counts, document = year, term = word, value = n)

animal_lda <- LDA(animal_dtm, k = 5, control = list( seed = 1234))

class(animal_lda)
#> [1] "LDA_VEM"
#> attr(,"package")
#> [1] "topicmodels"

tidy(animal_lda, matrix = "beta")
#> # A tibble: 15 x 3
#>    topic term                                                beta
#>    <int> <chr>                                              <dbl>
#>  1     1 dog     0.0000000000000000000000000000000000000000000372
#>  2     2 dog     0.0000000000000000000000000000000000000000000372
#>  3     3 dog     0.0000000000000000000000000000000000000000000372
#>  4     4 dog     1.00                                            
#>  5     5 dog     0.0000000000000000000000000000000000000000000372
#>  6     1 cat     0.0000000000000000000000000000000000000000000372
#>  7     2 cat     0.0000000000000000000000000000000000000000000372
#>  8     3 cat     0.0000000000000000000000000000000000000000000372
#>  9     4 cat     0.0000000000000000000000000000000000000000000372
#> 10     5 cat     1.00                                            
#> 11     1 chicken 0.0000000000000000000000000000000000000000000372
#> 12     2 chicken 0.0000000000000000000000000000000000000000000372
#> 13     3 chicken 1.00                                            
#> 14     4 chicken 0.0000000000000000000000000000000000000000000372
#> 15     5 chicken 0.0000000000000000000000000000000000000000000372

Создано 14 февраля 2018 г. с помощью пакета reprex (v0.2.0).

Что произойдет, если вы также загрузите library(methods)?

person Julia Silge    schedule 15.02.2018
comment
Пробовал две комбинации: без Метлы и без Метлы, но с Методом. Обе комбинации давали одну и ту же ошибку. - person Isaiah; 15.02.2018
comment
Это также происходило на другом ПК с Windows. Я попытался удалить .Rhistory и .RData. На обоих ПК код работал правильно. На второй машине, которую я пробовал, я заметил, что перед удалением, когда RStudio открывал проект, я получал сообщение о загрузке требуемых моделей тем пакета. После удаления двух файлов пошло сообщение о загрузке. - person Isaiah; 15.02.2018
comment
Вы сохраняете свое рабочее пространство как .Rdata между сеансами? Интересно, происходит ли с этим что-то странное... Для протокола: я настоятельно рекомендую всем пользователям R отказаться от такого рабочего процесса: stat545.com/ - person Julia Silge; 15.02.2018
comment
Не обычно, но бывает. Больше не надо! - person Isaiah; 16.02.2018

Добавление к очень полезному ответу Юлии Силге:

Я тоже считаю, что здесь виновато взаимодействие между загрузкой .Rdata и пакетом топиков. Но вы по-прежнему можете работать с сохраненным рабочим пространством:

Мне удалось устранить проблему, начав с нового перезапуска RStudio, загрузив пакет топиков и затем загрузив .Rdata. Выполняется в этой последовательности, сообщение об ошибке исчезает. Загрузка сначала данных, а потом пакета не работает.

Еще одно слово о рабочих пространствах: в случае с LDA их использование вместе с вашими сценариями RScript — это действительно единственный способ, который я смог найти для эффективной работы. В зависимости от параметров и размера корпуса подгонка LDA-модели может занять несколько часов. Крайне важно иметь возможность сохранить подгонку модели, чтобы затем проводить дальнейший анализ в будущем.

person Matthias Reccius    schedule 22.05.2019
comment
Я часто использую файлы RDS в таких случаях: saveRDS(animal_lda, "animal_lda.rds") animal_lda <- readRDS("animal_lda.rds") - person Isaiah; 25.05.2019

У меня была такая же проблема, когда я загрузил сохраненный LDA. Наконец, без видимых причин, когда я перезапустил сеанс R, я снова заработал.

person Léo Henry    schedule 23.04.2019