Ошибка при определении количества тем в модели скрытого распределения Дирихле с использованием библиотеки ldatuning

Это ошибка результата, и я могу сказать, что это потому, что есть по крайней мере один документ без какого-либо термина, но я не понимаю, почему и как я могу это решить.

prep_fun = function(x) {
  x %>% 
    str_to_lower                         %>%   #make text lower case
    str_replace_all("[^[:alpha:]]", " ") %>%   #remove non-alpha symbols - chao punctuation y #
    str_replace_all("\\s+", " ")         %>%   #collapse multiple spaces 
    str_replace_all("\\W*\\b\\w\\b\\W*", " ")  #Remuevo letras individuales
}
tok_fun <- function(x) {
  tokens <- word_tokenizer(x)
  textstem::lemmatize_words(tokens)
}
it_patentes <- itoken(data$Abstract, 
                      preprocessor = prep_fun, 
                      tokenizer = tok_fun, 
                      ids = data$id,
                      progressbar = F)
vocab <- create_vocabulary(it_patentes, ngram = c(ngram_min = 1L, ngram_max = 3L), 
                           stopwords = tm::stopwords("english"))
pruned_vocab <- prune_vocabulary(vocab, term_count_min =  max(vocab$term_count)*.01, 
                                 doc_proportion_min = 0.001)   
vectorizer <- vocab_vectorizer(pruned_vocab) 
dtm <- create_dtm(it_patentes, vectorizer,type = "dgTMatrix", progressbar = FALSE)   

> #Plot the metrics to get number of topics 
> t1 <- Sys.time()
> tunes <- FindTopicsNumber(
+   dtm = dtm,
+   topics = c(2:25),
+   metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010"),
+   method = "Gibbs",
+   control = list(seed = 17),
+   mc.cores = 4L,
+   verbose = TRUE
+ )
fit models...Error in checkForRemoteErrors(val) : 
  4 nodes produced errors; first error: Each row of the input matrix needs to contain at least one non-zero entry
> print(difftime(Sys.time(), t1, units = 'sec'))
Time difference of 9.155343 secs
> FindTopicsNumber_plot(tunes)
Error in base::subset(values, select = 2:ncol(values)) : 
  object 'tunes' not found

Несмотря на то, что я знаю, что ldatuning предназначен для тематических моделей, я не думаю, что может быть огромная разница, чтобы получить номер для начала тестирования, не так ли?


person Melania CB    schedule 24.10.2019    source источник


Ответы (1)


ldatuning ожидает входную матрицу dtm в другом формате (формат из пакета topicmodels). Вам нужно преобразовать dtm (разреженную матрицу из пакета Matrix) в формат, понятный ldatuning

person Dmitriy Selivanov    schedule 27.10.2019
comment
Спасибо, все, что я сделал, это удалил те документы, в которых было 0 записей, и выдал результат, потому что их было всего 400, можно ли следовать этому результату или есть ли другой способ, которым я могу автоматически вычислить индикаторы номеров групп для text2vec? - person Melania CB; 29.10.2019