1. 引言
城市轨道交通具有大规模、高速度的发展趋势[1]。同时,地铁交通网络具备行车间隔小、日常客运量大、系统连接性强等特征。作为大容量集约化的公共交通系统,系统中任一环节出现问题或者紧急故障都会对整个系统的正常运营造成一定程度影响。在地铁交通网络的运营模式下,行车故障带来最直接的影响是列车的运行时间延迟和旅客乘车时间增加,线路运行能力下降,甚至直接威胁到群众生命财产以及对经济社会生活带来严重危害性。当前,对于地铁行车调度应急预案的管理及决策多集中于纸质版以及电子档文件的历史案件记录[2],这类知识关联性低、应急项目多、信息化程度不足。对于突发应急事件,地铁工作人员只能依靠历史经验做出决策部署。因此,制定合理的应急措施是处理突发事件重要保障。本文根据传统地铁行车调度应急预案的弊端,设计了基于知识图谱的应急预案推荐系统。为地铁工作人员应急处置提供参考。
2. 地铁行车调度应急预案知识图谱的构建
2.1. 构建流程
地铁行车调度应急预案数据源为应急预案结构化数据与非结构化数据,传统知识图谱的构建对于知识抽取处理难度较大,本文引进基于Qwen2.5的关键实体抽取方法,微调大语言模型使其适应下游任务,在少量的例子学习新任务,快速适应应急预案领域的知识抽取任务[3]。首先对文本数据进行预处理,所得数据源通过微调后大语言模型进行实体识别与知识抽取,形成所需五元组关系。将所得五元组关系导入Py2neo模块。并用Neo4j进行存储及可视化展示(图1)。
Figure 1. Construction process of the knowledge graph for subway operation emergency response plans
图1. 地铁行车应急预案知识图谱构建流程
2.2. LoRa微调实验设计方案
利用LoRa微调对大语言模型Qwen2.5进行微调训练的核心在于对低秩适配器的设计以及构建高效的训练策略。LoRa微调训练的一般流程为:基础环境配置和工具准备、数据的准备和预处理、加载与LoRa微调适配的模型、模型的评估与部署。下文将详细讲述LoRa微调大语言模型的详细步骤。
2.2.1. 基础环境配置和工具准备
微调研究基础环境配置,如表1所示。
Table 1. Fine-tuning basic environment configuration
表1. 微调基础环境配置
操作系统 |
软件环境 |
PyTorch版本 |
CUDA版本 |
Win10 |
Python3.10 |
2.0 |
11.8 |
2.2.2. 数据的收集与预处理
数据集的选择为徐州地铁行车应急预案文本,本章节以徐州地铁行车应急预案《正线联锁失效处置应急预案》为例进行微调实验对象。通过EasyDataset将数据集PDF格式转化为可被系统支持的JSON格式。JSONG格式包含instruction (指令)、input (输入)、output (输出)。选择加载与LoRa微调适配的模型中,本文采用Qwen2.5大语言模型。数据集样式如下图2所示。
Figure 2. Partial dataset format
图2. 部分数据集样式
2.2.3. 模型的评估与部署
为更好的确定微调的参数,避免出现训练速度慢、过拟合、模型收敛稳定性差等问题,本实研究设计了多组对照实验,通过变化微调的学习率、批大小、训练轮数等参数,得出不同参数情况下对应急预案推理效果并以F1值对其推理效果进行评分(表2)。
Table 2. Comparison chart of fine-tuning effects under different parameters
表2. 不同参数下微调效果对比图
实验编号 |
低秩矩阵秩 |
学习率 |
训练轮数 |
批量大小 |
F1得分 |
1 |
4 |
5e−5 |
3 |
32 |
0.77 |
2 |
8 |
1e−5 |
3 |
32 |
0.84 |
3 |
16 |
1e−5 |
3 |
64 |
0.81 |
4 |
8 |
5e−5 |
3 |
16 |
0.76 |
5 |
4 |
1e−5 |
5 |
32 |
0.79 |
6 |
8 |
1e−4 |
2 |
64 |
0.72 |
7 |
16 |
1e−5 |
5 |
16 |
0.80 |
8 |
8 |
1e−5 |
3 |
16 |
0.82 |
通过实验得出,当低秩矩阵的秩为8,学习率为1e−5,训练轮数为3,批量大小为32时,微调大模型微调效果最好,F1值达到0.84,将以上参数确定为微调最佳参数组合。
2.2.4. 微调效果评估和对比分析
为了进一步验证微调大预言模型能否进一步提升应急预案文本的知识抽取能力(表3),本研究设计了补充实验,五元组抽取旨在文本中识别出“主体1{subject}、主体类型{subject_type}、关系{predicate}、客体2{object}、客体类型{object_type}。”构建结构化知识关系,对于应急预案复杂事件建模具有重要意义。考虑到不同大语言模型在理解理解能力、推理深度的不同,本实验选择Deepseek R1、Qwen2.5、llama3三种代表性模型作为实验评估对象。实验的设计对象分别为原始模型(为微调)和微调实验后模型,对同一批地铁行车应急预案的文本进行知识抽取工作,本研究采用人工标记的100组五元组关系作为标准答案,并以LoRa微调后的大语言模型的抽取结果进行对比验证。知识抽取的评估指标:准确率(Precision)、召回率(Recall)、F1值(F1 score)。
Table 3. Comparison table of knowledge extraction effects before and after fine-tuning
表3. 微调前后知识抽取效果对比表
模型 |
是否微调 |
准确率 |
召回率 |
F1 |
Deepseek R1 |
否 |
0.86 |
0.78 |
0.82 |
Deepseek R1 |
是 |
0.90 |
0.84 |
0.87 |
Qwen2.5 |
否 |
0.88 |
0.81 |
0.84 |
Qwen2.5 |
是 |
0.93 |
0.89 |
0.91 |
llama3 |
否 |
0.82 |
0.75 |
0.78 |
llama3 |
是 |
0.86 |
0.80 |
0.83 |
通过实验结果对比,可知进行微调前后,对比准确率、召回率以及F1值,可得大语言模型的知识抽取的正确率以及效率得到了提升。下一步可利用Qwen2.5大语言模型进行知识图谱的知识抽取工作。
2.2.5. 应急预案文本分块
应急预案文档中包含大量的文本信息,对文本直接进行知识抽取会导致效率低下,并且导致信息遗漏、分散等情况存在。为此,本文将引入Rag (检索增强生成)对地铁行车调度应急预案文本进行分块操作,将应急预案进行文本分块处理可实现将文本转化为可管理的单元或“块”[4]。可实现对后续的嵌入、索引以及检索效率提升。在应急预案本文中,应急预案文本中以结构化的形式展。使用语义分块可以实现保留上每个片段的意义,并且对于检索增强准确性的提升具有重要意义文本中,将机构和职责作为一个“块”进行分割,将应急领导机构、现场处置机构、应急指挥机构进行单独分块。将文本分成了九小块:(1) 引用文件;(2) 核心定义;(3) 应急领导机构;(4) 应急指挥机构;(5) 现场处置机构;(6) 专业抢救队;(7) 处置原则;(8) 响应分级;(9) 处置流程(核心部分)。图3为rag切分的部分“块”。
Figure 3. Partial text chunks split by RAG
图3. RAG切分出部分文本块
2.2.6. 基于大语言模型的知识抽取
Figure 4. Knowledge extraction results of the “Emergency Plan for Handling Main Line Interlocking Failure”
图4. 《正线联锁失效处置应急预案》知识抽取部分结果
在前述数据预处理和文本分块的基础上,本节采用Qwen2.5大语言模型对地铁行车调度应急预案文本进行实体识别与关系抽取。实体识别(Entity Recognition)的核心在于从原始文本中准确标定出预定义实体的边界,并判定其对应的实体类型。实体识别任务通常包括两个主要步骤:一是实体边界识别,确定文本中属于实体的起止位置;二是实体类别分类,对识别出的实体赋予具体类别标签。针对本研究场景,结合地铁行车调度应急预案文本特点,设置了机构(Organization)、角色(Role)、事件(Event)、设备(Equipment)、地点(Location)等实体类别。图4为Qwen2.5大语言模型对《正线联锁失效处置应急预案》知识抽取部分结果。
2.3. 知识存储
领域知识图谱的构建目标是为实现一个可以进行知识检索的知识库,可为用户提供自动问答、信息检索等应用支撑。所以如何让实现知识的持久化存储以及对目标知识的高效率检索是检验知识图谱是否满足用户要求的重要条件[5]。经过前文的数据收集与预处理、大语言模型微调、知识抽取等步骤之后,将所得五元组关系导入Py2neo模块,并将所得结果进行批量导出。本研究构建了应急预案领域的知识图谱,包含3045个实体节点,1746对三元组,包含3种实体类别,279种关系类型。将其存储在Neo4j中进行展示,图5为知识图谱展示图。
Figure 5. Knowledge graph of subway operation emergency plans
图5. 地铁行车应急预案知识图谱
3. 基于知识图谱的地铁行车调度应急预案推荐系统
地铁行车调度应急预案推荐系统适用于地铁工作人员输入问题进行分析并给出推荐结果。推荐系统在得到用户输入问题时,首先先对用户的自然语言问句进行分析,推荐系统对用户自然语言问句中的实体部分通过实体识别模型进行识别,获取关键实体[6]。通过前期工作得到的微调大语言模型对用户的意图进行识别,将用户的问句转化为问句意图,将识别出来的信息和实体关系导入知识查询cypher语句,从应急预案知识图谱中查询用用户所需知识,通过匹配相应的文本块和文本信息,进行答案输出。构建地铁行车调度应急预案的推荐系统可分为以下四个步骤:(1) 文本预处理;(2) 用户问句意图识别;(3) Cypher语句查询;(4) 输出用户问题答案。图6是地铁行车调度应急预案推荐系统设计流程图。
Figure 6. Design flowchart of subway operation dispatch emergency plan recommendation system
图6. 地铁行车调度应急预案推荐系统设计流程图
3.1. 数据集的构建
本文的数据来源徐州地铁行车应急预案文本,为构建地铁行车应急预案的意图分类专属数据集,首先需对所取得的数据进行预处理。目前,地铁行车应急预案还未有开源问句集合,本文根据现场实地调研以及《中国城市轨道交通运营发展报告:2021~2022》——应急管理篇进行结合。对所得应急预案处理数据进行意图分类,将应急预案文本分为8个意图类别,分别为预案框架说明类、风险评估类、应急组织架构类、响应机制类、信息管理类、应急处理操作类、权责界定类、保障支持类。具体分类结果如表4所示。
Table 4. Dataset annotation for subway operation emergency plans
表4. 地铁行车应急预案数据集标注
意图类别 |
标签 |
问句 |
预案框架说明类 |
0 |
信号正线联锁失效应急预案制定的目的? |
风险评估类 |
1 |
Ⅰ级重大信号故障带来的影响? |
应急组织架构类 |
2 |
应急领导小组的人员构成? |
响应机制类 |
3 |
信号正线联锁失效的启动条件? |
信息管理类 |
4 |
应急预案的信息报告流程? |
应急处理操作类 |
5 |
运维中心在信号正线联锁失效处置措施? |
权责界定类 |
6 |
地铁机电故障的事故负责人? |
保障支持类 |
7 |
应急情况处理后的后续处置? |
3.2. 意图识别模型
本文的意图识别任务是基于BERT-TextCNN模型,BERT-TextCNN模型分为BERT层与TextCNN层。BERT层的作用在于双向Transformer架构,对输入文本进行编码,生成上下文相关的词向量表示。TextCNN层的作用在于通过卷积层提取局部特征,能够捕捉文本中的关键词。两者相互结合最终实现文本分类[7]。
3.2.1. BERT层
意图识别任务中,BERT编码层的作用在于经过处理的用户自然语言问句输入到BERT模型中(图7)。BERT作为模型的第一层特征提取器,通过对输入信息进行编码,通过使用BERT内置的WordPiece分词算法实现文本向量化。将问句转化为嵌入向量表示。
Figure 7. The vector representation of BERT text
图7. BERT文本向量化表示
3.2.2. TextCNN层
TextCNN模型实现意图分类的步骤简述为通过卷积操作对文本得局部特征进行提取操作,通过最大池化处理对词向量信息得特征进行捕捉,最后结合全连接层完成意图分类工作。TextCNN模型在得到BERT转化的词向量时,将其作为TextCNN模型的输入向量。应用于地铁行车应急预案推荐系统。TextCNN模型大致分为五个部分:(1) 输入层;(2) 卷积层;(3) 池化层;(4) 全连接层;(5) softmax函数。
3.3. 实验环境及参数设置
为了进一步验证BERT-TextCNN模型在地铁行车应急预案文本分类的性能。本小节增设对比实验进行分析,采用相同的标注问句数据集,实验对象为目前主流的文本分类模型:BERT模型、TextCNN模型、BERT-TextCNN模型。本文的实验环境与第二章相同,均在Win10环境基础下进行。实验的具体参数设置如下(表5)。
Table 5. Experimental parameter settings
表5. 实验参数设置
超参数 |
参数设置值 |
学习率 |
2e−5 |
批次 |
32 |
训练轮数 |
4 |
卷积层数 |
3 (窗口大小2/3/4) |
3.4. 实验结果与分析
实验指标采用准确率(Precision)、召回率(Recall)、F1值(F1 score)。实验对象为主流的意图分类模型:BERT模型、TextCNN模型以及BERT-TextCNN模型。实验对比结果如表6所示:
(1)
(2)
(3)
Table 6. Experimental results comparison
表6. 实验结果对比
模型 |
P (Precision) |
R (Recall) |
F1-score |
BERT模型 |
0.86 |
0.83 |
0.84 |
TextCNN模型 |
0.82 |
0.79 |
0.80 |
BERT-TextCNN模型 |
0.89 |
0.86 |
0.87 |
实验结果如表6所示,实验对象为以标注好的地铁行车应急预案数据集。为了更加直观的展示应急预案问题识别结果,将实验结果以条形图的形式展示如图6所示。通过对比实验结果可以得出:从表6实验对比结果可知,意图识别模型BERT模型、TextCNN模型、BERT-TextCNN模型,本文模型在文本识别准确率及召回率均高于其余两个模型。其中应急预案文本问句识别的任务中的F1值分别为0.84、0.80、0.87,本文的模型相较于上述两个模型对于文本的问句识别效果最好,可以精准的实现用户意图分类任务。为后文应急预案推荐系统的构建提供支撑。
3.5. 用户问句答案与查询
Table 7. Cypher query statement for starting conditions of main line interlocking failure in signaling system
表7. 信号正线联锁失效启动条件Cypher查询语句
MATCH (p:EmergencyPlan) |
WHERE p.name = '信号正线联锁设备故障专项应急预案' AND p.triggerConditions CONTAINS '影响到正线行车' AND p.triggerConditions CONTAINS '信号正线联锁设备故障' |
RETURN p.name AS PlanName, p.triggerConditions AS StartCondition |
Table 8. Cypher query statement for partial intention categories
表8. 部分意图类别Cypher查询语句
意图类别 |
查询语句 |
预案框架说明类 |
MATCH (s:DocumentSection) WHERE s.type = "预案框架说明类" AND s.title IN ["编制目的", "适用范围", "编制依据"] RETURN s.title AS 标题, s.content AS 内容. |
风险评估类 |
MATCH (r:RiskAnalysis) WHERE r.category = "风险评估类" RETURN r.id AS 序号, r.accidentType AS 事故类型, r.impactScope AS 影响范围, r.riskLevel AS 风险等级, r.description AS 影响描述; |
应急组织架构类 |
MATCH (o:Organization) WHERE o.type = "应急组织架构类" RETURN o.groupName AS 组织名称, o.members AS 成员, o.responsibilities AS 主要职责; |
3.3小节构建的意图识别模型,对地铁工作人员输入的自然语句进行意图识别。例用户的问句:“信号正线联锁失效的启动条件?”通过意图识别模型,识别用户相关问句的实体信息“信号正线联锁”和意图信息“应急事件——启动条件”,对用户的问题进行准确分类,最后可得到应急预案的意图类别“响应机制类”。将用户语句转化为Cypher语句如表7所示,在构建好的图数据库中进行查找匹配相应的五元组信息,最终返还用户相应应急信息[8],表8为部分意图识别类别的相关查询语句。
3.6. 应急预案推荐系统可视化
在构建了地铁行车调度应急预案的结构化知识图谱基础上,推荐系统可视化模块承担着人机交互层的核心职责。该系统面向实际调度与值守场景,设计了基于Streamlit框架的图谱可视化界面,集成了自然语言意图识别、知识查询与图谱结果呈现三大子功能模块,实现了从“问题输入”到“知识获取”的一体化可视推荐流程。
可视化模块基于pyvis构建交互图谱视图,并嵌入于Streamlit界面中。系统允许用户点击任意节点展开其元信息,包括实体定义、职责描述、以及映射至预案原文条款的编号位置。图谱区域支持放缩浏览与结构层级控制,用户可以按需聚焦特定区域并追踪任意实体上下游的响应链条,进一步辅助对职责归属和组织协同关系的理解。此外,为增强系统的适用性与可扩展性,可视化界面设计中引入了历史查询记录功能,用户在连续应急场景中可快速回溯过往问题与路径结构;同时设有预定义查询模板,供初次使用者选择常见应急情境快速测试,降低使用门槛。典型查询结果如图8展示。
Figure 8. Query schematic diagram: responsibility path response map for main line interlocking failure
图8. 查询示意图:正线联锁失效的职责路径响应图谱
该可视化系统通过语义驱动的路径提取与结构化知识还原,在保障调度效率与响应准确性的同时,增强了知识图谱在实际工作场景下的认知支持能力,为城市轨道交通调度系统的人机协同提供了直观、可信的交互界面支撑。
为降低使用门槛与提升交互引导性,推荐系统实现了“输入–确认–查询–反馈”四段式交互逻辑。用户在主界面通过自然语言输入问题后,系统自动完成关键词抽取与任务匹配,并提供意图确认提示(如弹窗列出“可能属于响应机制类/职责界定类”供用户选择)。一旦意图确认完毕,即触发实体填充与Cypher构造流程,系统后端执行图数据库查询,并在图谱区域呈现结果。
用户可对图谱结果进行如下操作:
(1) 点击任意节点查看其详细信息:包括职责描述、组织所属、原文出处;
(2) 鼠标悬浮边上可显示语义标签与信息置信度(如触发强度为0.89);
(3) 使用关键词搜索栏按名称或类型筛选实体,支持模糊匹配与路径重构;
(4) 拖拽操作可聚焦局部子图区域并高亮所有上游/下游路径;
(5) 预定义查询模板如“道岔故障→响应方案”“供电异常→人员调配”供新用户快速测试系统;
系统在图谱区域下方同步生成结构化文本摘要,输出路径节点顺序与关系链,例如:路径说明:事件“联锁失效”触发OCC的“响应职责”,其任务包括启动广播提醒、协调站台人员与同步调度系统,具体路径为:联锁失效→触发→OCC职责→执行→应急调度广播任务。
4. 结论
为更好提升应急预案知识利用率以及提升地铁行车调度应急处置效率,本文设计基于知识图谱的地铁行车调度应急预案推荐系统。以徐州地铁应急预案文本为数据源,对文本的数据进行预处理、基于大语言模型知识抽取,实现五元关系的构建。采用Neo4j图数据库进行应急知识数据化存储和高效查询。意图识别模块中引入意图分类模型BERT-TextCNN模型,对用户的自然语言问句进行准确理解和实体识别,转化为相应的Cypher语句,并于数据库中查询所需应急预案相关信息。最后在基于知识图谱的基础之上设计了基于Streamlit框架的图谱可视化界面,给用户呈现直观的应急预案推荐信息。