返回模型
说明文档
language: en license: apache-2.0 tags:
- bert
- token-classification
- ner
- pii
- privacy
- onnx
- personal-information datasets:
- custom metrics:
- f1
- precision
- recall model-index:
- name: bert-pii-onnx results: []
BERT PII 检测模型 (ONNX)
该模型是一个基于 BERT 的词元分类模型,经过微调用于检测文本中的个人身份信息 (PII)。模型以 ONNX 格式提供,可在不同平台上高效推理。
模型描述
- 模型类型: 词元分类(命名实体识别)
- 基础模型:
bert-base-uncased(Google BERT) - 格式: ONNX
- 语言: 英语
- 许可证: Apache 2.0
- 训练数据集: ai4privacy/pii-masking-300k
预期用途
该模型旨在识别和分类文本中各种类型的个人身份信息,包括但不限于:
支持的 PII 类别
该模型可检测 27 种不同类型的 PII 实体:
个人标识符
- GIVENNAME1, GIVENNAME2 - 名字
- LASTNAME1, LASTNAME2, LASTNAME3 - 姓氏
- USERNAME - 用户名
- TITLE - 个人头衔
- SEX - 性别信息
联系方式
- EMAIL - 电子邮件地址
- TEL - 电话号码
- IP - IP 地址
位置信息
- STREET - 街道地址
- CITY - 城市名称
- STATE - 省/州名称
- COUNTRY - 国家名称
- POSTCODE - 邮政编码
- BUILDING - 建筑物名称/编号
- SECADDRESS - 次要地址
- GEOCOORD - 地理坐标
身份证件
- PASSPORT - 护照号码
- IDCARD - 身份证号码
- DRIVERLICENSE - 驾驶证号码
- SOCIALNUMBER - 社会保障号码
- PASS - 密码信息
时间信息
- DATE - 日期信息
- TIME - 时间信息
- BOD - 出生日期
该模型使用 BIO(Begin-Inside-Outside)标注方案,其中:
B-[ENTITY]标记实体的开始I-[ENTITY]标记实体的延续O标记非 PII 的词元
使用方法
依赖要求
pip install onnxruntime transformers tokenizers
Python 示例
import onnxruntime as ort
from transformers import AutoTokenizer
import numpy as np
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained("path/to/model")
# Load ONNX model
session = ort.InferenceSession("onnx/model.onnx")
# Prepare input text
text = "My name is John Smith and my email is john.smith@example.com"
inputs = tokenizer(text, return_tensors="np", padding=True, truncation=True)
# Run inference
outputs = session.run(
None,
{
"input_ids": inputs["input_ids"].astype(np.int64),
"attention_mask": inputs["attention_mask"].astype(np.int64),
"token_type_ids": inputs["token_type_ids"].astype(np.int64)
}
)
# Get predictions
logits = outputs[0]
predictions = np.argmax(logits, axis=-1)
# Map predictions to labels
id2label = {
0: "B-BOD", 1: "B-BUILDING", 2: "B-CITY", 3: "B-COUNTRY",
4: "B-DATE", 5: "B-DRIVERLICENSE", 6: "B-EMAIL", 7: "B-GEOCOORD",
8: "B-GIVENNAME1", 9: "B-GIVENNAME2", 10: "B-IDCARD", 11: "B-IP",
12: "B-LASTNAME1", 13: "B-LASTNAME2", 14: "B-LASTNAME3", 15: "B-PASS",
16: "B-PASSPORT", 17: "B-POSTCODE", 18: "B-SECADDRESS", 19: "B-SEX",
20: "B-SOCIALNUMBER", 21: "B-STATE", 22: "B-STREET", 23: "B-TEL",
24: "B-TIME", 25: "B-TITLE", 26: "B-USERNAME", 27: "I-BOD",
28: "I-BUILDING", 29: "I-CITY", 30: "I-COUNTRY", 31: "I-DATE",
32: "I-DRIVERLICENSE", 33: "I-EMAIL", 34: "I-GEOCOORD", 35: "I-GIVENNAME1",
36: "I-GIVENNAME2", 37: "I-IDCARD", 38: "I-IP", 39: "I-LASTNAME1",
40: "I-LASTNAME2", 41: "I-LASTNAME3", 42: "I-PASS", 43: "I-PASSPORT",
44: "I-POSTCODE", 45: "I-SECADDRESS", 46: "I-SEX", 47: "I-SOCIALNUMBER",
48: "I-STATE", 49: "I-STREET", 50: "I-TEL", 51: "I-TIME",
52: "I-TITLE", 53: "I-USERNAME", 54: "O"
}
# Decode predictions
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
labels = [id2label[pred] for pred in predictions[0]]
for token, label in zip(tokens, labels):
if token not in ["[CLS]", "[SEP]", "[PAD]"]:
print(f"{token}: {label}")
JavaScript/Node.js 示例
const ort = require('onnxruntime-node');
const { AutoTokenizer } = require('@xenova/transformers');
async function detectPII(text) {
// Load tokenizer
const tokenizer = await AutoTokenizer.from_pretrained('path/to/model');
// Load ONNX model
const session = await ort.InferenceSession.create('onnx/model.onnx');
// Tokenize input
const inputs = await tokenizer(text, {
padding: true,
truncation: true,
return_tensors: 'ortvalue'
});
// Run inference
const outputs = await session.run(inputs);
// Process outputs
const logits = outputs.logits;
// ... process predictions
}
模型架构
- 架构: BertForTokenClassification
- 隐藏层大小: 768
- 中间层大小: 3072
- 注意力头数: 12(BERT-base 的典型配置)
- 隐藏层数: 12(BERT-base 的典型配置)
- 激活函数: GELU
- 最大序列长度: 512 词元
- Dropout: 0.1
- 标签数量: 55(54 个 PII 标签 + Outside)
训练详情
训练数据
该模型在 ai4privacy/pii-masking-300k 数据集上进行了微调:
- 数据集: ai4privacy/pii-masking-300k
- 规模: 300,000 个样本
- 格式: 带有 PII 实体 BIO 标签的预标注文本
- 许可证: 请查看数据集页面了解许可证详情
训练流程
- 基础模型:
bert-base-uncased(Google BERT) - 分词方式: WordPiece 分词,小写标准化
- 最大序列长度: 128 词元(为效率优化)
- 填充词元: [PAD] (ID: 0)
- 未知词元: [UNK] (ID: 100)
- CLS 词元: [CLS] (ID: 101)
- SEP 词元: [SEP] (ID: 102)
- Mask 词元: [MASK] (ID: 103)
训练超参数
- 学习率: 2e-5
- 批次大小: 16(每设备)
- 训练轮数: 3
- 权重衰减: 0.01
- 优化器: AdamW(默认)
- 训练平台: Kaggle GPU T4 x2
- 训练时间: 约 1-2 小时
评估策略
- 评估指标: SeqEval(NER 任务的标准指标)
- 评估策略: 每轮训练后
- 跟踪指标:
- 精确率 (Precision)
- 召回率 (Recall)
- F1 分数
- 准确率 (Accuracy)
评估
该模型应在适当的 PII 检测基准上使用标准 NER 指标(F1、精确率、召回率)对每种实体类型进行评估。
局限性与偏差
- 模型性能可能因不同的文本领域和写作风格而异
- 对于训练数据中代表性不足的国家/地区的 PII 格式,可能无法很好地泛化
- 上下文相关的实体(如既是名字又是常见词的词)可能具有挑战性
- 模型可能存在训练数据中的偏差
- 在关键应用中,不应作为 PII 检测的唯一方法,需要人工审核
伦理考量
该模型旨在通过检测文本中的 PII 来帮助保护隐私。但是:
- 模型并不完美,可能会遗漏某些 PII(假阴性)或错误地将非 PII 标记为 PII(假阳性)
- 应作为综合隐私保护策略的一部分使用
- 用户应了解适用的隐私法规(GDPR、CCPA 等)
- 模型的使用应遵守所有相关法律法规
- 请考虑在您的特定用例中自动 PII 检测的影响
ONNX Runtime 兼容性
该模型与 ONNX Runtime 兼容,可部署于:
- CPU(针对推理优化)
- GPU (CUDA)
- 边缘设备
- Web 浏览器(通过 ONNX.js)
- 移动设备
文件结构
.
├── README.md # 本文件
├── config.json # 模型配置
├── tokenizer_config.json # 分词器配置
├── tokenizer.json # 快速分词器
├── vocab.txt # 词汇表文件
├── special_tokens_map.json # 特殊词元映射
└── onnx/
└── model.onnx # ONNX 模型文件
引用
如果您在研究或应用中使用此模型,请引用:
@misc{bert-pii-onnx,
title={BERT PII Detection Model (ONNX)},
author={Your Name/Organization},
year={2025},
howpublished={\url{https://huggingface.co/your-username/bert-pii-onnx}}
}
基础模型引用
该模型基于 BERT。请同时引用原始 BERT 论文:
@article{devlin2018bert,
title={BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding},
author={Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
journal={arXiv preprint arXiv:1810.04805},
year={2018}
}
联系方式
如有关于此模型的问题、问题反馈或建议,请在模型仓库中提交 issue。
致谢
基础模型
该模型构建于 Google Research 开发的 BERT(Bidirectional Encoder Representations from Transformers) 之上:
- 原始 BERT 论文: Devlin et al., 2018
- BERT 采用 Apache 2.0 许可证
数据集
该模型在 ai4privacy/pii-masking-300k 上训练:
- 数据集: ai4privacy/pii-masking-300k
- 创建者: Hugging Face 上的 ai4privacy 团队
- 规模: 300,000 个带有 PII 标注的样本
- 如果您使用此模型,请引用数据集创建者
@misc{ai4privacy-pii-dataset,
title={PII Masking 300K Dataset},
author={ai4privacy},
year={2024},
howpublished={\url{https://huggingface.co/datasets/ai4privacy/pii-masking-300k}}
}
技术
- Transformers 库: Hugging Face
- ONNX: Open Neural Network Exchange 用于跨平台模型部署
- ONNX Runtime: Microsoft ONNX Runtime 用于高效推理
特别感谢
- Hugging Face 团队提供的 Transformers 库和模型中心基础设施
- ONNX 社区提供的标准化模型格式和运行时
- 训练数据集的贡献者(如适用)
barflyman/bert-pii-detect-onnx
作者 barflyman
token-classification
↓ 1
♥ 0
创建时间: 2025-11-18 01:49:53+00:00
更新时间: 2025-11-18 02:35:48+00:00
在 Hugging Face 上查看文件 (10)
.DS_Store
.gitattributes
README.md
config.json
onnx/model.onnx
ONNX
onnx/model_quantized.onnx
ONNX
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.txt