重要提示
您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新的库 NeMo Run。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
PII 识别和移除#
背景#
个人身份信息 (PII) 去标识化工具的目的是帮助从数据集中清除敏感数据。以下是该工具当前支持的敏感数据类型列表
姓名
电子邮件地址
物理地址
电话号码
IP 地址
信用卡/借记卡号
美国社会安全号码
日期
该工具利用 Dask 来并行化任务,因此可以轻松扩展到 TB 级数据。尽管 Dask 可以部署在各种分布式计算环境(例如 HPC 集群、Kubernetes 和其他云产品,如 AWS EKS、Google Cloud 等)中,但当前的实现仅支持使用 Slurm 作为资源管理器的 HPC 集群上的 Dask。
用法#
读取文档和去标识化#
假设我们有一个“books”数据集,其存储结构如下
books_dataset/
books_00.jsonl
books_01.jsonl
books_02.jsonl
您可以使用以下方法读取数据集、对其进行去标识化,并将其写入输出目录
from nemo_curator.datasets import DocumentDataset
from nemo_curator.utils.distributed_utils import read_data, write_to_disk, get_client
from nemo_curator.utils.file_utils import get_batched_files
from nemo_curator.modules.modify import Modify
from nemo_curator.modifiers.pii_modifier import PiiModifier
modifier = PiiModifier(
language="en",
supported_entities=["PERSON", "EMAIL_ADDRESS"],
anonymize_action="replace",
batch_size=1000,
device="gpu")
for file_names in get_batched_files(
"book_dataset,
"output_directory",
"jsonl",
32
):
source_data = read_data(file_names, file_type="jsonl", backend='pandas', add_filename=True)
dataset = DocumentDataset(source_data)
print(f"Dataset has {source_data.npartitions} partitions")
modify = Modify(modifier)
modified_dataset = modify(dataset)
write_to_disk(modified_dataset.df,
"output_directory",
write_to_filename=True,
output_type="jsonl"
)
让我们逐行浏览这段代码。
modifier = PiiModifier
创建一个PiiModifier
类的实例,该类负责 PII 去标识化for file_names in get_batched_files
从 book_dataset 中检索一批 32 个文档source_data = read_data(file_names, file_type="jsonl", backend='pandas', add_filename=True)
使用 Dask 并以 Pandas 作为后端,从所有文件中读取数据。add_filename
参数确保输出文件与输入文件具有相同的文件名。dataset = DocumentDataset(source_data)
使用批量文件创建DocumentDataset
的实例。DocumentDataset
是 NeMo Curator 中文本数据集的标准格式。modify = Modify(modifier)
创建Modify
类的实例。此类可以将任何修饰符作为参数modified_dataset = modify(dataset)
通过根据传递的参数执行 PII 去标识化来修改数据集中的数据。write_to_disk(modified_dataset.df ....
将去标识化的文档写入磁盘。
PII 编辑模块也可以通过 script/find_pii_and_deidentify.py
脚本调用,该脚本提供基于 CLI 的界面。要查看脚本支持的完整选项列表,只需执行
python nemo_curator/scripts/find_pii_and_deidentify.py
要从 Slurm 环境中启动脚本,可以修改和使用脚本 examples/slurm/start-slurm.sh
。
从中断处恢复#
跟踪数据集中哪些文档已被处理可能很有用,这样如果长时间的策展作业中断,可以恢复它们。NeMo Curator 提供了一个实用程序,可以轻松跟踪哪些数据集分片已被处理。get_batched_files
的调用将返回一个迭代器,该迭代器遍历修饰符(如 PiiModifierBatched
)尚未处理的文件。当您重新运行上面提供的代码示例时,NeMo Curator 确保 PII 模块仅处理未处理的文件。