Piiranha-v1 - 使用 AI 模型保护你的个人信息 - 本地安装

科技   2024-09-15 18:25   湖南  

🍹 Insight Daily 🪺

Aitrainee | 公众号:AI进修生

Hi,这里是Aitrainee,欢迎阅读本期新文章。

如果你正在寻找保护个人可识别信息(PII)的解决方案,那么可以看看这个只有2.8亿小型编码器的开源模型,名为 Piranha v1。这个模型专注于 PII 检测,仅此而已。该模型支持六种语言,检测精度接近完美,并且以 MIT 许可证发布。

在构建AI和机器学习模型时,企业往往需要大量数据进行训练,而这些数据可能包含大量PII。Piranha v1 可以用于数据集清理,在将数据用于机器学习训练之前,清除或遮蔽所有敏感信息,确保数据合规并符合隐私保护标准。

在客户服务业务中,企业往往通过电话、邮件或在线聊天与客户互动,客户在交谈过程中可能会泄露敏感信息。Piranha v1 可以嵌入到客户服务系统中,实时检测并遮蔽客户或客服在对话中提到的个人信息,确保这些信息不会被记录到日志或历史记录中。

我们将在本地的 Notebook 环境中安装它,然后看看它的运行效果。在这之前。

这个模型能够检测17种个人可识别信息,支持六种语言,标记检测率为 98.27%,非常惊人。这意味着它的精度超过98%,即98%被分类为PII的标记实际上确实是PII。另外,它的召回率也是98.27%,这意味着它能正确识别98.27%的PII标记。第三,它的特异性为99.84%,这意味着它能正确识别99.84%的非PII标记。

Piranha 模型尤其擅长检测密码、电子邮件、电话号码和用户名,准确率达到100%。该模型是微软 mdta V3 基础模型的精调版本,能够处理256个 Deberta 标记的上下文长度。如果文本超过这个长度,你可以将其拆分。

支持的语言包括英语、西班牙语、法语、德语、意大利语和荷兰语。支持的 PII 类型包括账户号码、楼号、城市、信用卡号码、出生日期、驾驶证、电子邮件、名字、姓氏、身份证号、密码、社会安全号码、街道地址、税号、电话号码、用户名和邮政编码。它们还在模型卡中分享了一些基准测试信息。

现在让我们尝试在本地安装这个模型。首先创建一个虚拟环境,命名为 PII。

虚拟环境已经创建完成,接下来我们安装 torch 和 Transformers。

安装完成后,启动 Jupyter Notebook,在浏览器环境中运行模型。

Notebook 已经启动。

让我粘贴代码,代码(官方的)非常简单,主要是导入我们刚才安装的库:torch 和 Transformers,指定模型名称和分词器,

!pip install transformers
!pip install transformersimport torchfrom transformers import AutoTokenizer, AutoModelForTokenClassification
model_name = "iiiorg/piiranha-v1-detect-personal-information"tokenizer = AutoTokenizer.from_pretrained(model_name)model = AutoModelForTokenClassification.from_pretrained(model_name)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)
def mask_pii(text, aggregate_redaction=True): # Tokenize input text inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) inputs = {k: v.to(device) for k, v in inputs.items()}
# Get the model predictions with torch.no_grad(): outputs = model(**inputs)
# Get the predicted labels predictions = torch.argmax(outputs.logits, dim=-1)
# Convert token predictions to word predictions encoded_inputs = tokenizer.encode_plus(text, return_offsets_mapping=True, add_special_tokens=True) offset_mapping = encoded_inputs['offset_mapping']
masked_text = list(text) is_redacting = False redaction_start = 0 current_pii_type = ''
for i, (start, end) in enumerate(offset_mapping): if start == end: # Special token continue
label = predictions[0][i].item() if label != model.config.label2id['O']: # Non-O label pii_type = model.config.id2label[label] if not is_redacting: is_redacting = True redaction_start = start current_pii_type = pii_type elif not aggregate_redaction and pii_type != current_pii_type: # End current redaction and start a new one apply_redaction(masked_text, redaction_start, start, current_pii_type, aggregate_redaction) redaction_start = start current_pii_type = pii_type else: if is_redacting: apply_redaction(masked_text, redaction_start, end, current_pii_type, aggregate_redaction) is_redacting = False
# Handle case where PII is at the end of the text if is_redacting: apply_redaction(masked_text, redaction_start, len(masked_text), current_pii_type, aggregate_redaction)
return ''.join(masked_text)
def apply_redaction(masked_text, start, end, pii_type, aggregate_redaction): for j in range(start, end): masked_text[j] = '' if aggregate_redaction: masked_text[start] = '[redacted]' else: masked_text[start] = f'[{pii_type}]'

运行代码,模型下载完成了。模型非常小,只有大约1.1GB。现在我们看看如何使用它。

我们测试的文本中指定了名字、地址和电话号码,所有这些都是个人可识别信息。

模型有两种方式处理:一种是聚合遮蔽,另一种是详细遮蔽,后者会告诉你具体遮蔽了哪些PII。

运行代码后,结果非常快,模型已经遮蔽了名字、地址和电话号码。在详细遮蔽中,它告诉我们遮蔽的具体内容,如名字、姓氏、楼号、城市、街道和电话号码。

让我们再试一个例子。这段文本提到了 Dr. Emily J. Chen 的工作地址及其他一些信息,如电子邮件和电话号码。运行后,模型很快遮蔽了所有PII,地址的具体公寓号没有遮蔽,因为它不重要,但其他信息都被遮蔽了。

详细遮蔽告诉我们哪些具体内容被遮蔽,如电子邮件、电话号码等,非常智能。

现在我们给模型一个更具挑战性的任务。这段文本提到 "John Smith 是 John Mayer 的大粉丝",John Smith 是素人,而 John Mayer 是公众人物,模型需要区分两者。运行后,模型正确地遮蔽了 John Smith 的信息,而没有遮蔽 John Mayer 的信息,非常令人印象深刻。

总的来说,这款模型非常令人惊艳,特别适用于网络安全场景。

🌟希望这篇文章对你有帮助,感谢阅读!如果你喜欢这系列文章请以 点赞 / 分享 / 在看 的方式告诉我,以便我用来评估创作方向。

参考链接:
[1] 代码:https://colab.research.google.com/github/williamgao1729/piiranha-quickstart/blob/main/piiranha_quickstart%20(1).ipynb
[2] huggingface:https://huggingface.co/iiiorg/piiranha-v1-detect-personal-information

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握AIGC时代的个人力量)

点这里👇关注我,记得标星哦~

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~ 

AI进修生
AI算法工程师 / Prompt工程师 / ROS机器人开发者 | 分享AI动态与算法应用资讯,提升技术效率。
 最新文章