从停用词列表中删除单词

Remove words from stopword list

我之前问过一个问题,如何通过保持原始格式从字符向量的停止列表中删除单词。任务是删除向量 "words" 中 "words_to_remove" 的单词。 我接受了这个解决方案:

words_to_remove = c("the", "This")
pattern <- paste0("\b", words_to_remove, "\b", collapse="|")
words = c("the", "The", "Intelligent", "this", "This")

res <- grepl(pattern, words, ignore.case=TRUE)
words[!res]

现在我遇到了 "words" 条目中有多个单词的问题。如果包含停用词,则整个条目将被删除。

words = c("the", "The Book", "Intelligent", "this", "This")

我收到输出

[1] "Intelligent"

但我希望它是

[1] "Book"   "Intelligent"

这可能吗?

您可以尝试使用 gsub,即

v1 <- gsub(paste(words_to_remove, collapse = '|'), '', words, ignore.case = TRUE)

#Tidy up your output

trimws(v1)[v1 != '']
#[1] "Book"        "Intelligent"

将模式更改为

pattern <- paste0("^", words_to_remove, "$", collapse="|")

包括字符串标记的开始和结束,而不仅仅是单词边界。您的其余代码应该可以通过这一更改正常工作。