未提供项目描述
项目描述
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
从源
安装包
- 克隆仓库
- 安装所有依赖项,最好在虚拟环境中进行
# 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)不会自动安装,以减少安装复杂性。
本包包含什么?
- 伪造数据生成器用于PII识别器和NER模型
- 数据表示层用于数据生成、建模和分析
- 多个模型/识别器评估文件(例如,用于Spacy、Flair、CRF、Presidio API、Presidio Analyzer Python包、特定Presidio识别器)
- 多模型训练和建模代码
- 用于结果分析的辅助函数
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的商标。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。