关于敏感信息检测技术的理论知识
在之前的文章中,探索了不同的检测敏感信息的方法,并通过Demo进行了学习,对算法、模型等一些概念有一些初步认知,这片文章想更加完整的学习涉及的概念,以及知识框架。
信息识别
“敏感信息检测”本质上是一种信息识别技术,信息识别技术的技术演进路线:
规则 → 传统 ML → 深度学习(BERT/NER) → 语义分析(Embedding) → 推理式判断(LLM)
基于规则(pattern-based)
- 正则表达式
- 固定长度/固定格式
- 词典/黑名单
优点:精准、快、成本低
缺点:只能识别格式固定的信息;对语义类几乎无效
比如:身份证、手机号、邮箱、多数证件号都能靠规则锁死。
基于传统机器学习(Classical ML-based)
传统机器学习是:靠人工特征 + 统计模型判断,不理解深层语义。需要人先总结规律经验后、喂给模型,模型依靠统计和概率输出答案。----基本上被深度学习(进化后的传统机器学习)替代。
“如果连续两个字都在姓名词典里 → 很像人名”
“如果是 11 位数字 → 更像手机号”
基于深度学习(DL-based,BERT/NER)
让机器自己阅读大量文本,自主学会语言规律(语义、结构、上下文)。不像传统 ML,需要人工设计特征,深度学习会自己从海量数据中“自动学习特征”。
BiLSTM-CR模型F(经典 NER)
流程:字符序列 → embedding → BiLSTM → CRF → 标签序列
优点:效果强于传统 ML
缺点:
- 上下文理解有限
- 对长文本吃力
Transformer / BERT NER(工业标准)
这是今天用得最多的敏感信息识别模型。
流程:Input → Tokenizer → BERT Encoder → Token Classification Head → 输出 BIO 标签
BERT 能理解语义上下文,例如:
“手机号:一共 11 位数字,是联系人的号码”
→ BERT 可以理解“手机号”的含义不仅来自数字结构,还来自周围语义。
工程可用的模型:
- bert-base-chinese
- HFL-roberta-wwm-ext
- macbert
- neZha
- DeBERTa-v3-base
- HuggingFace 现成的 token-classification pipeline
框架:
- PyTorch(主流)
- TensorFlow
- HuggingFace Transformers(最推荐)
基于语义(Embedding/LLM-based)
Embedding向量语义识别
核心思想:把文本转换成向量 → 在向量空间里相似就表示语义相似。
比如“联系方式”和“手机号”向量距离很近而“发票号”则距离远。
技术包括:
- Sentence-BERT
- SimCSE
- LLM Embedding(OpenAI embedding)
- RAG(检索增强理解)
常用向量模型:
- OpenAI text-embedding-3-large
- bge-large-zh(国产最强)
- SimCSE
- SBERT
- GTE-large (Alibaba Qwen Embeddings)
LLM 大模型推理
利用大模型的“理解、推理、上下文能力”直接判断,不用训练拿来就能用。
常见模型:
- Qwen2.5-72B
- GPT-4o/4.1
- Llama-3-70B
- DeepSeek-R1(推理强)
- Claude
4类技术能覆盖的敏感信息范围(工程视角)
| 敏感数据类型 | 规则 | ML | 深度学习 NER | Embedding | LLM |
|---|---|---|---|---|---|
| 身份证号 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 手机号 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 银行卡号 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 姓名 | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
| 地址 | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
| 公司、组织名 | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
| 设备号/UID | ❌ | ❌ | ✔️ | ✔️ | ✔️(很强) |
| 行为轨迹 | ❌ | ❌ | ✔️ | ✔️ | ✔️(强) |
| 上下文敏感识别 | ❌ | ❌ | 一般 | 强 | 非常强 |
知识地图
A. 信息的“特征方式”
├── 规则特征(pattern)
├── 统计特征(ML)
├── 语义特征(Embedding)
└── 生成式理解(LLM)
B. 模型与算法基础
├── Transformer(结构)
├── Embedding(向量空间)
├── NER/分类(下游任务)
└── 向量检索(ANN)
C. 工具/框架
├── PyTorch(深度学习实现框架)
├── Hugging Face(模型生态)
├── vector DB(Milvus/FAISS)
└── 各类 Embedding 模型/LLM
D. 解决方案与工程化
├── 混合检测(规则 + Embedding + NER)
├── 召回-排序-验证流水线
├── 模型评估
└── 部署与合规
NLP
1. Tokenization(文本切词)
把文本切成词/子词(token)。英文按空格切;中文要用分词工具。现代 LLM 用 BPE(Byte Pair Encoding) 子词分解。
⚠ 重要:
所有 embedding、BERT、LLM 的输入都是 token,而不是句子。
2. 传统词向量(Word Embedding)
早期 NLP 只能做到:
- Word2Vec(CBOW / Skip-gram)
- GloVe
它们的特点:
- 每个词 ≈ 一个固定向量
- 不同上下文中的“苹果”向量都是一样的
(不能区分苹果=水果 vs 苹果=手机)
👉 局限明显,因此被 BERT 时代取代。
3、传统特征工程
如:
- TF-IDF
- One-hot
- 正则表达式
这些对敏感信息检测仍然有用(特别是规则层)。
深度学习 NLP 层(BERT 时代 / 中间层)
1、Transformer(核心基础架构)
所有现代 NLP 模型底层都是 Transformer。它的关键组件:
- Self Attention(自注意力)
- Multi-head Attention
- Feed Forward Network
让模型能捕获长距离语义(如身份证号前后词的关系)。
2、BERT(Bidirectional Encoder Representations)
BERT = transformer encoder 的预训练语言模型,解决:“传统词向量不能理解上下文语义”的问题。
特点:
- 双向理解上下文
- token embedding 是动态语义向量
- 句子 → 一组 contextual embeddings
BERT 的常见任务:
- 分类
- NER(命名实体识别),用于深度学习
- 相似度判断(很经典的模型:Sentence-BERT),用于语义分析
- 文本匹配
你可以把 BERT 理解为:“现代 NLP 的基础语义引擎”——很重要的模型。
3、NER(命名实体识别)
NER 是一个具体任务类型:“识别文本中的实体类型(人名、地址、手机号、身份证号)”
NER 模型常见结构:
- BiLSTM-CRF(旧时代)
- BERT-CRF(现代主流)
- Prompt + 大模型(最新趋势)
NER输出结构:
北京 是 LOC
小米 是 ORG
135****1234 是 PHONE
NER 就是结构化抽取敏感信息的一种方式。
LLM 层(高级语义层)
LLM(大模型)扩展了 BERT 时代的能力,具备:
- 生成能力(GPT)
- 更强的理解能力
- 工具调用能力(Agent)
- 大规模知识学习
1、Embedding(语义向量)
LLM embedding = “句级语义向量”,每句话被映射为 768~4096 维的向量。
例子:
“身份证号码是什么”
→ [0.12, 0.34, -0.21, ... ]
“ID card number”
→ [0.11, 0.33, -0.19, ... ]
向量越接近 → 语义越相近。
Embedding 的关键特点:
- 不依赖词表,每句话都可以编码
- 对语义相似的句子非常敏感
- 可用于语义搜索/敏感信息识别/问答匹配
常见 embedding 模型:
- BERT / SBERT
- text-embedding-3-large
- bge-large-zh
- Qwen2-embedding
- GTE-large
2、向量匹配(相似度计算)
常用相似度算法:
- Cosine similarity(最常用)
- Dot product
- L2 距离
例如:
用户数据字段名 “user_id_no” 和“身份证号” 向量相似度:
0.88 → 很可能是身份证号字段
0.42 → 值得怀疑
0.10 → 无关
这是 embedding 在敏感信息检测中的核心用途。
深度学习中的BERT VS Emdeding中的BERT
深度学习里的 BERT(BERT = 深度语义理解模型)——用BERT做任务;
语义识别(embedding)中的 BERT(BERT = 编码器),——用BERT的输出做向量匹配。
不是模型不同,是使用方式不同。
| 对比点 | 深度学习里的 BERT | embedding里的 BERT |
|---|---|---|
| 用途 | 开发具体任务(NER、分类) | 生成语义向量 |
| 是否需要训练 | 需要训练(fine-tune) | 不需要训练(可直接使用) |
| 输入 | 句子/词 | 句子/词 |
| 输出 | 分类结果、标注、概率 | 语义向量(768~4096维) |
| 常见框架 | BERT-base/large,RoBERTa | SBERT、bge、GTE |
| 典型应用 | NER、分类、文本匹配 | 语义检索、RAG、向量搜索 |
| 优点 | 任务精度高,可调 | 零样本匹配强,无需训练 |
| 缺点 | 需要标注和训练 | 相似度有时不如fine-tune得好 |
本文来自博客园,作者:Momoko-X,转载请注明原文链接:https://www.cnblogs.com/ffx1/p/19327727

浙公网安备 33010602011771号