Ошибки при создании wordcloud с помощью пакетов tm и wordcloud в R

Мне немного неясны некоторые ошибки, возникающие при использовании пакета tm.

Я знаю, что функция wordcloud в пакете wordcloud принимает в качестве аргумента корпус:

Как указано в документации: (слова, которые вы даете функции) могут быть либо вектором символов, либо Корпусом.

Все идет нормально.

Имея это в виду, у меня есть следующий простой код:

library(tm)
library(wordcloud)

corpus  <-Corpus(DirSource("/.../MUSIC"), readerControl = list(language="lat")) readerControl = list(language="lat"))

a <- tm_map(corpus, removeWords, c(stopwords("en")), mc.cores=1) 

Я хочу, чтобы эта следующая строка дала мне облако слов:

wordcloud(a)

но вместо этого я получаю следующую ошибку:

Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v),  
nrow = length(allTerms),  :  'i, j, v' different lengths  

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

Есть ли у кого-нибудь понимание природы любой из этих ошибок, кто видел это раньше и, возможно, имеет некоторые идеи о различных обходных путях?

Заранее спасибо.


person tumultous_rooster    schedule 17.04.2014    source источник
comment
Трудно сказать без данных. Поскольку пример в ?wordcloud работает и соответствует вашему рабочему процессу, это говорит мне о проблеме с данными. Используйте inspect, чтобы увидеть Corpus. Возможно, отсутствуют данные, пустые строки. Что-то необычное.   -  person Tyler Rinker    schedule 18.04.2014
comment
У меня была точно такая же проблема, и я так и не смог ее решить. У меня была эта проблема с коробкой Ubuntu, но не с Debian, и в конечном итоге я перешел на коробку Debian, но так и не решил, почему это продолжается.   -  person Stedy    schedule 18.04.2014
comment
Я должен упомянуть, что у меня также была проблема с попыткой преобразовать корпус tm в дендрограмму, даже не загрузив wordcloud.   -  person Stedy    schedule 18.04.2014


Ответы (1)


вам нужно создать DocumentTermMatrix из корпуса. попробуй это,

tdm <- TermDocumentMatrix(corpus)  
matrix <- as.matrix(tdm)  # changed to term.matrix
v <- sort(rowSums(matrix),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
wordcloud(d$word)

результат: это результат

person KRU    schedule 23.04.2015