模型实验的指标依赖数据。训练集与验证集包含同一篇文档的副本时,验证损失可能看起来很好,却无法说明模型对新内容的表现。数据处理应和模型实现一样可检查。
先确认来源与使用范围
为每份语料记录来源、获取时间、许可或使用条件、文档标识和版本。过滤也应有明确规则,例如空文档、明显损坏文本、目标语言不匹配或不符合任务范围的内容。
不要为了“看起来更干净”删除所有较难样本。清洗可能同时删掉有价值的数据,需要查看删除样例,并解释规则怎样影响最终分布。
精确去重和近似去重
精确去重可以对规范化后的文档做哈希。规范化规则要慎重:删除全部空格或标点可能改变代码、语言和含义。下面示例只统一换行,不把所有文本差异抹掉。
import hashlib
def document_hash(text):
normalized = text.replace("\r\n", "\n")
return hashlib.sha256(normalized.encode("utf-8")).hexdigest()
稍改标题、重新排版或截取一段的副本,可能绕过精确哈希。近似去重需要额外的方法与阈值,应该抽样检查误删和漏删,不能仅报一个“去重率”。
切分与污染要一起检查
同一来源的重复或高度相关文档,应尽量归在同一个集合,或按实验目标采用时间/来源切分。固定验证集后,检查它与训练集的交叉匹配,再决定怎样处理。
即使精确去重通过,公开评测内容也可能以改写形式进入训练数据。记录检查边界,避免把“未发现精确重复”写成“绝无污染”。
清洗效果怎样评估
保存清洗前后文档数、token 数、来源分布和删除样例,在同一固定留出集上比较模型结果。数据变少并不能单独证明质量变高,损失改善也需和计算预算、配置保持可比。
CS336 的数据作业是这一主题的进阶入口,本站沿用户提供的 2025 归档版本组织。完成数据审计表后,下一课测量训练系统的时间与内存,减少用猜测定位瓶颈。