第 05 章 / 第 13 课

先把数据做好:过滤、去重与污染

按文档和来源处理数据,发现训练/评估交叉重复,并为清洗规则留下证据。

中文讲解 · 约 3 分钟两道自测 · 可重复作答第 13 / 15 课
这一课,你会学到
  • 区分精确去重与近似去重
  • 在切分前检查重复与来源关系
  • 保留清洗前后样本和规模
术语速查与实践准备
数据污染
训练与评估内容重叠等因素使评估不能如实反映泛化。
吞吐
固定条件下单位时间处理的样本或 token 数。
可复现
他人能按公开的条件与步骤检查关键实验结果。

浏览器概念实验可以直接做。运行文中的 PyTorch 代码前,按官方安装说明准备独立环境;完整模型训练的时间与内存按实际数据、模型和硬件测量。

模型实验的指标依赖数据。训练集与验证集包含同一篇文档的副本时,验证损失可能看起来很好,却无法说明模型对新内容的表现。数据处理应和模型实现一样可检查。

先确认来源与使用范围

为每份语料记录来源、获取时间、许可或使用条件、文档标识和版本。过滤也应有明确规则,例如空文档、明显损坏文本、目标语言不匹配或不符合任务范围的内容。

不要为了“看起来更干净”删除所有较难样本。清洗可能同时删掉有价值的数据,需要查看删除样例,并解释规则怎样影响最终分布。

精确去重和近似去重

精确去重可以对规范化后的文档做哈希。规范化规则要慎重:删除全部空格或标点可能改变代码、语言和含义。下面示例只统一换行,不把所有文本差异抹掉。

import hashlib

def document_hash(text):
    normalized = text.replace("\r\n", "\n")
    return hashlib.sha256(normalized.encode("utf-8")).hexdigest()

稍改标题、重新排版或截取一段的副本,可能绕过精确哈希。近似去重需要额外的方法与阈值,应该抽样检查误删和漏删,不能仅报一个“去重率”。

切分与污染要一起检查

同一来源的重复或高度相关文档,应尽量归在同一个集合,或按实验目标采用时间/来源切分。固定验证集后,检查它与训练集的交叉匹配,再决定怎样处理。

即使精确去重通过,公开评测内容也可能以改写形式进入训练数据。记录检查边界,避免把“未发现精确重复”写成“绝无污染”。

清洗效果怎样评估

保存清洗前后文档数、token 数、来源分布和删除样例,在同一固定留出集上比较模型结果。数据变少并不能单独证明质量变高,损失改善也需和计算预算、配置保持可比。

CS336 的数据作业是这一主题的进阶入口,本站沿用户提供的 2025 归档版本组织。完成数据审计表后,下一课测量训练系统的时间与内存,减少用猜测定位瓶颈。

读完之后,给理解一次反馈。

为一份小语料制作数据审计表,记录来源、许可、文档数量、重复率和 train/validation 交叉匹配。

本课参考资料

文章、例子与练习为本站原创讲解;官方视频与延伸资料保留作者来源。

核对日期 2026-10-14
核对实验结果,再留下完成记录。

完成记录与自测结果分别保存,不自动推断掌握程度。