Как объединить DTM с исходным фреймом данных с меньшим количеством удаленных твитов / документов? - PullRequest
0 голосов
/ 29 мая 2018

Итак, я создаю основу для своего исследования твитов.Часть моей структуры включает создание окончательного набора данных, который будет использоваться для целей классификации и моделирования тем в дальнейшем.

У меня есть три объекта:
1.) ngram.features.df - содержит 44159 строк / твитов,3 столбца, а именно: ID, X1 и X2
2.) tweets.corpus - корпус, созданный из столбца ngram.features.df. X1, X1 содержит очищенный твит для обработки
3.) mydtm - это термин документаматрица уменьшена до 44043 строк / твитов, потому что я удалил строки / твиты с doc.lengths = 0. Это было сделано через:
doc.lengths <- rowSums(as.matrix(DocumentTermMatrix(tweets.corpus))) mydtm <- DocumentTermMatrix(tweets.corpus[doc.lengths > 0], control = list(wordLengths = c(3,10)))

> mydtm <<DocumentTermMatrix (documents: 44043, terms: 9252)>> Non-/sparse entries: 325412/407160424 Sparsity : 100% Maximal term length: 10 Weighting : term frequency (tf)

Как выможно видеть, что mydtm уменьшено до 44043 строк, в то время как у моего исходного кадра данных ngram.features.df, из которого был построен mydtm, было 44159 строк.

Теперь я не смог сохранить ID's оригиналадокументы / твиты из фрейма данных в mydtm.

Я попробовал один в Как вручную установить идентификатор документа в корпусе? , но это относится к установке идентификаторов внутри корпуса, а не в DTM.

Теперь проблема в merge.Я буду merge ngram.features.df (44159) с версией фрейма данных mydtm (44043).Тем не менее, из-за сокращения они будут иметь непоследовательное количество строк / твитов / документов.Таким образом, необходимо сохранить удостоверения личности.

Кто-нибудь может оказать помощь?

1 Ответ

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

После удаления пустых документов из dtm вы можете создать data.frame и создать новый столбец с rownames из dtm.Затем вы можете объединить этот data.frame с вашим ngram.features.df data.frame

mydtm_as_df <- data.frame(docs = rownames(as.matrix(mydtm )), as.matrix(mydtm ), stringsAsFactors = FALSE)
...