#r #quanteda
#r #quanteda
Вопрос:
В подходе к тематическому моделированию, где у нас есть 2 разных результата тематических моделей, подобных этому:
library(dplyr)
library(ggplot2)
library(stm)
library(janeaustenr)
library(tidytext)
library(quanteda)
testDfm <- gadarian$open.ended.response %>%
tokens(remove_punct = TRUE, remove_numbers = TRUE, remove_symbols = TRUE) %>%
dfm()
out <- convert(testDfm, to = "stm")
documents <- out$documents
vocab <- out$vocab
meta <- out$meta
topic_model1 <- stm(documents = out$documents, vocab = out$vocab, K = 5)
topic_model2 <- stm(documents = out$documents, vocab = out$vocab, K = 3)
давайте назовем их topic_model1 и topic_model2 (возможно, было бы лучше использовать другой ввод данных, но набор данных gadarian был наиболее простым из соображений воспроизводимости).
Есть ли какой-либо способ сравнить текстовые результаты двух моделей и предоставить какой-то метаанализ или создать какую-либо диаграмму для сравнения тем двух моделей?
Ответ №1:
сравнение двух моделей немного сложно — потому что у нас есть word, темы, две модели и, конечно, бета-значение. Простая диаграмма для визуализации одной модели будет такой:
library(tidytext)
library(dplyr)
library(ggplot2)
tidytext::tidy(topic_model2) %>%
dplyr::group_by(topic) %>%
dplyr::slice_max(beta, n = 5) %>% # just the top 5 beta values to keep the plot readable
ggplot2::ggplot(aes(reorder(term, beta), beta))
ggplot2::geom_col()
ggplot2::coord_flip()
ggplot2::facet_wrap(~topic)
Этот подход может быть использован и усовершенствован для параллельного создания тепловых карт для каждой модели:
tidytext::tidy(topic_model1) %>%
dplyr::group_by(topic) %>%
dplyr::slice_max(beta, n = 5) %>%
dplyr::mutate(MODEL = "K5") %>%
dplyr::union(tidytext::tidy(topic_model2) %>%
dplyr::group_by(topic) %>%
dplyr::slice_max(beta, n = 5) %>%
dplyr::mutate(MODEL = "K3") ) %>%
ggplot2::ggplot(aes(topic, term, fill = beta))
ggplot2::geom_tile()
ggplot2::facet_wrap(~MODEL)
Вы можете взглянуть на это руководство и примеры, чтобы получить вдохновение: https://www.tidytextmining.com/topicmodeling.html