Presidio项目中Transformers识别器的正确使用方式
问题背景
在使用微软开源的隐私数据识别工具Presidio时,开发者可能会遇到TransformersRecognizer类的使用问题。特别是当尝试使用GLiNER等预训练模型进行实体识别时,可能会遇到"TypeError: SpacyRecognizer.init() got an unexpected keyword argument 'model_path'"这样的错误。
问题根源分析
这个问题的根本原因在于Presidio项目中Transformers集成方式的多样性。Presidio提供了两种主要的方式来集成Transformers模型:
-
TransformersNlpEngine方式:这是官方推荐的标准集成方法,通过NLP引擎的方式将Transformers模型整合到Presidio的分析流程中。
-
自定义EntityRecognizer方式:当需要同时使用多个Transformers模型或有特殊需求时,可以通过创建自定义的实体识别器来包装Transformers模型。
解决方案详解
标准集成方法:TransformersNlpEngine
对于大多数使用场景,特别是只需要单一Transformers模型的情况,推荐使用TransformersNlpEngine。这种方法提供了更好的性能和更简单的配置方式:
from presidio_analyzer import AnalyzerEngine
from presidio_analyzer.nlp_engine import TransformersNlpEngine
nlp_engine = TransformersNlpEngine(
model_path="urchade/gliner_multi_pii-v1"
)
analyzer = AnalyzerEngine(nlp_engine=nlp_engine)
这种方式会自动处理模型的加载和推理过程,开发者只需要关注业务逻辑即可。
自定义识别器方法
当标准集成方法无法满足需求时,可以考虑创建自定义识别器。需要注意的是,Presidio核心库中的TransformersRecognizer实际上是继承自SpacyRecognizer的简化版本,并不直接支持model_path参数。
如果需要实现自定义的Transformers识别器,可以参考以下模式:
from presidio_analyzer import EntityRecognizer
class CustomTransformersRecognizer(EntityRecognizer):
def __init__(self, model_path, supported_entities):
super().__init__(supported_entities=supported_entities)
self.model = AutoModelForTokenClassification.from_pretrained(model_path)
self.tokenizer = AutoTokenizer.from_pretrained(model_path)
def analyze(self, text, entities, nlp_artifacts=None):
# 实现具体的分析逻辑
pass
关于GLiNER模型的特别说明
对于GLiNER这类专门用于隐私信息识别的预训练模型,Presidio提供了专门的集成方案。开发者可以直接使用预定义的GLiNER识别器,这种方式比通用的Transformers集成更加简单高效:
from presidio_analyzer import AnalyzerEngine
from presidio_analyzer.predefined_recognizers import GlinerRecognizer
gliner_recognizer = GlinerRecognizer()
analyzer = AnalyzerEngine()
analyzer.registry.add_recognizer(gliner_recognizer)
最佳实践建议
- 对于单一模型场景,优先考虑TransformersNlpEngine方式
- 需要多模型或特殊处理时,才考虑自定义识别器
- 使用GLiNER等专用模型时,直接使用对应的预定义识别器
- 注意不同Presidio版本间的API差异,特别是核心库与示例代码之间可能存在不一致
通过理解这些不同的集成方式和它们适用的场景,开发者可以更有效地利用Presidio结合Transformers模型进行隐私数据识别工作。
HunyuanImage-3.0
HunyuanImage-3.0 统一多模态理解与生成,基于自回归框架,实现文本生成图像,性能媲美或超越领先闭源模型00- DDeepSeek-V3.2-ExpDeepSeek-V3.2-Exp是DeepSeek推出的实验性模型,基于V3.1-Terminus架构,创新引入DeepSeek Sparse Attention稀疏注意力机制,在保持模型输出质量的同时,大幅提升长文本场景下的训练与推理效率。该模型在MMLU-Pro、GPQA-Diamond等多领域公开基准测试中表现与V3.1-Terminus相当,支持HuggingFace、SGLang、vLLM等多种本地运行方式,开源内核设计便于研究,采用MIT许可证。【此简介由AI生成】Python00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~0369Hunyuan3D-Part
腾讯混元3D-Part00ops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。C++095AI内容魔方
AI内容专区,汇集全球AI开源项目,集结模块、可组合的内容,致力于分享、交流。02Spark-Chemistry-X1-13B
科大讯飞星火化学-X1-13B (iFLYTEK Spark Chemistry-X1-13B) 是一款专为化学领域优化的大语言模型。它由星火-X1 (Spark-X1) 基础模型微调而来,在化学知识问答、分子性质预测、化学名称转换和科学推理方面展现出强大的能力,同时保持了强大的通用语言理解与生成能力。Python00GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile09
- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00
项目优选









