跳转到主要内容

未提供项目描述

项目描述

Presidio-research

本包包含与数据科学相关的任务,用于开发新的Presidio识别器。它用于评估整个系统,以及评估特定的PII识别器或PII检测模型。此外,它还包含一个伪造数据生成器,根据模板和伪造的PII创建伪造句子。

谁应该使用它?

  • 任何对Presidio进行开发或评估PII检测模型、现有Presidio实例或Presidio PII识别器感兴趣的人。
  • 任何对基于先前数据集或句子模板b>生成新数据感兴趣的人(例如,为了增加实体值的覆盖范围)用于命名实体识别模型。

入门

从PyPI

conda create --name presidio python=3.9
conda activate presidio
pip install presidio-evaluator

# Download a spaCy model used by presidio-analyzer
python -m spacy download en_core_web_lg

从源

安装包

  1. 克隆仓库
  2. 安装所有依赖项,最好在虚拟环境中进行
# Create conda env (optional)
conda create --name presidio python=3.9
conda activate presidio

# Install package+dependencies
pip install poetry
poetry install
# To install with all additional NER dependencies (e.g. Flair, Stanza, CRF), run:
# poetry install --with ner 

# Download a spaCy model used by presidio-analyzer
python -m spacy download en_core_web_lg

# Verify installation
pytest

请注意,一些依赖项(如Flair和Stanza)不会自动安装,以减少安装复杂性。

本包包含什么?

  1. 伪造数据生成器用于PII识别器和NER模型
  2. 数据表示层用于数据生成、建模和分析
  3. 多个模型/识别器评估文件(例如,用于Spacy、Flair、CRF、Presidio API、Presidio Analyzer Python包、特定Presidio识别器)
  4. 多模型训练和建模代码
  5. 用于结果分析的辅助函数

1. 数据生成

有关更多详细信息,请参阅数据生成器README

数据生成过程接收一个包含模板的文件,例如我的名字是{{name}}。然后,它通过采样模板和PII值创建新的合成句子。此外,它对数据进行分词,为创建的新样本创建标签(IO/BIO/BILUO)和跨度。

一旦生成数据,可以在确保每个模板只存在于一个集中进行分割。有关更多详细信息,请参阅这个笔记本

2. 数据表示

为了标准化过程,我们使用特定的数据对象,这些对象包含生成、分析、建模和评估数据和模型所需的所有信息。具体来说,请参阅data_objects.py

标准化的结构List[InputSample]可以转换为不同的格式

  • CONLL
from presidio_evaluator import InputSample
dataset = InputSample.read_dataset_json("data/synth_dataset_v2.json")
conll = InputSample.create_conll_dataset(dataset)
conll.to_csv("dataset.csv", sep="\t")
  • spaCy v3
from presidio_evaluator import InputSample
dataset = InputSample.read_dataset_json("data/synth_dataset_v2.json")
InputSample.create_spacy_dataset(dataset, output_path="dataset.spacy")
  • Flair
from presidio_evaluator import InputSample
dataset = InputSample.read_dataset_json("data/synth_dataset_v2.json")
flair = InputSample.create_flair_dataset(dataset)
  • json
from presidio_evaluator import InputSample
dataset = InputSample.read_dataset_json("data/synth_dataset_v2.json")
InputSample.to_json(dataset, output_file="dataset_json")

3. PII模型评估

presidio-evaluator框架允许您评估Presidio作为系统、NER模型或特定PII识别器,以评估精确度和召回率以及错误分析。

示例

4. 训练PII检测模型

CRF

要在一个新数据集上训练一个简单的CRF,请参阅这个笔记本。要评估,请参阅这个笔记本

spaCy

要训练一个新的spaCy模型,首先将数据集保存为spaCy格式

# dataset is a List[InputSample]
InputSample.create_spacy_dataset(dataset ,output_path="dataset.spacy")

要评估,请参阅这个笔记本

Flair

  • 要训练Flair模型,请参阅这个辅助类或这个片段
from presidio_evaluator.models import FlairTrainer
train_samples = "data/generated_train.json"
test_samples = "data/generated_test.json"
val_samples = "data/generated_validation.json"

trainer = FlairTrainer()
trainer.create_flair_corpus(train_samples, test_samples, val_samples)

corpus = trainer.read_corpus("")
trainer.train(corpus)

请注意,这三个json文件是使用InputSample.to_json创建的。

更多信息

贡献

此项目欢迎贡献和建议。大多数贡献需要您同意贡献者许可协议(CLA),声明您有权,并且实际上确实授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com

当您提交pull请求时,CLA机器人将自动确定您是否需要提供CLA,并适当装饰PR(例如,状态检查,注释)。只需遵循机器人提供的说明即可。您只需在整个使用我们的CLA的仓库中做一次。

此项目已采用Microsoft开源行为准则。有关更多信息,请参阅行为准则FAQ或通过opencode@microsoft.com联系以获取任何其他问题或评论。

版权声明

Fake Name Generator生成的假名识别身份受Creative Commons Attribution-Share Alike 3.0 United States License许可。Fake Name Generator和Fake Name Generator标志是Corban Works, LLC的商标。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

本发行版没有源分发文件。请参阅有关生成分发归档的教程。

构建的分发

presidio_evaluator-0.1.3-py3-none-any.whl (638.8 kB 查看哈希值)

上传时间: Python 3

由以下支持