基于Google DLP的字典式转换:如何实现可统计的大学信息掩码?
实现大学名称掩码且保留统计能力的去标识化方法
你需要的是**静态别名映射(Static Alias Mapping)**这种去标识化方案,刚好能满足“掩码敏感信息+保留统计能力”的需求,我给你详细拆解下:
核心思路
把每个真实的大学名称,一对一映射到一个无意义的统一标识符(比如UNIVERSITY_1、UNIVERSITY_2),并且同一所大学始终对应同一个标识符。这样既隐藏了真实校名,又能通过标识符轻松统计某“组”的就读人数。
具体实现步骤
结合你给出的输入输出例子,操作流程如下:
生成专属映射字典
先从原始数据里提取所有唯一的大学名称,给每个名称分配一个专属的掩码标识。比如你的例子里:University of Pennsylvania→UNIVERSITY_1Harvard University→UNIVERSITY_2
这个字典要单独保存好,后续统计或者需要还原数据(若有授权)时会用到。
批量替换数据字段
遍历所有学生条目,把每个学生的university字段值,替换成映射字典里对应的掩码标识。替换后,同一大学的学生都会拥有相同的标识符,直接统计该标识符的出现次数,就是对应的就读人数。
代码示例(Python)
用代码实现的话非常直观,帮你写了一段可运行的示例:
# 原始输入数据 original_data = { "students": [ {"name": "John Smith", "university": "University of Pennsylvania"}, {"formattedName": "Mike Miller", "university": "Harvard University"}, {"formattedName": "Elon Musk", "university": "University of Pennsylvania"} ] } # 自动生成大学名称到掩码的映射字典 unique_universities = {stu["university"] for stu in original_data["students"]} uni_mask_mapping = {uni: f"UNIVERSITY_{idx+1}" for idx, uni in enumerate(unique_universities)} # 执行掩码替换 masked_data = { "students": [ {key: uni_mask_mapping[value] if key == "university" else value for key, value in student.items()} for student in original_data["students"] ] } # 统计UNIVERSITY_1的就读人数 uni1_count = sum(1 for stu in masked_data["students"] if stu["university"] == "UNIVERSITY_1") print("掩码后的数据:") print(masked_data) print("\nUNIVERSITY_1的就读人数:", uni1_count)
运行后就会得到你给出的输出结果,同时能统计出UNIVERSITY_1对应的人数是2。
方案优势
- 完全隐藏了真实敏感信息,避免隐私泄露
- 完美保留了数据的聚合统计能力,分组、计数操作不受影响
- 实现成本低,不管用Python、SQL还是其他数据处理工具都能快速落地
注意:如果后续需要还原真实校名,一定要妥善保管映射字典,并且做好权限管控,防止映射关系泄露导致隐私信息被逆向还原。
内容的提问来源于stack exchange,提问作者Вадим По
相关产品推荐
相关产品推荐

