Я ищу оптимальное количество тем при моделировании тем с text2vec в R - PullRequest
0 голосов
/ 12 октября 2019

Я использую механизм моделирования тем lda для 230 тыс. Текстов, в то время как для большинства из них я использую библиотеку text2vec из R.

Я видел учебные пособия, в которых упоминается, как запускать графы когерентности с различными алгоритмами, чтобы выбрать наилучшее число тем «k» здесь и здесь , но ни одногоиз них соответствуют text2vec. В text2vec.org я могу получить учебник, но в конце они побуждают меня начать играть с гиперпараметрами, чтобы получить из них лучшее моделирование, но я ищу действительно оптимальный среди всех возможных вариантов.

Предварительная оценка кодирования перед моделированием

library(text2vec)
library(SnowballC)
library(stringr)
#Define preprocessing function and tokenization function
prep_fun = function(x) {
       x %>% 
         str_to_lower                         %>%   #make text lower case
         str_replace_all("[^[:alpha:]]", " ") %>%   #remove non-alpha symbols - bye punctuation & #
         str_replace_all("\\s+", " ")         %>%   #collapse multiple spaces 
         str_replace_all("\\W*\\b\\w\\b\\W*", " ")  #Non individual letters
    }

tok_fun <- function(x) {
  tokens <- word_tokenizer(x)
  lapply(tokens, SnowballC::wordStem, language="en")
}

it_text <- itoken(data$text, 
                  preprocessor = prep_fun, 
                  tokenizer = tok_fun, 
                  ids = data$id,
                  progressbar = F)
vocab <- create_vocabulary(it_text, ngram = c(ngram_min = 1L, ngram_max = 3L), 
                          stopwords = stopwords)
pruned_vocab <- prune_vocabulary(vocab, 
                                term_count_min =  max(vocab$term_count)*.01, 
                                doc_proportion_max = 0.5,    
                                doc_proportion_min = 0.001)   
vectorizer <- vocab_vectorizer(pruned_vocab)
dtm <- create_dtm(text, vectorizer,type = "dgTMatrix", progressbar = FALSE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...