删除包含某个子字符串的单词

Removing words containing a certain substring

所以我在做一个函数接收一个单词语料库,然后吐出一个清洗后的产品:

corpus_creater <- function(corpus){
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removeWords, stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, stemDocument)
}

这在大多数情况下都很好用,但是当我查看生成的词云时,我注意到一件事很突出: 词云包括其中包含术语 "html" 的随机词。

我想我可以通过简单地在函数中添加一行来删除包含子字符串 "http" 的任何单词来解决这个问题,但我终究无法做到这一点,而且所有我发现的现有答案似乎与替换子字符串或仅删除该子字符串有关。

我想做的是: 如果子字符串是单词的一部分,则删除整个单词。

我用来从语料库生成词云的词云代码:

color_scheme <- brewer.pal(9,"YlGnBu")
color_scheme <- color_scheme[-(1:4)]
set.seed(103)
wordcloud(words = manu_corpus_final, max.words=200, random.order=FALSE, 
          rot.per=0.35, use.r.layout=FALSE, colors=color_scheme)

如果您直接获取语料库作为输入,您可以使用 sapply 提取语料库的 content,然后从语料库中删除具有所需字符串的文档。

您可以通过以下方式将其集成到您的函数中:

corpus_creater <- function(corpus){
   corpus <- tm_map(corpus, removePunctuation)
   corpus <- tm_map(corpus, content_transformer(tolower))
   corpus <- tm_map(corpus, removeWords, stopwords("english"))
   corpus <- tm_map(corpus, stripWhitespace)
   corpus <- tm_map(corpus, stemDocument)
   #Added the below line
   corpus <- corpus[-grep("http", sapply(corpus, `[`, 1))]
}