清理推文进行情感分析。

问题描述 投票:0回答:1

我用下面的代码来清理Tweet中的用户名的语料库。但有些名字在词云中。为什么它们是错误的?

removeUsername <- function(x) gsub('@[^[:space:]]*', '', x)

removeURL <- function(x) gsub("http[:alnum:]*","",x) 
removeNumPunct<- function(x) gsub("[^[:alpha:][:space:]]*","",x) 
removeUsername <- function(x) gsub('@[^[:space:]]*', '', x) 
mycorpus <- tm_map(mycorpus,PlainTextDocument) 
mycorpus <- tm_map(mycorpus,content_transformer(removeURL)) 
mycorpus <- tm_map(mycorpus,content_transformer(tolower))
mycorpus <- tm_map(mycorpus,stripWhitespace) 
mycorpus <- tm_map(mycorpus,content_transformer(removeNumPunct)) 
mycorpus <- tm_map(mycorpus,content_transformer(removeNumbers))
mycorpus <- tm_map(mycorpus, content_transformer(removeUsername))

Stopwords <- readLines("/Users/Stopwords.txt") 
mycorpus <- tm_map(mycorpus, function(x) removeWords(x, Stopwords )) 

r sentiment-analysis
1个回答
1
投票

你的问题在于你执行代码的顺序。你首先删除标点符号,然后你想删除twitter的句柄。这将不会被发现,因为删除标点符号已经删除了@。从剥离空白处也是一样,这一步你应该在最后做。

下面的顺序应该可以解决twitter句柄和whitespace的问题。

mycorpus <- tm_map(mycorpus, PlainTextDocument) 
mycorpus <- tm_map(mycorpus, content_transformer(removeUsername))
mycorpus <- tm_map(mycorpus, content_transformer(removeURL)) 
mycorpus <- tm_map(mycorpus, content_transformer(tolower))
mycorpus <- tm_map(mycorpus, content_transformer(removeNumPunct)) 
mycorpus <- tm_map(mycorpus, content_transformer(removeNumbers))
mycorpus <- tm_map(mycorpus, stripWhitespace) 

另外,tm已经包含了去除标点符号和数字的功能,可以不使用 content_transformer,就像下面的例子。

mycorpus <- tm_map(mycorpus, removePunctuation)
mycorpus <- tm_map(mycorpus, removeNumbers)

你可以检查包quanteda。它有很多这样的twitter函数已经作为标志包含在 tokens 职能。

© www.soinside.com 2019 - 2024. All rights reserved.