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

quanteda使用指南:如何在分析时保留停用词列表中的指定词汇

quanteda保留指定停用词不被过滤的实现方法

核心逻辑非常简单:quanteda没有单独的“停用词豁免”配置项,所有停用词过滤都是基于传入的停用词字符向量做精确匹配删除,你只需要在传入停用词表前,把需要保留的词汇从停用词向量中剔除即可。

基础操作步骤

  • 第一步:获取你原本要使用的基础停用词表,比如调用stopwords()函数获取对应语言的内置停用词,或者导入自己整理的停用词表
  • 第二步:明确列出你需要保留、不参与停用词过滤的目标词汇
  • 第三步:从基础停用词表中删除这些目标词汇,生成自定义停用词表
  • 第四步:将自定义停用词表传入分词过滤、dfm构建的对应参数即可

代码示例

比如做英文文本分析时,想保留否定词no和not不被过滤,代码如下:

library(quanteda)

# 1. 获取英文基础停用词表
en_stop <- stopwords("en")

# 2. 定义需要保留的词汇
keep_words <- c("no", "not")

# 3. 生成过滤后的自定义停用词表
custom_stop <- en_stop[!en_stop %in% keep_words]

# 4. 分词时使用自定义停用词表过滤
demo_tokens <- tokens(c("I do not think this works.", "No, it is totally bad."))
filtered_tokens <- tokens_remove(demo_tokens, custom_stop)

# 查看过滤结果,no和not都会被保留
filtered_tokens

如果是直接构建文档特征矩阵,逻辑完全一致,把自定义停用词表传给dfm()的remove参数即可:

demo_dfm <- dfm(demo_tokens, remove = custom_stop)

简便写法

如果只需要保留1-2个词,不需要单独赋值变量,可以直接在行内完成停用词表处理,比如仅保留will:

filtered_tokens <- tokens_remove(demo_tokens, stopwords("en")[!stopwords("en") %in% "will"])

注意事项

  • 匹配规则区分大小写:quanteda分词默认开启小写转换(tolower = TRUE),此时你要保留的词汇统一写小写形式即可;如果关闭了小写转换,需要保证待保留词汇和文本中的实际大小写完全匹配,否则剔除失效。
  • 该方法对所有来源的停用词表都生效,不管是内置多语言停用词、外部导入的自定义停用词表,还是合并了领域专用词的停用词表,操作逻辑完全一致。

内容的提问来源于stack exchange,提问作者Manuel Spínola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:15:36