LDA Не различает более одной темы - что не так? - PullRequest
0 голосов
/ 17 мая 2019

Я только недавно начал использовать LDA в своей работе, однако каждый раз, когда я использовал LDA (в R), возвращаемые темы в основном эквивалентны в высших терминах.По сути, есть только одна скрытая тема, которую можно отличить от моих результатов.Эта проблема возникала последовательно на разных наборах данных, разных тем и разных источников.Примечание: все наборы данных находятся в 10000 строк - возможно, они слишком малы?

Я использую этот код;

data_DL_dtm <- NPS_Clientidentified %>%
  filter(!is.na(Comment)) %>%
  unnest_tokens(word, Comment) %>%
  anti_join(stop_words) %>%
  anti_join(custom_stop_words) %>%
  count(`Full Name`, word) %>%
  cast_dtm(`Full Name`, word, n)
nrow(data_DL_tidy)
DL_lda <- LDA(data_DL_dtm, k = 3, control = list(seed = 1234))

DL_topics <- tidy(DL_lda, matrix="beta")
DL_top_terms <- DL_topics %>%
  group_by(topic) %>%
  top_n(10, beta) %>%
  ungroup() %>%
  arrange(topic, -beta)

DL_top_terms %>%
  mutate(term = reorder(term, beta)) %>%
  ggplot(aes(term, beta, fill = factor(topic))) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ topic, scales = "free") +
  coord_flip()

Что дает мне это:

https://i.imgur.com/zE2SeFX.png

Я бы не ожидал, что система будет отображаться как верхний термин для каждой темы.

Я что-то здесь упускаю?ИЛИ есть ли способ улучшить мои модели LDA?

1 Ответ

0 голосов
/ 20 мая 2019

Похоже, что ваши темы совпадают, это может происходить по трем причинам:

  1. вы, вероятно, повторяете слишком много раз
  2. вы слишком часто проходите через корпус
  3. низкий объем данных - 10 000 строк - это мало, мои LDA обычно обучаются на 1,5-1,7 миллиона строк. Я получаю низкую согласованность на 300 000 или меньше, но не сходящихся тем

Надеюсь, это поможет:)

...