3 大语言模型预训练数据-3.2 数据处理-3.2.3 隐私消除——使用正则表示方法过滤个人隐私信息数据(包括邮件、电话、地址等)
摘要: 本文介绍使用正则表达式在大模型数据处理中过滤个人隐私信息的方法。通过模式匹配识别邮箱、电话、地址等敏感信息,并给出常见正则模式(如中国手机号1[3-9]\d{9})和Python实现示例。该方法高效灵活,但需注意误判漏判问题,建议结合关键词过滤和机器学习优化精度,同时遵守隐私法规。正则表达式结合其他技术可有效平衡数据可用性与隐私保护需求。
·
大模型数据处理中使用正则表示方法过滤个人隐私信息数据(包括邮件、电话、地址等)
在大模型数据处理中,使用正则表达式过滤个人信息数据是一种高效且灵活的方法。正则表达式通过定义特定模式来匹配敏感信息,以下从 原理、常见正则模式、实现流程及示例三方面详细说明:
一、正则表达式过滤个人信息的原理
-
核心逻辑
正则表达式通过模式匹配识别文本中符合敏感信息特征的字符串,例如:- 邮箱地址的结构特征:
用户名@域名 - 电话号码的数字组合特征:中国手机号以
1[3-9]\d{9}开头 - 地址的地理标识特征:包含
省/市/区+街道+门牌号等关键词
- 邮箱地址的结构特征:
-
处理流程
输入文本 → 正则表达式匹配敏感模式 → 替换/删除匹配内容 → 输出脱敏文本
二、常见个人信息的正则表达式模式
1. 邮箱地址
- 通用模式:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b- 解释:匹配
字母/数字/符号+@+域名+后缀的结构,例如user.name@example.com。
- 解释:匹配
- 示例:
输入文本:联系我:john.doe@company.com
正则匹配后替换为:联系我:[邮箱已脱敏]
2. 电话号码
- 中国手机号:
1[3-9]\d{9}
(匹配11位数字,以13/14/15/16/17/18/19开头) - 固定电话(含区号):
0\d{2,3}-\d{7,8}
(匹配区号-号码,如010-12345678) - 示例:
输入文本:电话:13812345678 或 021-87654321
替换后:电话:[手机号已脱敏] 或 [固话已脱敏]
3. 地址信息
- 简化模式:
[\u4e00-\u9fa5]{2,}省?[\u4e00-\u9fa5]{2,}市?[\u4e00-\u9fa5]{2,}区?[0-9a-zA-Z\u4e00-\u9fa5]+街?道?路?[0-9]号?- 解释:通过中文地名关键词+数字编号匹配地址,例如
北京市海淀区中关村大街1号。
- 解释:通过中文地名关键词+数字编号匹配地址,例如
- 示例:
输入文本:地址:广东省深圳市南山区科技园南路56号
替换后:地址:[地址已脱敏]
4. 身份证号(18位)
- 模式:
\d{6}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)- 解释:匹配
6位地址码+8位出生日期+3位顺序码+1位校验码,例如110101199001011234。
- 解释:匹配
5. 银行卡号(简化)
- 模式:
\d{16,19}- 解释:匹配16-19位数字(实际应用中需结合银行前缀优化)。
三、代码实现示例(Python)
以下是使用Python的re模块进行个人信息脱敏的示例:
import re
def mask_personal_info(text):
# 定义正则表达式模式字典
patterns = {
# 邮箱
'email': r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b',
# 中国手机号
'phone': r'1[3-9]\d{9}',
# 固定电话
'landline': r'0\d{2,3}-\d{7,8}',
# 简化地址(匹配省市区+街道+号码)
'address': r'[\u4e00-\u9fa5]{2,}省?[\u4e00-\u9fa5]{2,}市?[\u4e00-\u9fa5]{2,}区?[0-9a-zA-Z\u4e00-\u9fa5]+街?道?路?[0-9]号?',
# 身份证号(简化)
'id_card': r'\d{17}(\d|X)'
}
# 替换敏感信息
for pattern_name, pattern in patterns.items():
text = re.sub(pattern, f'[{pattern_name}已脱敏]', text)
return text
# 测试示例
sample_text = """
用户信息:
姓名:张三
邮箱:zhangsan@example.com
电话:13912345678,固定电话:010-12345678
地址:北京市海淀区中关村南大街5号
身份证:110101199001011234
银行卡:6222021100012345678
"""
desensitized_text = mask_personal_info(sample_text)
print(desensitized_text)
输出结果:
用户信息:
姓名:张三
邮箱:[email已脱敏]
电话:[phone已脱敏],固定电话:[landline已脱敏]
地址:[address已脱敏]
身份证:[id_card已脱敏]
银行卡:6222021100012345678
四、实际应用中的优化点
-
模式组合与优先级
- 复杂场景下可使用
|连接多个模式(如(邮箱模式)|(电话模式)),并按敏感程度排序(先匹配身份证,再匹配邮箱)。
- 复杂场景下可使用
-
上下文感知
- 结合关键词过滤,例如仅在
地址:、电话:等前缀后匹配对应模式,减少误判。
- 结合关键词过滤,例如仅在
-
性能优化
- 对长文本分块处理,或使用
re.compile()预编译正则表达式提升效率。
- 对长文本分块处理,或使用
-
多语言支持
- 处理英文地址时,调整模式为
\b[A-Za-z0-9\s,.]+St|Ave|Rd+\b等(匹配Street、Avenue等后缀)。
- 处理英文地址时,调整模式为
五、注意事项
- 误判与漏判:正则表达式无法100%准确识别所有敏感信息(如缩写地址
中关村5号),需结合机器学习模型(如命名实体识别)提升精度。 - 合规性:脱敏规则需符合《个人信息保护法》等法规,例如身份证号需保留前6位和后4位中间脱敏(
110101******1234)。 - 灵活配置:允许用户自定义正则模式,以适配特定场景下的敏感信息格式(如企业内部的工号、订单号)。
通过正则表达式与其他技术结合,可在大模型数据处理中高效实现个人信息的自动化过滤,平衡数据可用性与隐私保护需求。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)