You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 11:36:04