Presidio-research
这个软件包包含用于开发Presidio新识别器的数据科学相关任务。它用于评估整个系统,以及评估特定的PII识别器或PII检测模型。此外,它还包含一个假数据生成器,可以基于模板和假PII创建虚假句子。
谁应该使用它?
- 任何对开发或评估PII检测模型、现有Presidio实例或Presidio PII识别器感兴趣的人。
- 任何对基于先前数据集或句子模板生成新数据感兴趣的人(例如,为命名实体识别模型增加实体值的覆盖范围)。
入门
注意:Presidio评估器需要Python>=3.9
从PyPI安装
conda create --name presidio python=3.9
conda activate presidio
pip install presidio-evaluator
# 下载presidio-analyzer使用的spaCy模型
python -m spacy download en_core_web_lg
从源代码安装
要安装该软件包:
- 克隆仓库
- 安装所有依赖,最好在虚拟环境中:
# 安装软件包+依赖
pip install poetry
poetry install --with=dev
# 要安装所有额外的NER依赖(如Flair、Stanza、CRF),运行:
# poetry install --with='ner,dev'
# 下载presidio-analyzer使用的spaCy模型
python -m spacy download en_core_web_lg
# 验证安装
pytest
请注意,某些依赖项(如Flair和Stanza)不会自动安装,以降低安装复杂度。
这个软件包包含什么?
- 用于PII识别器和NER模型的假数据生成器
- 用于数据生成、建模和分析的数据表示层
- 多个模型/识别器评估文件(如用于Spacy、Flair、CRF、Presidio API、Presidio Analyzer Python包、特定Presidio识别器)
- 多个模型的训练和建模代码
- 用于结果分析的辅助函数
1. 数据生成
更多详情请参见数据生成器README。
数据生成过程接收一个包含模板的文件,例如My name is {{name}}
。然后,它通过采样模板和PII值创建新的合成句子。此外,它还对数据进行分词,为新创建的样本创建标签(IO/BIO/BILUO)和跨度。
- 有关数据生成/增强的信息,请参见数据生成器README。
- 有关运行生成过程的示例,请参见此笔记本。
- 要了解所使用的底层假PII数据,请参见此探索性数据分析笔记本。
生成数据后,可以将其分割为训练/测试/验证集,同时确保每个模板只存在于一个集合中。更多详情请参见此笔记本。
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 识别器的精确度和召回率,并进行错误分析。
示例:
- [评估 Presidio](https://github.com/microsoft/presidio-research/blob/master/notebooks/4_Evaluate_Presidio_Analyzer.ipynb
- [评估 spaCy 模型](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20spacy%20models.ipynb
- [评估 Stanza 模型](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20stanza%20models.ipynb
- [评估 CRF 模型](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20CRF%20models.ipynb
- [评估 Flair 模型](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20flair%20models.ipynb
- [评估 Azure 文本分析](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20azure%20text%20analytics.ipynb
4. 训练 PII 检测模型
CRF
要在新数据集上训练原始 CRF,请参阅[此笔记本](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Train%20CRF.ipynb。要进行评估,请参阅[此笔记本](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20CRF%20models.ipynb。
spaCy
要训练新的 spaCy 模型,首先将数据集保存为 spaCy 格式:
# dataset 是 List[InputSample] 类型
InputSample.create_spacy_dataset(dataset ,output_path="dataset.spacy")
要进行评估,请参阅[此笔记本](https://github.com/microsoft/presidio-research/blob/master/notebooks/models/Evaluate%20spacy%20models.ipynb
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。
当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA,并相应地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明操作即可。您只需在所有使用我们的 CLA 的存储库中执行一次此操作。
本项目已采用Microsoft 开源行为准则。 有关更多信息,请参阅行为准则常见问题解答或联系 opencode@microsoft.com 获取任何其他问题或意见。
版权声明:
Fake Name Generator 生成的虚假身份信息根据知识共享署名-相同方式共享 3.0 美国许可证授权使用。 Fake Name Generator 和 Fake Name Generator 标志是 Corban Works, LLC 的商标。