R语言如何删除数据框文本列中的自定义停用词
问题原因及解决方法
核心失效原因
- 大小写不匹配:你提供的文本示例中存在首字母大写的词汇(如
Em、O),但停用词表存储的是全小写的em、o,anti_join为精确匹配,大小写不一致会判定为不匹配,导致停用词无法被删除。 - 存在不可见字符:停用词表或文本拆分后的
word列可能存在首尾空格、换行符等不可见字符,干扰匹配逻辑。 - 数据类型不匹配:读取停用词时如果
word列被默认转为因子类型,和文本列的字符类型不一致,也会导致匹配失败。
修正后完整代码
library(tidytext) library(dplyr) # 读取并标准化停用词 stopwords <- read.csv2("stopwordPT.csv", stringsAsFactors = FALSE) %>% rename(word = 1) %>% mutate(word = tolower(trimws(word))) # 标准化文本词汇后删除停用词 tesesResumoUnique <- tesesResumoUnique %>% mutate(word = tolower(trimws(word))) %>% anti_join(stopwords, by = "word")
效果验证
你可以执行以下代码查看匹配到的停用词数量,确认匹配逻辑正常:
inner_join(tesesResumoUnique, stopwords, by = "word") %>% count()
如果返回结果大于0,说明停用词可以被正常识别删除。
内容的提问来源于stack exchange,提问作者Robson Brandão
相关产品推荐
相关产品推荐

