数据质量过滤
要解决的问题
即使去重后,网页仍充斥低信息密度、机器生成垃圾、成人内容、个人信息、非目标语种。质量过滤要在「删得够狠」与「保留长尾知识」之间找平衡;错误过滤会系统性削弱某些领域(少数语言、论坛口语、代码注释风格)。
核心概念
| 方法 | 说明 | 成本 |
|---|---|---|
| 启发式规则 | 长度、标点比、停用词占比、行唯一性 | 低 |
| 分类器过滤 | fastText / 小 Transformer 打质量分 | 中 |
| LLM 评判 | 用大模型打分或改写(成本高) | 高 |
| 毒性 / PII | 关键词、NER、专用安全模型 | 中 |
常见质量分 ,训练保留 。C4 使用规则集合;FineWeb、Dolma 等结合 模型质量估计器(如 Gopher 规则、KenLM 困惑度上限)。
困惑度过滤(示意):
过低 PPL 可能是重复模板,过高 PPL 可能是乱码。
方法/算法
典型多层过滤:
- 硬规则:丢弃
len(chars) < 200、字母占比过低、URL 占比过高文档。 - 语言:只保留目标语种或主语种占比 > 0.9 的文档。
- 质量模型:在人工标注的「高/低质」对上训练线性或 Transformer 分类器;开源可参考 FineWeb-Edu 分类器思路。
- 安全:NSFW、仇恨、身份证号、邮箱正则 + 模型复核。
- 领域增强:对代码、数学子集单独放宽长度/困惑度阈值,避免误杀。
工程实践
- 阈值调参:在 1B~10B token 子集上训练小模型,扫 看下游 perplexity 与 benchmark。
- 分层保留:按
source记录过滤率,避免某一子集被「滤光」。 - 可复现:固化分类器权重与规则版本号,写入数据 card。
- 文档区参考:预训练数据准备 中质量过滤与敏感内容小节。
代表工作
- Gopher 数据规则(DeepMind):https://arxiv.org/abs/2112.11446
- LLaMA 数据说明:https://arxiv.org/abs/2302.13971
- FineWeb:https://arxiv.org/abs/2406.17557
- Dolma 质量与内容过滤:https://arxiv.org/abs/2402.00159
局限与注意点
- 分类器偏置:在英文新闻上训练的 filter 对中文口语可能过 严(待验证:需分语种校准)。
- 困惑度依赖小 LM:与主训练语料分布不一致时,阈值难迁移。
- 过度过滤与能力:删口语、论坛内容可能降低对话自然度;删代码注释可能损害代码补全。
- 与去重顺序:见 3.1.2,全局 dedup 后再做模型过滤可降低成本。
延伸说明
在验证集上绘制 直方图,避免阈值卡在分布尾部导致误杀。
实践检查清单
- filter 版本
- 质量模型
- 毒性抽检
小结
本节核心:filter 版本 与全链路 质量模型 协同;上线前用检查清单做回归。
相关章节
- 上一节:3.1.2 清洗与去重
- 下一节:3.1.4 数据混合
- 合规:3.1.5 版权
- 目标函数:3.3.1 CLM