OpenAI Privacy Filter自定义标签空间实战用label-space-json扩展隐私类别的完整教程【免费下载链接】privacy-filterOpenAI Privacy Filter项目地址: https://gitcode.com/gh_mirrors/pr/privacy-filterOpenAI Privacy Filter是一款可本地部署的 PII个人身份信息检测与脱敏模型支持用label-space-json自定义标签空间来扩展隐私类别。本教程带你从零理解默认 8 类隐私标签的局限到亲手用--label-space-json参数微调出一个识别全新隐私类别的专用模型全程只需一条训练命令。为什么需要自定义标签空间Privacy Filter 内置了 8 个隐私类别account_number、private_address、private_email、private_person、private_phone、private_url、private_date、secret。但官方文档明确指出一个限制见 README.md 的 Static Label Policy 章节模型只能识别训练时学过的标签类别标签策略不能在运行时动态修改——想换政策就得微调。这意味着如果你的业务需要识别的是公司内部代号、设备序列号、自定义密钥这类默认 8 类覆盖不到的敏感信息就必须通过label-space-json重新定义标签空间并做一次数据量很小的微调。好消息是模型仅 1.5B 参数、50M 激活参数一台普通笔记本CPU即可完成微调官方称之为 easy and data efficient finetuning。认识 label-space-json只需 4 行的配置文件 整个仓库提供了一个最小示例label_space.json完整内容如下{ category_version: custom_v1, span_class_names: [ O, custom_secret ] }字段解读校验逻辑见 opf/_common/label_space.py字段含义约束category_version标签体系的版本号用于区分不同策略任意字符串如custom_v1span_class_names隐私类别名列表首选字段O背景类必须放在第一位 小提示O代表 Outside即非实体的普通 token每个标签空间都必须有它每个类别在底层会自动展开成B-开始、I-内部、E-结束、S-单 token四种边界标记你不需要手动写这些该参数在 opf/_train/args.py 中注册帮助文案写明用于非默认本体ontology设置span_class_names时须把O放第一位。准备训练数据每条样本就是一个 JSON 行微调数据集与opf eval共用同一 schema见 FINETUNING.md每行一个 JSON 对象包含text文本和标注好的 span。官方示例数据 train.jsonl 只有一条toy 数据用于演示{text: Record train_000 includes marker CS-TRN-000-NE5CXVRT and must be archived., label: [{category: custom_secret, start: 33, end: 52}]}要点start/end是字符偏移量指向要标记为custom_secret的片段官方演示数据在 examples/data/finetuning_custom_label_demo/ 下按train/validation/test三档切分且三档的标记码互不重复防止数据泄漏——这是生产数据划分的好习惯真实场景请准备足够多样本toy 数据只够验证流程跑通。一条命令完成微调✅ 核心命令来自 FINETUNING.md 的 Custom Label Spaces 章节opf train /path/to/train.jsonl \ --validation-dataset /path/to/validation.jsonl \ --label-space-json /path/to/custom_label_space.json \ --output-dir /path/to/finetuned_checkpoint 四个关键参数第一个位置参数训练集路径JSONL 或 glob--validation-dataset独立的验证集推荐否则默认从训练集切 10%--label-space-json本文主角——你的自定义标签空间 JSON--output-dir输出目录训练后自动生成可直接复用的新检查点。如果只是想最快跑通全流程仓库内置了一键演示脚本 finetune_custom_label_demo.sh它会自动完成基线评测 → 训练 → 训练后评测 → 打印前后对比表四步bash examples/scripts/finetuning/finetune_custom_label_demo.sh \ --checkpoint /path/to/base_checkpoint脚本内置了自动验收门槛训练后自定义标签的 typed F1 需达到 0.90 以上才算通过对应 finetune_custom_label_demo.sh 中的MIN_POST_TYPED_F1变量。验证效果训练前后对比评测微调的价值要用数据说话。官方脚本的验证思路值得借鉴见 examples/scripts/README.md评测说明基线 typed 评测用原检查点跑测试集此时模型不认识custom_secret表现通常很差基线 untyped 评测不指定类别只衡量有没有检测到 span训练后 typed 评测新检查点 自定义标签核心指标by_class.custom_secret.span.f1训练后 untyped 评测与基线对比确认整体检测能力没有回退脚本最终会输出一张 before → after 对比表F1 / Precision / Recall × token / span 两个粒度。你也可以手动用新检查点做脱敏验证opf --checkpoint /path/to/finetuned_checkpoint 你的测试文本训练完成后的产出物--output-dir目录会写入 4 个文件见 FINETUNING.mdconfig.json—— 已写入你的category_version与span_class_names模型加载时自动识别为新标签空间model.safetensors—— 微调后的权重finetune_summary.json—— 训练摘要便于记录实验USAGE.txt—— 使用说明。 这个目录就是标准的 OPF 检查点可直接用于opf脱敏、opf eval评测或作为下一次微调的起点。实战避坑清单 结合官方文档与源码这几个坑提前避开O必须放在span_class_names第一位且类别名不可重复否则 label_space.py 的校验会直接报错训练数据的category必须与 label-space 中的类别名完全一致包括validation和test数据toy 数据每档 1 条只适合验证流程生产环境请保证样本覆盖目标类别的多种格式变体模型对非英文文本、区域命名习惯、分布外领域效果会下降自定义类别建议先在eval上确认精度再上线微调只是隐私保护的一层官方建议保留人工审核路径尤其在医疗、法律、金融等高敏感场景。总结 回顾本教程的核心路径写一个 4 行的 label-space-json → 准备 JSONL 标注数据 →opf train --label-space-json一条命令微调 →opf eval前后对比验收。得益于小参数量的 MoE 架构和高效的微调流程扩展隐私类别的门槛低到一条命令的程度非常适合需要私有化脱敏、又不想被固定 8 类标签束缚的团队。延伸资料微调完整指南FINETUNING.md输出 JSON 格式OUTPUT_SCHEMAS.md评测与输出模式说明EVAL_AND_OUTPUT_MODES.md另一个标签策略变更演示secret 类别适配finetune_secret_demo.sh【免费下载链接】privacy-filterOpenAI Privacy Filter项目地址: https://gitcode.com/gh_mirrors/pr/privacy-filter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考