quanteda преобразовать в топикмодели, сохраняющие документы - PullRequest
0 голосов
/ 29 мая 2018

Я использую пакет awanome quanteda для конвертации моего dfm в формат topicmodels.Однако в процессе я теряю свои документы, которые мне нужны, чтобы определить, какие темы наиболее распространены в моих документах.Это особенно проблема, учитывая, что пакет topicmodels (как и STM) выбирает только ненулевые значения.Следовательно, количество документов в исходной dfm и выходной модели отличается.Можно ли как-то правильно идентифицировать документы в casu?

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Я проверил ваш результат.Из-за вашего оператора select у вас не осталось функций в dfm_speeches.Преобразуйте это в формат "dtm", используемый topicmodels, и вы действительно получите матрицу терминов документа, в которой нет документов и терминов.

Но если ваш выбор с помощью dfm_select приведет к dfm с функциями изатем вы конвертируете его в формат dtm, и вы увидите появление docvars.

dfm_speeches <- dfm(data_corpus_irishbudget2010, 
                    remove_punct = TRUE, remove_numbers = TRUE, remove = stopwords("english")) %>% 
  dfm_trim(min_termfreq = 4, max_docfreq = 10)

dfm_speeches <- dfm_select(dfm_speeches, c("Bruton", "Cowen"))

docvars(dfm_speeches)

dfmlda <- convert(dfm_speeches, to = "topicmodels")

Затем это будет работать с топологическими моделями.Я признаю, что если вы конвертируете в DTM для tm, и у вас нет функций, вы увидите документы, появляющиеся в DTM.Я не уверен, есть ли непреднамеренный побочный эффект при преобразовании в топические модели, если нет функций.

0 голосов
/ 29 мая 2018

Не думаю, что проблема описана четко, но я думаю, что понимаю, что это такое.

Матрица возможностей документов моделей тем не может содержать пустые документы, поэтому они возвращают именованный вектор тем без них.Но вы все равно можете с этим жить, если сопоставите их с именами документов:

# mx is a quanteda's dfm
# topic is a named vector for topics from LDA

docvars(mx, "topic") <- topic[match(docnames(mx), names(topic))]
0 голосов
/ 29 мая 2018

Извините, вот пример.

dfm_speeches <- dfm(data_corpus_irishbudget2010, 
            remove_punct = TRUE, remove_numbers = TRUE, remove = stopwords("english")) %>% 
dfm_trim(min_termfreq = 4, max_docfreq = 10)
dfm_speeches <- dfm_select(dfm_speeches, c("corbyn", "hillary"))

library(topicmodels)
dfmlda <- convert(dfm_speeches, to = "topicmodels") %>% 
dfmlda

Как вы можете видеть, объект dfmlda пуст, потому что я изменил свой dfm, удалив определенные слова.

...