这是我第一次参加twitter分析。
#Search data from Twitter
library("twitteR")
SearchData = searchTwitter("Bruno Mars", n=1000,lang = 'en')
SearchData
#Scrapping Data
userTimeline("BrunoMars", n=100, maxID =NULL, excludeReplies = FALSE, includeRts = FALSE)
class(SearchData)
head(SearchData)
#Cleanning Data
library(NLP)
library(tm)
TweetList <- sapply(SearchData, function(x) x$getText())
TweetList <- (TweetList[!is.na(TweetList)])
TweetCorpus <- Corpus(VectorSource(TweetList))
TweetCorpus <- iconv(TweetCorpus, to ="utf-8")
#change data to lower case
TweetCorpus <- tm_map(TweetCorpus,removePunctuation)
TweetCorpus <- tm_map(TweetCorpus, removeNumbers)
TweetCorpus <- tm_map(TweetCorpus, tolower)
我在UseMethod("tm_map",x)中得到了这个错误:在我的最后3行中,没有适用于类“字符”对象的'tm_map‘方法。
我试图通过在我的代码中添加content_transformer之前添加removePunctuation、removeNumbers和tolower来解决这个问题,但是我仍然有相同的错误。我真的不知道。我需要你的建议和建议。我已经解决这个问题好几天了,但还没有解决。
非常感谢罗斯
发布于 2017-05-25 04:47:35
tm_map
必须应用于语料库对象,而不是字符向量。但是iconv
将TweetCorpus
对象从一个语料库转换回一个字符向量。
要解决这个问题,请切换预处理的顺序,以便在将tweet转换为语料库对象之前使用iconv
:
TweetList <- c("hello", "world", "Hooray", "yep")
TweetList <- iconv(TweetList, to ="utf-8")
TweetCorpus <- Corpus(VectorSource(TweetList))
发布于 2017-05-25 04:49:02
tm
的最新版本使您不能再使用对简单字符值进行操作的tm_map
函数。因此,问题在于您的tolower
步骤,因为这不是一个“规范”转换(参见getTransformations()
)。代之以
TweetCorpus <- tm_map(TweetCorpus, content_transformer(tolower))
content_transformer
函数包装器将将所有内容转换为语料库中正确的数据类型。您可以将content_transformer
与任何旨在操作字符向量的函数一起使用,以便它能够在tm_map
管道中工作。
https://stackoverflow.com/questions/44180816
复制相似问题