4. 敏感数据识别的基本方法

在医疗数据治理中,识别“哪些字段、哪些文本片段属于敏感数据”是分级分类的前置动作。识别方法并非越复杂越好,而是要与数据形态、合规要求、可解释性和运维成本匹配。本节围绕五类主流技术——规则、词典、正则、机器学习、深度学习——说明其原理、实现要点、典型参数与医疗场景适用边界,并给出可落地的组合策略。

一、五类识别技术的原理与实现要点

基于规则的方法依赖人工编写的判定条件,通常由字段名、表名、业务上下文和取值分布共同触发。例如:字段名匹配“身份证”“住院号”“手机号”,且该字段非空率大于 90%、去重后长度集中在 15 或 18 位,则判定为高敏感。规则引擎常用 Drools、JSON 规则表或 SQL 断言实现。其优点是透明、可审计、误报可控;缺点是维护成本随规则数量线性增长,跨系统字段命名不一致时容易漏判。

基于词典的方法适用于枚举型敏感值,如诊断名称、药品名称、科室名称、民族、婚姻状态等。实现时先构建标准词表,再对文本做分词与精确/模糊匹配。医疗场景中,词典可来自 ICD-10 诊断编码库、国家药监局药品目录、医院科室字典。关键参数包括匹配模式(精确、前缀、包含)、同义词扩展和最小词长。词典法的召回率取决于词表覆盖率,对未登录词和变体写法(如“心梗”与“急性心肌梗死”)需要同义词表补充。

基于正则表达式的方法针对具有固定格式的标识符,如身份证号、手机号、银行卡号、住院号、检查报告单号。以中国大陆身份证号为例,常用正则:

^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$

该表达式校验 18 位身份证的地址码、出生日期和校验位格式。实际工程中还需配合校验位加权计算,降低“格式正确但号码非法”的误报。正则的优点是速度快、可解释;缺点是无法处理自由文本中的变体、空格分隔和 OCR 噪声。

基于机器学习的方法把识别建模为分类或序列标注任务。常用特征包括字符 n-gram、词性、上下文窗口、字段名嵌入、是否包含数字/字母等。模型可选逻辑回归、随机森林、CRF、BiLSTM-CRF。训练数据通常由人工标注的医疗文本片段构成,标签体系如 BIO(B-姓名、I-姓名、O-非敏感)。评估指标以实体级精确率、召回率和 F1 为主。机器学习能捕捉上下文,例如“张医生”中的“张”是姓氏而非普通量词,但需要标注语料,且对分布外数据敏感。

基于深度学习的方法使用预训练语言模型(如 BERT、RoBERTa、医疗领域预训练模型)进行微调,直接输出 token 级标签。其优势是无需大量手工特征,能处理长距离依赖和语义变体;代价是算力、标注量和推理延迟较高。医疗场景中,若涉及患者隐私,模型训练与推理应部署在院内可控环境,避免原始文本外传。

五类敏感数据识别技术:输入特征、判定机制与医疗适用性 输入对象 字段名/表名 如 pat_name 结构化值 身份证/手机号 自由文本 病程/主诉 枚举字典 诊断/药品 上下文 前后窗口 识别方法与判定机制 规则法 字段名+非空率+长度分布 可审计,维护成本高 词典法 ICD-10/药品目录匹配 召回依赖词表覆盖 正则法 固定格式标识符 快、可解释、怕变体 机器学习 CRF/BiLSTM-CRF 序列标注 需标注语料,可捕捉上下文 深度学习 BERT/RoBERTa 微调,token 级标签输出 语义变体强,算力与标注成本高 组合策略:规则+正则做高置信初筛 → 词典补枚举 → ML/DL 处理自由文本 置信度分层:高置信直接定级,中置信人工复核,低置信进入样本池 评估:实体级 P/R/F1,按敏感类型分别统计 医疗合规:原始文本不出院内,模型本地部署 输出与定级 敏感类型标签 姓名/证件/诊断 置信度分数 0.0~1.0 分级建议 L1~L4 证据片段 命中位置/规则ID 复核队列 中低置信样本

二、医疗场景适用性对比

不同方法在医疗数据上的表现差异明显。结构化字段(如患者主索引、检验结果表)字段名规范、取值格式稳定,规则法与正则法即可覆盖大部分身份证、手机号、住院号识别,且误报率低。半结构化文本(如检查报告、出院小结)中,诊断名称、药品名称适合词典法;而姓名、地址、职业等自由表述则更适合机器学习或深度学习。

方法 典型输入 医疗场景优势 主要局限 建议定位
规则 字段名、表名、取值分布 可审计、误报低、易与元数据联动 跨系统命名不一致时漏判 结构化字段初筛
词典 诊断、药品、科室枚举值 标准词表可直接复用,精确率高 未登录词、缩写、变体召回不足 枚举型敏感值识别
正则 身份证、手机号、住院号 速度快、格式约束强 无法处理空格、OCR 噪声、变体 固定格式标识符
机器学习 标注文本片段、上下文特征 可捕捉上下文,F1 优于纯规则 依赖标注语料,分布外泛化弱 自由文本实体识别
深度学习 预训练模型 + 微调语料 语义变体强,长距离依赖好 算力高、推理延迟大、需本地部署 复杂文本高召回场景

三、组合策略与工程落地

实际工程中很少单独使用一种方法。推荐采用“规则+正则做高置信初筛,词典补枚举,机器学习/深度学习处理自由文本”的分层架构。具体流程如下:

  1. 元数据扫描:读取表名、字段名、注释、数据类型,命中规则库中的敏感字段命名模式,输出候选字段。
  2. 取值抽样:对候选字段抽取 1000 条非空值,统计长度分布、字符类型占比、去重率,判断是否符合身份证、手机号等格式。
  3. 正则校验:对格式匹配的字段执行正则与校验位计算,输出高置信敏感字段。
  4. 文本实体识别:对自由文本字段,先跑词典匹配诊断、药品,再用序列标注模型识别姓名、地址、职业等实体。
  5. 置信度融合:将规则命中、正则命中、模型概率加权,得到 0~1 的置信度。例如规则命中权重 0.4、正则 0.3、模型 0.3,总分超过 0.8 直接定级,0.5~0.8 进入人工复核,低于 0.5 进入样本池用于迭代。
  6. 结果输出:生成敏感类型标签、置信度、分级建议、证据片段和复核队列,供数据治理平台消费。
教学示例参数:假设某医院患者主索引表含字段 pat_name、id_card、phone、diagnosis。规则命中 id_card 与 phone;正则校验 id_card 通过率 98.7%;词典匹配 diagnosis 命中 ICD-10 词表 92.3%;序列标注模型对 pat_name 的实体级 F1 为 0.91。融合后四个字段均判定为 L3 及以上敏感级别。以上数据为教学假设,非实测结果。
合规提醒:涉及患者原始文本的模型训练与推理,应在院内可控环境完成,避免将未脱敏文本传输至外部平台。识别结果中的证据片段本身可能包含敏感值,存储与展示时需做脱敏或权限控制。

四、评估与迭代

识别效果不能只看准确率。医疗场景更关注召回率,漏掉一个身份证号可能导致合规风险。建议按敏感类型分别统计实体级精确率、召回率和 F1,并维护混淆矩阵。对于规则和正则,定期用新数据回归测试;对于机器学习与深度学习模型,建立标注-训练-评估-上线-监控闭环,当数据分布漂移时触发再训练。最终,识别方法的选择应服务于分级分类目标:高敏感字段优先保证召回,低敏感字段可接受一定误报,以人工复核兜底。