我的朋友和我正在努力将我们收集的一些推文转换为dtm,以便能够使用R中的机器学习运行情感分析。任务必须在R中执行,因为它是用于我们的考试大学,其中R被要求用作工具。
在我们开始编写更大的数据集之前,我们最初收集了一个较小的样本,以测试我们的代码是否正常工作。我们的问题是,我们似乎无法弄清楚如何从dtm中删除自定义单词。到目前为止,我们的代码看起来像这样(我们主要使用tm包):
file <- read.csv("Tmix.csv",
row.names = NULL, sep=";", header=TRUE) #just for loading the dataset
tweetsCorpus <- Corpus(VectorSource(file[,1]))
tweetsDTM <- DocumentTermMatrix(tweetsCorpus,
control = list(verbose = TRUE,
asPlain = TRUE,
stopwords = TRUE,
tolower = TRUE,
removeNumbers = TRUE,
stemWords = FALSE,
removePunctuation = TRUE,
removeSeparators = TRUE,
removeTwitter = TRUE,
stem = TRUE,
stripWhitespace = TRUE,
removeWords = c("customword1", "customword2", "customword3")))
我们还尝试在转换为dtm之前删除单词,使用removeWords命令,以及所有&#34; removeXXX&#34; tm包中的命令,然后将其转换为dtm,但它似乎不起作用。
重要的是我们不要简单地删除所有单词,即5个或更少的观察值。我们需要所有观察,除了我们想要删除的观察,例如https-adresses和类似的东西。
有谁知道我们是怎么做到的?
还有第二个问题:是否有更简单的方法可以删除以https开头的所有单词,而不必将所有地址单独写入代码中。例如,我们正在编写"httpstcokozcejeg", "httpstcolskjnyjyn", "httpstcolwwsxuem"
作为单个自定义单词以从数据中删除。
注意:我们知道RemoveWords是解决我们问题的可怕方法,但我们无法弄清楚如何做到这一点。
答案 0 :(得分:4)
您可以使用正则表达式,例如:
gsub("http[a-z]*","","httpstcolwwsxuem here")
[1] " here"
假设您删除了tweetsCorpus中的标点符号/数字,您可以使用以下内容:
1-直接gsub
tweetsCorpus <- gsub("http[a-z]*","",tweetsCorpus[[1]][[1]])
或强>
2- tm :: tm_map,content_transformer
library(tm)
RemoveURL <- function(x){
gsub("http[a-z]*","",x)
}
tweetsCorpus <- tm_map(tweetsCorpus, content_transformer(RemoveURL))