Data-Juicer 中 remove_words_with_incorrect_substrings_mapper 详解:按子串清洗文本中的脏词

发布时间:2026/10/6 22:34:50

Data-Juicer 中 remove_words_with_incorrect_substrings_mapper 详解:按子串清洗文本中的脏词 人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载remove_words_with_incorrect_substrings_mapper是 Data-Juicer 提供的文本清洗 mapper 算子用于从文本中移除包含指定错误子字符串默认如http、www、.com、href、//的单词适合在数据预处理流水线中剔除残留的链接、URL 片段和噪声 token。阅读本文后你将掌握该算子的参数语义、分词与非分词两种工作模式的区别、底层实现原理以及如何在 Data-Juicer 的 recipe 配置中正确接入并复现其效果演示。算子定位与适用场景该算子注册名为remove_words_with_incorrect_substrings_mapper算子类型为mapper标签为cpu、text即它是一类仅依赖 CPU 的纯文本编辑算子对应 源码注册与类定义。与 filter 类算子整条样本保留或丢弃不同mapper 会在原样本基础上就地改写文本字段且不计算任何关键指标key metric——它的全部职责就是按子串命中情况删词。从源码结构看该算子主要用于两类清理目标清理爬虫/网页转写文本中残留的 URL 与协议标识http、https、www、.com、href、//等默认子串覆盖了绝大多数 URL 片段的特征清理特定语料如中英混杂文本中的自定义噪声词通过substrings参数传入任意子串凡是包含其中任一子串的单词都会被整体删除。两种工作模式分词与非分词算子通过tokenization布尔参数切换两种处理路径核心差异在于如何界定一个单词。非分词模式tokenizationFalse默认文本先按换行、制表符、空白逐级切分得到多级句子/子句结构再对每个单词做子串命中检查最后按原有层级合并回单一字符串。该模式不需要加载任何模型纯规则处理速度快、零额外依赖。分词模式tokenizationTrue构造算子时会通过prepare_model(model_typesentencepiece, langlang)准备对应语言的分词模型源码位置底层实现见 model_utils.py处理时用 sentencepiece 的encode_as_pieces将文本切成子词piece并去掉 sentencepiece 特有的▁前缀标记后再做子串检查过滤结果直接拼接回文本。该模式更适合中文等无空格分词的语言——因为此时按空白切词无法正确切出词边界。无论哪种模式过滤后的文本都会被合并回单一字符串并在批内逐条更新text字段批量处理样本并在原地更新文本见 process_batched。参数配置详解算子核心参数如下表取自 参数文档 及 config_all.yaml 中的默认配置参数名类型默认值说明langstren样本语言用于在tokenizationTrue时选择对应语言的 sentencepiece 模型如en、zhtokenizationboolFalse是否使用模型对文档进行分词后再过滤False时按空白/换行/制表符切词substringsOptional[List[str]]None需要移除的错误子字符串列表传None时使用默认值[http, www, .com, href, //]args—额外参数透传给基类kwargs—额外参数透传给基类如text_key指定待处理文本字段默认text关于默认值有一个关键实现细节substringsNone时在构造函数内部被替换为[http, www, .com, href, //]源码位置因此即使不显式传入算子也会默认清理 URL 特征词。若希望只按自定义子串清理需显式传参覆盖默认值。在 Data-Juicer 的全局配置config_all.yaml中该算子对应的 recipe 片段为- remove_words_with_incorrect_substrings_mapper: # remove words with incorrect substrings from text. lang: en # sample in which language tokenization: false # whether to use model to tokenize documents substrings: [http, www, .com, href, //] # incorrect substrings to remove实际使用时只需把这段配置放进自己的 recipe 配置文件的process列表即可如demos/process_simple/process.yaml中配置 mapper 列表的方式一致。效果演示英文场景使用配置与单元测试 test_remove_words_with_incorrect_substrings_mapper.py 中的test_en_case完全一致RemoveWordsWithIncorrectSubstringsMapper(substrings[http, www, .com, href, //])输入数据Sample 1This paper proposed a novel https://whiugc.com method on LLMSample 2plusieurs èrdashhqbchd.ckd daccéder à ces wwwasdasd fonc输出数据Sample 1This paper proposed a novel method on LLMSample 2plusieurs èrdashhqbchd.ckd daccéder à ces fonc解释第一个样本中https://whiugc.com同时命中http与.com两个子串被整体删除第二个样本中wwwasdasd命中www被删除。注意èrdashhqbchd.ckd这类邮箱/账号串因不含任何目标子串而原样保留说明该算子只做包含关系的精准删词不会误伤无关 token。效果演示中文场景启用分词使用配置与 test_zh_case 一致RemoveWordsWithIncorrectSubstringsMapper(langzh, tokenizationTrue, substrings[com, 算子])输入数据Sample 1你好请问你是谁Sample 2欢迎来到阿里巴巴Sample 3根据算子使用情况增量安装方案确定Sample 4请用百度www.baidu.com进行搜索输出数据Sample 1你好请问你是谁Sample 2欢迎来到阿里巴巴Sample 3根据使用情况增量安装方案确定Sample 4请用百度www.baidu.进行搜索解释启用tokenizationTrue后文本先经中文 sentencepiece 分词再逐词过滤。Sample 3 中算子作为一个独立子词命中算子子串被删除Sample 4 中www.baidu.com因包含com而被移除该部分最终残留www.baidu.。Sample 1、2 因不含目标子串而原样保留说明该场景下算子不会破坏正常的纯中文文本。源码级实现剖析1. 单词级判定逻辑判定一个单词是否保留的核心方法是should_keep_word_with_incorrect_substrings源码位置def should_keep_word_with_incorrect_substrings(self, word, substrings): word strip(word, SPECIAL_CHARACTERS) should_keep all([(i_substr not in word) for i_substr in substrings]) return should_keep它在检查前先用strip(word, SPECIAL_CHARACTERS)剥离单词首尾的特殊字符。SPECIAL_CHARACTERS定义于 special_characters.py由 ASCII 标点、数字、空白、一组长尾 Unicode 特殊字符以及全部 emoji 构成strip的实现是逐字符从两端收缩的高性能版本helper_func.py。这意味着像(http://xxx)这类首尾带括号的 URL 词括号会被剥掉中间主体仍命中子串而被删除。2. 非分词模式的切分与合并非分词路径调用的切分函数是split_on_newline_tab_whitespacehelper_func.py先按\n切行再按\t切子句最后按空白切词得到一个三层嵌套的句子结构过滤时对最内层每个单词应用保留判定再调用merge_on_whitespace_tab_newlinehelper_func.py按空格→制表符→换行的逆序合并回完整文本并自动剔除空层。这一对称设计保证了换行/缩进等排版信息在删词后依然保留。3. 分词模式的 token 过滤分词路径通过get_words_from_document(text, token_functokenizer.encode_as_pieces)获取子词列表helper_func.py随后对每个子词先replace(▁, )去掉 sentencepiece 的单词边界标记再交给同一套保留判定过滤结果直接.join(words)拼接。因此中文场景的输出中不会残留多余空格。4. 批量处理与原地更新该算子声明了_batched_op True源码位置属于批量算子process_batched接收的是一个字段名→列表的批次字典逐条读取samples[self.text_key]处理并写回源码位置。在基类 Mapper 中process会被自动包装为对process_batched的批量映射调用并以batch_size控制每批样本数。单元测试也正是通过dataset.map(op.process, batch_size2)来验证测试用例。使用建议与注意事项自定义清洗词时务必显式覆盖substrings不传该参数会沿用默认的 URL 特征子串可能并非你的预期行为。中文文本建议开启tokenizationTrue中文按空白切词无法切出语义词边界若不开启分词包含目标子串的中文短语无法被正确移除开启后需注意 sentencepiece 模型会按lang下载对应模型文件。把握子串包含的副作用算子删除的是包含子串的整个单词而不是仅删除子串本身。例如命中.com的www.baidu.com会被整体删掉导致残留www.baidu.如上述中文演示这种部分删除效果是子串包含匹配的必然结果配置子串时应尽量选能完整覆盖目标词的字符串。纯 CPU 文本算子可放心用于大规模流水线无 GPU 依赖适合与clean_html_mapper、remove_table_text_mapper等文本清洗算子串联作为 URL/噪声词清理的最后一道关卡。相关链接算子源代码单元测试文本工具函数切分/合并/strip特殊字符定义全局配置中的默认 recipe 片段Data-Juicer 算子总览赞分享人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载相关推荐data-juicer remove_long_words_mapper 算子详解按字符长度清洗文本中的过长词与过短词data juicer remove_long_words_mapper 算子详解按字符长度清洗文本中的过长词与过短词 本文围绕 data juicer 官方人工智能大模型数据工程数据清洗数据增强数据质检Data-Juicer 词数过滤算子 words_num_filter按总词数清洗文本数据的完整指南Data Juicer 词数过滤算子 words_num_filter按总词数清洗文本数据的完整指南 导读 words_num_filter 是 Data J人工智能大模型数据工程数据清洗数据增强数据质检data-juicer clean_html_mapper 算子详解基于 Selectolax 将 HTML 文本批量清洗为纯文本data juicer clean_html_mapper 算子详解基于 Selectolax 将 HTML 文本批量清洗为纯文本 clean_html_ma人工智能大模型数据工程数据清洗数据增强数据质检上一篇IronClaw 谷歌文档校验指南使用 verify_document 对 Google Docs 做文本与表格断言下一篇EmDash 插件开发完全指南从沙箱插件到原生扩展的实战手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 22:34:50

大模型落地核心:上下文工程完全指南,吊打只会写Prompt的开发者

本文深入探讨了上下文工程在真实业务中大模型应用中的重要性,阐述了如何通过精心设计模型输入来提升其理解能力和回答质量。文章详细介绍了上下文工程的四类核心动作:保存、选择、压缩和隔离,并分析了在Agent系统中上下文是如何流动和优化的。…

2026/10/6 22:34:50

c++ vector的深度使用和详解

一、vector 的基础遍历与迭代器这个函数只做一件事&#xff1a;把同一个 vector 用五种方式读出来/改出来&#xff0c;借此展示 C 容器的各种访问接口。void test01() {vector<int> v1;v1.push_back(1); v1.push_back(2);v1.push_back(3); v1.push_back(4);// ① 下标访问…

2026/10/6 22:34:50

店铺运营数据分析看哪些指标?2026最新指标清单大盘点

摘要&#xff1a;店铺运营数据分析该看哪些指标&#xff0c;很多人并不清楚。本文按流量、转化、利润、同行四个维度&#xff0c;盘一盘2026年最值得盯的核心指标&#xff0c;帮你告别盲目看数、建立自己的指标体系。 开店的人都爱看数据&#xff0c;但真问到“你最该盯哪几个…

2026/10/7 1:45:07

​预设动作库和自己录制动作怎么选?角色短视频制作对比

预设动作库更适合走、跑、站立等可重复基础动作&#xff1b;自己录制更适合需要特定节奏或表演的镜头&#xff0c;但还要承担采集、清理和重定向工作。短视频应按镜头需求选择&#xff0c;而不是默认某一种路线更自然。Tripo可以帮助角色完成自动绑定、骨骼检查、动作预览和动画…

2026/10/7 1:45:07

AI智能体Office套件:分布式协同办公系统设计

1. 这不是又一个“AIOffice”概念包装&#xff0c;而是一套可落地的智能体协同办公系统最近在几个高校实验室和中小科技团队里跑了一圈&#xff0c;发现一个特别有意思的现象&#xff1a;大家不再满足于给Word加个“润色按钮”、给Excel塞个“公式解释器”&#xff0c;而是真刀…

2026/10/7 1:45:07

下载的动作文件怎样重定向到自己的3D角色?Tripo工作流

使用外部下载的动作时&#xff0c;可以先在Tripo完成角色绑定并导出&#xff0c;再在目标建模软件或游戏引擎中进行重定向。操作前确认动作文件格式、骨骼结构和目标软件是否兼容&#xff0c;不要默认所有外部动作都能直接在网页端使用。Tripo可以帮助角色完成自动绑定、骨骼检…

2026/10/7 1:45:07

动作生成、动作捕捉和动作重定向有什么区别?AI 3D角色动画入门

动作生成是获得新的动作内容&#xff0c;动作捕捉是把真实表演记录成动作数据&#xff0c;动作重定向则把已有动作适配到另一名已绑定角色。三者可以前后衔接&#xff0c;但输入、输出和验收对象不同。Tripo可以帮助角色完成自动绑定、骨骼检查、动作预览和动画导出。使用自动绑…

2026/10/7 1:45:07

Xilinx IP库在ModelSim/QuestaSim中的编译与仿真全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:40:06

阿克曼转向与四轮差速协同控制实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起&#xff1a;为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高&#xff0c;很多人第一次听到会以为是某个新模型的名字&#xff0c;其实它更像是一种思路——把Jev模型的能力当作底座&#xff0c;通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同"&#xff1a;多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西&#xff0c;大概率会有一种感觉&#xff1a;单个 Agent 能做的事情&#xff0c;其实很快就摸到天花板了。你给它一个提示词&#xff0c;挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑