Я использую механизм моделирования тем 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)