corpus-scrub 0.1.0:在训练前检测并编辑训练语料库中的个人身份信息(PII)和密钥
模型会记忆并过滤训练数据中的内容。
corpus-scrub在训练前对其进行清理:检测个人身份信息(电子邮件、电话、国际银行账号、银行卡、姓名)和密钥(应用程序接口密钥、令牌),并在本地进行编辑,不向任何服务发送任何数据。
问题所在
从网络抓取的语料库通常包含个人数据和凭证。文献已明确指出:
- 图像合成模型会加剧真实与合成混合数据中的隐私风险(arXiv 2607.13541)
- 在微调过程中无意记忆敏感信息(arXiv 2601.17480)
- 用于个人身份信息泄露的通用激活方向(UniLeak)(arXiv 2602.16980)
《通用数据保护条例》和《欧盟人工智能法案》第10条禁止在未经同意的情况下,在训练数据集中使用非结构化的个人数据。廉价的解决方案是在训练前清理语料库。
功能介绍
corpus-scrub 是一个本地优先的命令行界面工具(采用 GNU Affero 通用公共许可证 3.0 或更高版本),可扫描 JSONL/TXT/Parquet 文件,并执行以下操作:
-
个人身份信息(PII):使用 Presidio(针对 PERSON 实体使用 spaCy 的
en_core_web_lg命名实体识别模型)+ 自定义正则表达式处理电子邮件 / 国际银行账号 / 银行卡 / 电话号码,不依赖模型,适用于任何语言。 -
密钥:包含16条规则的策略集,逐字移植自 gitleaks(固定提交哈希值
4c232b5),并在测试中针对原始gitleaks.toml文件逐条验证。 -
编辑处理:
mask(掩码,显示为<TYPE>)、hash(截断的 sha256 哈希值)或drop(删除)。 - 报告:生成审计 JSON 文件,包含按类型统计的数量和位置信息。
通过专用的 spaCy _lg 模型支持多语言姓名识别(西班牙语/德语/法语),具有明确的多语言回退机制,如果意外使用回退机制,测试将会失败。
工作原理
# 安装
python -m venv .venv && source .venv/bin/activate
pip install -e .
# 首次运行将下载 spaCy 的 en_core_web_lg 模型(约 400 MB)
# 扫描并掩码处理
corpus-scrub scan --input corpus.jsonl --policy mask --out redacted.jsonl --report report.json
# 最小可行产品仅支持英语;其他语言将报错
corpus-scrub scan --input corpus.jsonl --lang en
通用检测器(电子邮件/电话/国际银行账号/银行卡)基于正则表达式,因此不需要模型,可覆盖任何语言。PERSON 实体的命名实体识别在英语中使用 Presidio,在西班牙语/德语/法语中直接使用 spaCy。
明确的局限性
并非所有功能都有保证,且已有文档说明:
- AC-1 保证电子邮件、PERSON 实体和信用卡的召回率 >= 0.95。电话和国际银行账号在最小可行产品中不保证性能:Presidio 对电话的评分低于阈值,且国际银行账号识别器在某些英语格式下会失败。这是一个已知问题,并非意外情况。
- 多语言命名实体识别需要
_lg免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。