删除包含特定子字符串的单词

时间:2019-07-20 04:17:23

标签: r text-mining tm corpus

因此,我正在创建一个函数以接收一个语料库,然后吐出清洁的产品:

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)

1 个答案:

答案 0 :(得分:0)

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

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

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))]
}