跳到主要内容

数据质量过滤

要解决的问题

即使去重后,网页仍充斥低信息密度、机器生成垃圾、成人内容、个人信息、非目标语种。质量过滤要在「删得够狠」与「保留长尾知识」之间找平衡;错误过滤会系统性削弱某些领域(少数语言、论坛口语、代码注释风格)。

核心概念

方法说明成本
启发式规则长度、标点比、停用词占比、行唯一性
分类器过滤fastText / 小 Transformer 打质量分
LLM 评判用大模型打分或改写(成本高)
毒性 / PII关键词、NER、专用安全模型

常见质量分 q[0,1]q \in [0,1],训练保留 {xq(x)θ}\{x \mid q(x) \ge \theta\}。C4 使用规则集合;FineWeb、Dolma 等结合 模型质量估计器(如 Gopher 规则、KenLM 困惑度上限)。

困惑度过滤(示意):

keep(x)    PPLsmall LM(x)[Lmin,Lmax]\text{keep}(x) \iff \text{PPL}_{\text{small LM}}(x) \in [L_{\min}, L_{\max}]

过低 PPL 可能是重复模板,过高 PPL 可能是乱码。

方法/算法

典型多层过滤:

  1. 硬规则:丢弃 len(chars) < 200、字母占比过低、URL 占比过高文档。
  2. 语言:只保留目标语种或主语种占比 > 0.9 的文档。
  3. 质量模型:在人工标注的「高/低质」对上训练线性或 Transformer 分类器;开源可参考 FineWeb-Edu 分类器思路。
  4. 安全:NSFW、仇恨、身份证号、邮箱正则 + 模型复核。
  5. 领域增强:对代码、数学子集单独放宽长度/困惑度阈值,避免误杀。

工程实践

  • 阈值调参:在 1B~10B token 子集上训练小模型,扫 θ\theta 看下游 perplexity 与 benchmark。
  • 分层保留:按 source 记录过滤率,避免某一子集被「滤光」。
  • 可复现:固化分类器权重与规则版本号,写入数据 card。
  • 文档区参考预训练数据准备 中质量过滤与敏感内容小节。

代表工作

局限与注意点

  • 分类器偏置:在英文新闻上训练的 filter 对中文口语可能过严(待验证:需分语种校准)。
  • 困惑度依赖小 LM:与主训练语料分布不一致时,阈值难迁移。
  • 过度过滤与能力:删口语、论坛内容可能降低对话自然度;删代码注释可能损害代码补全。
  • 与去重顺序:见 3.1.2,全局 dedup 后再做模型过滤可降低成本。

延伸说明

在验证集上绘制 q(x)q(x) 直方图,避免阈值卡在分布尾部导致误杀。

实践检查清单

  • filter 版本
  • 质量模型
  • 毒性抽检

小结

本节核心:filter 版本 与全链路 质量模型 协同;上线前用检查清单做回归。

相关章节