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

R主题建模叠加自定义停用词后目标词未被移除问题咨询

问题原因与修复方案

你的代码核心问题是词干提取的执行顺序错误,停用词只匹配了原词形态,没有覆盖变形后的词干形态,导致漏删。具体问题和修复方案如下:

核心问题说明

你当前的执行逻辑为:分词→移除原词形式的停用词→构建dfm→修剪dfm→对dfm特征做词干提取。
如果语料中存在monkeys这类未被加入停用词列表的变形词,在移除步骤不会被过滤,后续词干提取时会被转为monkey,最终出现在模型输出结果中。

其他可排查点

  • 未统一语料大小写:如果语料中存在首字母大写的Monkey、全大写的MONKEY,会因为大小写不匹配漏删
  • 停用词加载异常:未正确加载stopwords包导致默认停用词列表为空,或自定义停用词拼接失败
  • 可通过临时输出中间结果验证:在tokens_remove步骤后执行head(tokens_select(tokens_object, pattern = "monkey*")),确认停用词是否被正确移除

修正后代码

library(quanteda)
library(stopwords)

# 预处理停用词,统一转为词干形态
custom_stops <- c("fat","monkey","ce","fallen")
custom_stops_stem <- char_wordstem(custom_stops, language = "english")
all_stops <- c(custom_stops_stem, char_wordstem(stopwords("en"), language = "english"))

# 调整执行顺序:分词→转小写→词干化→移除停用词→构建并修剪dfm
dfm_final <- tokens(corp, remove_punct = TRUE, remove_numbers = TRUE, remove_symbols = TRUE) %>%
  tokens_tolower() %>%
  tokens_wordstem(language = "english") %>%
  tokens_remove(pattern = all_stops) %>%
  dfm() %>%
  dfm_trim(min_termfreq = 15, min_docfreq = 20, max_docfreq = 250)

内容的提问来源于stack exchange,提问作者newabnormal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:15:03