ShareGPT数据集的数据清洗方法:去除低质量对话和敏感内容的处理教程

小磊同学_4105

小磊同学_4105

2026-06-06

363人浏览

原创

需先清洗ShareGPT原始数据:①正则清除HTML标签并保留换行;②json.loads校验,失败样本入error_log.jsonl人工复核;③校验conversations字段存在且为list。再分层过滤敏感信息(PII、地址+姓名弱模式、系统提示泄漏)、低质量对话(熵值<2.1、编辑距离>0.85、模板句占比>60%)。最终统一转为标准Schema写入cleaned_sharegpt_zh.jsonl。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

sharegpt数据集的数据清洗方法:去除低质量对话和敏感内容的处理教程

你需要从ShareGPT原始数据中剔除含敏感信息、格式错乱、语义空洞或隐私泄露的对话样本,避免微调时污染模型行为或触发安全机制。原始JSONL文件中约37%的样本存在系统提示泄漏、用户手机号硬编码、连续URL堆叠或未闭合HTML标签等问题,直接加载将导致训练崩溃或生成违规内容。

剥离HTML噪声与非法JSON结构

原始ShareGPT数据常混杂

、、```json等残留标签,且部分行因转义失败而无法被json.loads()解析。必须先清理再校验,否则后续所有清洗逻辑都会因KeyError中断。

第一步:用正则表达式全局替换移除所有HTML标签,命令为re.sub(r']+>', '', line);注意保留换行符,否则多轮对话会坍缩成单行。

第二步:对清洗后的字符串执行json.loads(),捕获JSONDecodeError异常——【失败样本必须写入error_log.jsonl并人工复核,不可直接丢弃】;部分样本仅因末尾多逗号或引号不匹配而报错,修复后仍具训练价值。

第三步:校验conversations字段是否存在且为list类型,若缺失该键或类型不符,整条记录标记为“schema_invalid”并跳过后续处理。

过滤含敏感信息与隐私数据的对话

敏感内容清洗不是简单关键词屏蔽,而是分层拦截:先阻断明确PII(如身份证、手机号),再识别隐式泄露(如“我家住在朝阳区XX路123号”),最后过滤强化型组合(如“张三+138****1234+北京朝阳区”)。

方法一:正则硬匹配基础PII
匹配11位手机号(含常见脱敏格式如138****1234)、18位身份证号(含X)、邮箱(@符号前后均有字符)、银行卡号(连续16–19位数字,非纯0)。命中任一即整条对话剔除。

方法二:地址与姓名弱模式回溯
当对话中同时出现中文姓氏(王、李、张等前20大姓)+ 行政区划词(省/市/区/县/路/街道)+ 数字门牌号(如“XX号”“第X栋”),且三者距离≤50字符,则触发人工抽检队列——【此规则不可关闭,否则大量家庭住址会漏过】。

字狐AI
字狐AI

字狐AI是一款集智能对话、网页总结、写作辅助和办公创作于一体的 AI 办公工具。

下载

方法三:系统提示泄漏检测
检查conversations首条消息是否含“system”角色或包含“你是一个AI助手”“请遵守法律”等模板化声明;若存在,且后续human消息中出现“刚才你说…”“按你之前设定的…”等指代句,则判定为系统指令泄露,整条对话废弃。

剔除低质量与无意义对话

低质量不等于短,而在于无信息增量、无意图推进、无语义锚点。例如“你好啊”→“你好”→“吃饭了吗”→“吃了”,四轮对话零实体、零动词变化、零上下文依赖,模型学不到任何交互逻辑。

① 计算每轮value字段的字符熵值:使用Python的textblob或jieba计算中文词频分布,熵值<2.1的轮次视为低信息量;单条对话中≥3轮低于该阈值即整体剔除。

② 检测连续重复模式:对相邻human→assistant轮次做编辑距离比对,若similarity_score > 0.85且长度均>8字符,判定为机械复述,整对轮次标记discard并统计频次;单条对话累计discard ≥ 2对则废弃。

③ 过滤空洞回复:assistant回复中若含“我理解了”“好的呢”“感谢您的提问”等无实质内容模板句,且该句占整轮value长度>60%,则该轮无效;整条对话中无效轮次占比>40%即剔除。

执行完以上三步后,将剩余样本统一重写为标准ShareGPT Schema格式:{"conversations": [{"from": "human", "value": "..." }, {"from": "gpt", "value": "..." }]},并写入cleaned_sharegpt_zh.jsonl。

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

40

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

40

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

80

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

80

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

40

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

80

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习