⚠️ 痛点分析: 正则表达式(Regex)在处理“10kV邦龙线112厂支线5号杆FZ0050”这类包含大量干扰信息(跳闸原因、电流值、操作描述)的数据时,极易因格式微调而失效,维护成本极高。
一、 总体技术架构
我们采用“特征提取 + 语义搜索 + 拓扑验证”的三层过滤机制:
- 特征解构层: 利用 NLP 模型从句子中提取线路、杆号、开关 ID 等核心实体。
- 向量检索层: 将提取的特征与拓扑数据库中的标准节点进行模糊语义匹配。
- 拓扑约束层: 利用单线图的层级关系(站-线-变-杆)排除逻辑错误的候选节点。
二、 核心实施步骤
Step 1. 实体识别 (Named Entity Recognition)
不再通过字符串截取,而是识别句中的电力实体。例如:
"10kV边新线大文支线13号杆FZ0130开关手动开闸"
- 线路 边新线
- 支线 大文支线
- 杆号 13号杆
- 设备ID FZ0130
- 动作描述 手动开闸 (丢弃)
Step 2. 向量化匹配 (Vector Similarity)
将拓扑图中的标准节点名(如 112厂支线#05杆FZ0050)转化为高维向量。通过计算余弦相似度,解决录入时遗漏“#”号、空格、或错别字的问题。
推荐工具: Sentence-Transformers, Faiss (向量数据库)
Step 3. 拓扑逻辑过滤 (Topology Filter)
这是保证准确率的“杀手锏”。
- 如果向量匹配返回了多个
FZ0050 开关,检查哪个开关所在的线路属于 邦龙线。
- 逻辑:
ID匹配 > 线路匹配 > 语义相似度。
三、 典型案例映射表
| 手工录入内容 (不规范) |
提取关键特征 |
拓扑节点 ID (标准) |
匹配置信度 |
| 131号杆1310开关跳闸重合闸不成功 |
131杆, 1310开关 |
NODE_131_1310_SW |
0.98 (高) |
| 112厂支线5号杆FZ0050...雷击...100A |
112厂支线, FZ0050 |
NODE_BL_BR_0050 |
0.92 (高) |
| 边栗线广场支线6号杆FZ0060手动开闸 |
边栗线, FZ0060 |
NODE_BL_GC_0060 |
0.95 (高) |
四、 给开发同学的建议
- 不要写长正则: 优先使用 LLM (如 DeepSeek, GPT-4) 进行数据结构化尝试。
- 建立动态词表: 记录“开关=断路器=空气开关”、“支线=T接线”等行业同义词。
- 人工兜底: 对于相似度低于 0.7 的匹配结果,在 UI 界面上高亮提示,由人工点击确认,并记录操作作为算法迭代的训练样本。