После запуска моделирования LDA в R с использованием text2vec (как показано ниже) я хочу применить жесткий кластер к результатам тем, чтобы получить второй слой для категоризации, но как мне найти способ вычисления расстояний между ними?
#LDA modeling
library(text2vec)
library(stringr)
prep_fun = function(x) {
x %>%
str_to_lower %>% #make text lower case
str_replace_all("[^[:alpha:]]", " ") %>% #remove non-alpha symbols
str_replace_all("\\s+", " ") %>% #collapse multiple spaces
str_replace_all("\\W*\\b\\w\\b\\W*", " ") #No individual letters
}
library(tm)
tok_fun <- function(x) {
tokens <- word_tokenizer(x)
lapply(tokens, tm::stemDocument, language="english")
}
t1 <- Sys.time()
vocab <- create_vocabulary(it_patentes, ngram = c(ngram_min = 1L, ngram_max = 3L),
stopwords = palabrascompletas)
pruned_vocab <- prune_vocabulary(vocab, term_count_min = max(vocab$term_count)*.01,
doc_proportion_min = 0.001)
pruned_vocab <- pruned_vocab[order(-pruned_vocab$term_count),]
pruned_vocab <- pruned_vocab[1:500,]
vectorizer <- vocab_vectorizer(pruned_vocab)
print(difftime(Sys.time(), t1, units = 'sec'))
#Construct document-term matrix
t1 <- Sys.time()
set.seed(17)
dtm <- create_dtm(it_patentes, vectorizer,type = "dgTMatrix", progressbar = FALSE)
print(difftime(Sys.time(), t1, units = 'sec'))
t1 <- Sys.time()
#Model with 5 topics
set.seed(17)
lda_model <- LDA$new(n_topics = 10)
set.seed(17)
doc_topic_distr <- lda_model$fit_transform(x = dtm_tfidf, progressbar = F)
print(difftime(Sys.time(), t1, units = 'sec'))