2014-09-06 21 views
7

Tôi đang tạo một Đám mây Từ dựa trên Tweets từ nhiều đội thể thao khác nhau. Mã này thực hiện thành công khoảng 1 trong 10 lần:TermDocumentMatrix đôi khi ném lỗi

handle <- 'arsenal' 
txt <- searchTwitter(handle,n=1000,lang='en') 
t <- sapply(txt,function(x) x$getText()) 
t <- gsub('http.*\\s*|RT|Retweet','',t) 
t <- gsub(handle,'',t) 
t_c <- Corpus(VectorSource(t)) 
tdm = TermDocumentMatrix(t_c,control = list(removePunctuation = TRUE,stopwords = stopwords("english"),removeNumbers = TRUE, content_transformer(tolower))) 
m = as.matrix(tdm) 
word_freqs = sort(rowSums(m), decreasing=TRUE) 
dm = data.frame(word=names(word_freqs), freq=word_freqs) 
wordcloud(dm$word, dm$freq, random.order=FALSE, colors=brewer.pal(8, "Dark2"),rot.per=0.5) 

Các khác 9 trong số 10 lần, nó ném các lỗi sau:

Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 
    'i, j, v' different lengths 
In addition: Warning messages: 
1: In mclapply(unname(content(x)), termFreq, control) : 
    all scheduled cores encountered errors in user code 
2: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 
    NAs introduced by coercion 

Bất kỳ ý tưởng guys? Tôi đã googled, nhưng cho đến nay đã đi lên ngắn! Hãy nhớ rằng tôi là một người mới tuyệt đối trong R!

Trả lời

5

Vì vậy, sau một chút chơi xung quanh, dòng mã sau đây đã hoàn toàn cố định vấn đề của tôi:

t <- iconv(t,to="utf-8-mac") 
+0

Có thể xác nhận điều này đã khắc phục sự cố của tôi ngay lập tức (chạy trên máy Mac). – timothyjgraham

2

Tôi cho rằng bạn đã sử dụng các dòng mã sau đây ở đâu đó trước khi sử dụng DocumentTermMatrix lệnh.

corpus = tm_map(corpus, PlainTextDocument) 

dòng mã này chuyển đổi tất cả các văn bản trong corpus để PlainTextDocument, mà trên đó các DocumentTermMatrix chức năng không hoạt động đúng.

Chỉ cần lặp lại toàn bộ quá trình tạo kho văn bản và xử lý trước nó bỏ qua lệnh trên và bạn sẽ sẵn sàng sử dụng.

+0

Điều này đã giải quyết được vấn đề của tôi. –

0

Nếu bạn loại bỏ:

corpus = tm_map(corpus, PlainTextDocument) 

bạn cũng phải loại bỏ:

t_c <- Corpus(VectorSource(t)) 

Sau đó, bạn sẽ nhận được đầu ra phù hợp với TermDocumentMatrix.

Các vấn đề liên quan