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

Google Sheets 如何从主表逗号分隔ngram列表中批量移除指定停用词

Google Sheets 批量移除ngram列表中停用词解决方案

前置准备

新建一个名为「停用词表」的工作表,将你需要移除的所有ngram(停用词)逐行放在该表的A列,后续新增停用词直接在该列末尾追加即可,无需修改核心处理逻辑。

方案1:内置函数公式(无需写代码,推荐绝大多数场景使用)

如果仅需要处理单个单元格(以AL3为例),直接在目标单元格输入以下公式:

=TEXTJOIN(",",TRUE,FILTER(SPLIT(AL3,","),ISNA(XMATCH(SPLIT(AL3,","),停用词表!A:A))))

如果需要自动处理AL列所有行的ngram数据,使用批量公式:

=BYROW(AL3:AL,LAMBDA(r,IF(r="","",TEXTJOIN(",",TRUE,FILTER(SPLIT(r,","),ISNA(XMATCH(SPLIT(r,","),停用词表!A:A))))))

逻辑说明

  • SPLIT(AL3,","):将原逗号分隔的ngram字符串拆分为独立的token数组
  • XMATCH(xxx,停用词表!A:A):将每个token匹配停用词列表,匹配成功返回位置,匹配失败返回#N/A
  • ISNA():筛选出匹配失败(即不属于停用词,需要保留)的token
  • TEXTJOIN(",",TRUE,xxx):将筛选后的token重新按逗号拼接为字符串
  • 外层BYROW实现整列自动遍历处理,无需手动拖拽公式

方案2:轻量自定义脚本(适合万行以上大数据量,运行更流畅)

  1. 点击顶部菜单栏「扩展程序 > Apps 脚本」打开脚本编辑器
  2. 删除默认的空白代码,粘贴以下代码后点击保存:
function removeStopwords(ngramStr, stopwordList) {
  if (!ngramStr) return "";
  const stopwordSet = new Set(stopwordList.flat().filter(Boolean));
  return ngramStr.split(",").filter(token => !stopwordSet.has(token.trim())).join(",");
}
  1. 回到表格,直接在目标单元格使用自定义函数即可:
    • 单个单元格:=removeStopwords(AL3, 停用词表!A:A)
    • 整列批量:=ARRAYFORMULA(IF(AL3:AL="","",removeStopwords(AL3:AL, 停用词表!A:A)))

原公式失效原因说明

你之前使用的REGEXREPLACE方案失效主要有两个问题:

  1. 正则匹配规则中使用分号作为多个停用词的分隔,而你实际ngram的分隔符是逗号,匹配规则和实际结构不匹配
  2. 法语特殊字符(如à、é等)在正则\b边界符下容易出现匹配异常,拆分后再匹配的逻辑兼容性更好,也更容易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:42:03