R语言Quanteda包同时移除内置与自定义停用词报错如何解决?
R语言quanteda包同时移除通用停用词与自定义停用词的正确方法
之前方案的报错原因
- 第一种方案:
stopwords()函数的第二个参数为预设停用词库来源参数,不支持直接传入自定义停用词对象,因此触发未使用参数报错。 - 第二种方案:
stopwords()仅接受官方预设的语言名称作为第一个参数,传入自定义的向量名称无法匹配到对应停用词库,因此报错。 - 第三种方案:混用tm与quanteda功能无必要,同时两个报错分别来自txt文件末行无换行符、自定义停用词中包含正则特殊字符导致
removeWords的正则匹配失败。
正确实现代码
quanteda的dfm()函数的remove参数原生支持直接传入自定义字符向量,因此只需要将两类停用词合并后直接传入即可:
library(quanteda) # 步骤1:提取自定义停用词为字符向量,假设自定义停用词存储在stpw数据框的第一列 custom_stpw <- as.character(stpw[[1]]) # 可选:对停用词去重、去除空值 custom_stpw <- unique(na.omit(custom_stpw)) # 步骤2:合并西班牙语通用停用词与自定义停用词 all_stpw <- c(stopwords("spanish"), custom_stpw) # 步骤3:构建dfm时直接传入合并后的停用词向量 fmsi_des <- dfm(corpus_des, remove = all_stpw, verbose = TRUE, remove_punct = TRUE, remove_numbers = TRUE)
如果需要从txt文件读取自定义停用词,可以用以下代码替换步骤1的自定义停用词提取逻辑:
# 读取txt停用词,warn=FALSE可关闭末行无换行的警告 custom_stpw <- readLines("stpw.txt", warn = FALSE) # 去除空行 custom_stpw <- custom_stpw[custom_stpw != ""]
内容的提问来源于stack exchange,提问作者katdataecon
相关产品推荐
相关产品推荐

