Back to blog
    data-cleaningdeduplicationpii-redactionquality-scoringon-premiseml-training

    ML 训练数据集的本地数据清洗

    在本地清洗 ML 训练数据集:MinHash 去重、文本标准化、PII 脱敏和质量评分,全程无需云端 API,数据不出内网。

    Edward Xi Yang

    摄入完成之后,你手上是结构化的文本。但结构化和干净是两回事。企业的文档集合里充满重复内容、编码残留、个人可识别信息、不一致的格式,以及一旦进入训练集就会拖累模型表现的低质量记录。

    清洗是多数团队投入不足的环节,而一个模型在生产环境中能不能用,往往就在这一步决定。本文讲的是完全在本地清洗 ML 训练数据集的实用技术:不用云端 NER 服务,不调外部 API,数据不出门。


    去重:完全重复与近似重复

    训练数据里的重复会让模型在重复样本上过拟合,评估时指标虚高,泛化能力却在下降。在企业文档集合里,重复无处不在:同一份合同模板被用了 300 次,每次只有细微改动;同一份政策文件发给了每一个部门;同一封邮件在收件人之间层层转发。

    完全去重

    最简单的情形。对每份文档的内容计算哈希(SHA-256),删除哈希相同的记录。这能抓住逐字节相同的重复:同一个文件用不同文件名保存,或同一份文档从多个来源被重复摄入。

    完全去重很快(用哈希集合可达 O(n)),应当始终作为第一步。

    近似重复检测

    价值更高,也更复杂。近似重复指相似度很高但内容并不完全相同的文档:同一模板的不同版本、有少量编辑的文档,或者共享 90% 内容的记录。

    两种可行的方法:

    MinHash 加局部敏感哈希(LSH):从文档的 n-gram 计算 MinHash 签名,再用 LSH 高效找出 Jaccard 相似度高的文档对。这个方案可以扩展到数百万份文档,并且无论格式差异如何,都能抓到内容层面的近似重复。常用阈值是 Jaccard 相似度 0.8 到 0.9。

    SimHash:用加权的 token 特征为每份文档计算单一指纹,汉明距离低于阈值的文档被标记为近似重复。在超大规模集合上比 MinHash 更快,但对较短文档精度不如前者。

    对训练数据集来说,MinHash 加 LSH 是标准选择。它很适合企业场景:把那 300 份几乎相同的合同找出来,收敛成 15 到 20 个有代表性的不同变体。

    找到近似重复之后怎么办

    不要直接删掉。近似重复本身携带信息,能告诉你文档中哪些部分是稳定的(套话),哪些是可变的(真正有内容的部分)。可选做法:

    • 保留一份代表:挑质量最高的那一版,其余丢弃
    • 全部保留但打标:加上一个聚类 ID,让下游阶段据此加权或抽样
    • 合并:对模板类文档,抽出可变部分,做成一条覆盖变化空间的训练样本

    文本标准化

    标准化是在不改变含义的前提下让文本保持一致。企业文档在很多影响模型训练的地方,不一致得惊人。

    编码标准化

    统一转换为 UTF-8 NFC(先规范分解,再规范组合)。这能处理:

    • 在 UTF-8 下显示为乱码的 Windows-1252「智能引号」
    • 同一字符的多种 Unicode 表示(例如「é」是单个码点,还是「e」加组合重音符)
    • 零宽空格、字节顺序标记,以及其他会破坏分词的不可见字符

    空白字符标准化

    • 把连续空格收敛为单个空格
    • 统一换行符(CRLF 转 LF)
    • 去掉行尾空白
    • 一致地处理制表符与空格的转换

    企业场景中常见的标准化

    • 日期格式:「03/11/2026」「March 11, 2026」「2026-03-11」,选定一种规范格式,或统一转为 ISO 8601
    • 数字格式:「1,000,000」「1000000」「1.000.000」(欧洲写法),按区域设置统一
    • 缩写:「Dr.」与「Doctor」、「Inc.」与「Incorporated」,维护一份领域专用的标准化词典
    • 法律引注:「42 U.S.C. § 1983」在不同文档里有几十种写法,统一为一种规范形式

    PII 与 PHI 的识别和脱敏

    对医疗(HIPAA)、金融(GLBA、SOC 2)和法律(律师与客户特权)数据来说,PII/PHI 脱敏是合规要求,不是可选项。而且它必须在本地完成,把文档发到云端 NER 服务去做 PII 识别,等于自我否定。

    本地 PII 识别的几种方法

    基于规则(正则加模式):对结构化的 PII 精确率很高:

    • 社会安全号码:\d{3}-\d{2}-\d{4}
    • 电话号码:各地区格式不同
    • 邮箱地址:标准模式匹配
    • 信用卡号:经 Luhn 校验的模式
    • 出生日期:结合上下文线索时可识别

    优点是快、可预测,对定义良好的格式漏检率为零。缺点是抓不到依赖上下文的 PII(自由文本中提到的姓名、地址、病情)。

    本地 NER 模型:SpaCy 的 NER 模型、Stanza,或本地运行的微调 Transformer 模型,可以识别人名、机构、地点等依赖上下文的实体。准确度因领域而异,通用 NER 模型会漏掉很多医学术语、法律实体或金融标识。

    本地大模型辅助识别:用一个本地 7B 以上的模型,配上提示词去识别文本段落中的 PII。比规则和 NER 更灵活,但更慢、确定性更差。最好用作规则和 NER 之后的第二遍复查。

    脱敏策略

    • 替换:把 PII 换成带类型的占位符,如 [NAME][SSN][DATE_OF_BIRTH]。保留句子结构,便于训练。
    • 一致的假名化:把每个唯一实体替换为固定的虚构值,全数据集中「Dr. Smith」一律变成「Dr. Johnson」。保留实体之间的关系。
    • 删除:删掉 PII 及其周边上下文。会损失信息,但最保守。

    对训练数据而言,用带类型的占位符做替换通常是最好的平衡:模型学到了 PII 出现的位置模式,却不会记住具体的标识符。


    不依赖云 API 的质量评分

    训练样本的价值并不相同。质量评分的作用是把可能提升模型表现的记录(高质量)与可能引入噪声的记录(低质量)区分开。

    启发式质量信号

    这些信号不需要模型推理,能快速给出基线质量估计:

    信号能抓到什么阈值
    文本长度太短(没内容)或太长(拼接出来的垃圾)依领域而定,通常 50 到 5000 token
    句子数量只有一句话、缺乏上下文的「文档」多数场景下至少 3 到 5 句
    词汇多样性重复文本(复制粘贴出错、套话)类符形符比低于 0.3 值得怀疑
    特殊字符占比OCR 残留、编码损坏非字母数字超过 5% 即为可疑
    语种识别置信度混合语种文档、乱码文本置信度低于 0.8 需要复核
    困惑度(本地模型)不连贯或已损坏的文本相对语料均值明显偏高

    Cleanlab 式的置信学习

    Cleanlab 是查找数据集中标签错误和低质量样本的主流开源库。它采用置信学习,把模型预测与给定标签作比较,找出可能标错或含糊的样本。

    Cleanlab 效果不错。对服务提供商来说,它的局限在于这是一个 Python 库,需要 ML 工程能力才能配置和运行。它没有图形界面,不产出可直接用于审计的报告,还需要集成进自定义流水线。

    基于本地向量嵌入的质量评分

    用本地嵌入模型(例如通过 sentence-transformers 使用 all-MiniLM-L6-v2)为所有记录计算嵌入向量,然后:

    • 离群检测:嵌入向量远离任何聚类中心的记录,可能跑题或已损坏
    • 一致性评分:嵌入靠近语料质心的记录属于典型样本;位于外围的值得复核
    • 多样性评估:确保训练集在嵌入空间中分布均匀,而不是挤在某一个区域

    这套方法完全在本地运行,无需标注或训练模型即可提供有用的质量信号。


    实用的清洗流程

    一条面向企业数据集的现实清洗流程:

    1. 完全去重:移除逐字节相同的重复。快,且没有误删。
    2. 编码标准化:转为 UTF-8 NFC,修复乱码。
    3. 空白与格式标准化:统一空格、换行符和数字格式。
    4. 近似重复检测:MinHash/LSH,阈值取 0.85。复核聚类结果,挑选代表。
    5. PII/PHI 识别:先跑规则,再跑 NER,对被标记的条目做人工复核。
    6. PII 脱敏:应用选定的脱敏策略,并记录每一次脱敏。
    7. 启发式质量过滤:移除未通过基础质量检查的记录。
    8. 质量评分:对剩余记录按质量排序,复核最差的 10%。
    9. 人工复核:由领域专家审阅被标记的记录和边界情况。

    每一步都应当记录移除了什么、修改了什么、标记了什么,以及为什么。这份日志就是你的审计链路。

    Ertas Data Suite 的 Clean 模块覆盖了整条流程,内置去重(完全与近似)、标准化、PII 识别和质量评分,并通过可视化界面提供,让领域专家和合规官可以直接操作。每一个动作都会自动记入项目的审计链路。


    与流水线的衔接

    清洗后的数据进入标注环节,由人工标注者和本地大模型副驾驶一起打上微调所需的标签。进入标注阶段的数据越干净,标注就越快、越准确,领域专家的时间会花在实质性的标注判断上,而不是去修补本该更早发现的数据质量问题。

    完整的流水线概览,请看如何为大模型微调搭建本地数据准备流水线

    就本文向 AI 提问

    Ship AI that runs on your users' devices.

    Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.

    Keep reading