术语-文档矩阵有时会出现错误

7

我正在基于不同运动团队的推文创建词云。以下代码执行成功的概率约为10分之1:

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)

另外10次中的9次,会抛出以下错误:
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

大家有什么想法吗?我已经谷歌了,但目前没有发现!请记住,我是R的绝对新手!

3个回答

5
所以经过一些尝试,以下代码完全解决了我的问题:
t <- iconv(t,to="utf-8-mac")

可以确认这立刻解决了我的问题(在 Mac 上运行)。 - timothyjgraham

2

我想你在使用DocumentTermMatrix命令之前,在某处使用了以下代码行。

corpus = tm_map(corpus, PlainTextDocument)

这行代码将语料库中的所有文本转换为PlainTextDocument,但是在这种文本格式上,DocumentTermMatrix函数不能正常工作。
只需重复整个创建语料库和预处理流程,跳过上述命令,你就可以顺利进行。

0
如果你移除了:

corpus = tm_map(corpus, PlainTextDocument)

你还需要移除:

t_c <- Corpus(VectorSource(t))

那么你将得到 TermDocumentMatrix 的正确输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接