李星宇 刘志勤 王庆凤 孟思齐
我国灾害种类多、分布地域广、发生频率高,容易造成严重的经济损失和人员伤亡。近年来,自然灾害、事故灾难、公共卫生等突发事件频发态势加剧,如2015年天津危化品爆炸、2020年新冠肺炎疫情、2021年青海玛多7.4级地震等,对各级政府、企事业单位应急处置能力提出了严峻考验。
2009年,国务院应急管理办公室印发《突发事件应急演练指南》[1],指出“应急演练的目的是检验预案、完善准备、锻炼队伍、磨合机制、科普宣教”。鉴于应急演练的重要性和必要性,桌面演练得到了越来越多的运用与重视,作为桌面演练的计算机支持部分——应急桌面演练系统,应用范围也越发广泛。例如,在政务方面,国家级和省级政府应急管理培训基地已普遍开展静态桌面演练等培训[2];在民航方面,朱新平[3]等根据机场应急设计了基于虚拟现实的机场消防救援虚拟演练平台;在铁路方面,陈志洲[4]等将车辆、工务、电务等纳入仿真培训实作流程中,设计了高速铁路应急联合演练仿真培训系统;在地震方面,侯跃伟[5]等结合现代都市和地震特点,设计了城市地震应急综合演练系统。
桌面演练的特点是“纸上谈兵”,通过演练系统“沙盘”,考查应急指挥人员面对突发事件时的决策处置能力。演练过程中,参演人员提出措施与标准措施之间的相似度越高,代表职能职责掌握情况越好,应急处置能力越强。目前,应急桌面演练系统已经有很多设计方案,但充分使用自然语言处理工具,验证参演人员决策的正确性及效率结果的系统较少,难以实现简单、科学的态势推演[6]。基于此,本文提出一种基于自然语言处理的应急桌面演练系统设计,在有向无环图演练方案基础上,采取“情景-问题-回答”模式,以关键词、关键句匹配为重点,使用Jaccard系数、Doc2Vec深度学习模型等方法,计算参演人员提出措施和标准措施的文本相似度,为过程评估和分支推理提供依据,着力提高演练真实性和人员参与度。
系统整体设计方案如图1所示,主要包括信息处理模块、方案设计模块、管理调度模块、演练评估模块4个部分。
图1 应急桌面演练系统整体设计方案
其中,信息处理模块负责存储突发事件信息,并对事件信息进行结构化处理、关联性分析等操作;方案设计模块负责根据演练需求和应急预案,设计包含演练主题、人员分工、演练流程等内容的应急桌面演练方案;管理调度模块负责与参演人员开展信息交互,并结合参演人员评估情况,对事件走向和演练进程进行管理和调度;演练评估模块负责对参演人员的表现情况进行评估,得到参演人员提出措施和标准措施的相似度。
突发事件具备两个基础属性,分别为事情发生情况和事件处理情况。其中,事件发生情况是指突发事件从发生到结束这一过程衍变情况,包括事件类型(地震、火灾、暴雨等)、发生条件(汛期、停电、地壳运动等)、次生灾害(暴雨引发滑坡、停电引发火灾等)等信息;事件处理情况是指相关部门对事件采取的应急措施及对应结果,包括涉及部门(公安、交通、消防等)、处理措施(针对疫情关闭娱乐场所、针对停电开展设备抢修等)、处理结果(花费时间、人力成本等)等信息。
依据现有案例,对突发事件衍变流程进行梳理,是一项重要基础工作,能为突发事件关联分析和桌面演练方案设计提供参考和依据。应急处置相关部门通常会对突发事件处置情况进行归纳总结并形成应急处理报告,例如扬州市环境监察支队《扬州润扬长江大桥北引桥交通事故丁酮泄漏事故处置终报》[7],包含发生时间(2018年3月19日)、地点(扬州润扬长江大桥北引桥)、发生事件(水质污染)、参与部门(公安、消防、环保及地方政府)、处置措施(筑坝拦截污染)等信息。又如,国务院灾害调查组2022年1月对外发布的《河南郑州“7·20”特大暴雨灾害调查报告》,包含灾害情况及主要特点、灾害应对处置、主要教训、改进措施建议等。
但是,由于各地、各部门单位的应急处置报告,在内容上、形式上、结构上复杂多样,缺乏统一标准,对事件关联性分析和风险熵分析造成较大的困难。为此,本文采取构建事件链、完善节点信息的方式,实现对事件信息的结构化处理。
2.2.1 构建事件链
一个突发事件,可将整体流程视为“1+N+1”的事件链。其中,开头节点“1”代表源头事件,即导致整个事件的起始事件,通常能反映整个事件主题;“N”代表事件链中1个或多个的过程事件;最后节点“1”代表结束事件,即整个突发事件应急处置完毕。
事件链中每个突发事件视作一个节点,事件节点之间、事件节点和处置措施之间相互连接,形成一个有向流程图。如图2所示,一个简化后的模拟事件链——D市春运期间火车站暴恐分子伤人事件链,起始节点为“出现暴恐分子”,过程节点为“群众恐慌”、“人员受伤”,结束节点为“歹徒被制服”。
图2 D市春运期间火车站暴恐分子伤人事件链
2.2.2 完善节点信息
为满足事件链设计需求,使用Python语言分别设计突发事件类(Incident)及处置措施类(Treatment)。其中,突发事件类(Incident)包含事件名称、状态标志、事件种类等基础属性,并设置2个指针,分别指向前置条件事件、后置次生事件,即指向当前事件在整个流程中,发生所需的前置必要条件,以及后续引发的二次灾害事件;处置措施类(Treatment)代表事件处理情况,指针incident_current指向当前处理的突发事件,并包含采取措施、措施结果、部门单位等基础信息。
(1)Class Incident: //突发事件类
self.incident_name; //事件名称,例如“2021年青海玛多7.4级地震”。
self.incident_flag; //状态标志,包含起始start、过程process、结束end 3种状态。
self.incident_type; //事件种类,包含地震、暴风、强降雨等种类。
self.incident_info=[ ]; //灾情描述,包含发生时间、发生地点等基本属性。
self.node_list=[front_node,next_node];//节点指针,分别指向前置条件事件、后置次生事件。
(2)Class Treatment: //处置措施类
self.incident_current; //当前处理的突发事件,例如当前措施针对“危化企业毒气泄露”。
self.measures[ ]; //采取措施集合,例如“人员转移、物资输送、交通管制”等。
self.measures_result[ ]; //处置结果集合,即每项措施对应的好或坏结果。
self.related_department[ ]; //涉及部门单位。
通过构建事件链、完善节点信息等操作,得到处置案例中的事件链,就可以根据事件链组成情况、节点信息等,从事故类型、引发原因、工作举措等方面进行分析,如图3所示,得到某类事件的推测链。
图3 根据案例事件链构建某类事件的推测链
事件推测链为应急演练方案设计提供了良好支撑:一是建立各类突发事件的相互关联,得出研究事件演化规律。如地震后易发生余震、滑坡、电力通讯中断等后续事件,城市地区易发生交通事故、市政施工事故、居民社区火灾等事件;二是便于预测事件的后续事件种类和风险熵。通过研究同一源头事件、不同处理措施导致的不同事件链,以及同一事件、不同处理措施导致的不同处理结果和二次事件,分析某项应急措施的重要性,预测某一事件的后续事件种类及风险熵。例如A地区遇到300ml暴雨时存在90%可能性发生山体滑坡事件,但提前做好泄洪准备后风险降低至30%。
制定桌面演练方案,首先要明确演练主题,即演练是针对地震、海啸,还是火灾等主题。确定演练主题后再进一步完善发生时间、发生地点、灾害级别等细节内容。例如,相同的发生场景——森林,夏季易发生洪涝灾害,秋季易出现森林火灾;相似的事件——生活必需品市场稳定突发事件,地震、泥石流等局部性地质类灾害,要重点做好方便食品、瓶装饮用水、防寒衣被等市场供应,群体性疾病、动物疫情等易扩散公共卫生事件,要重点做好卫生清洁用品、防护用品等市场供应。
确定演练主题后,需结合应急演练预案,确定参演部门、部门分组、职责分工等。以《D市应对大面积停电事件应急演练方案》为例,参与部门包含发改委、经信局、公安局等15个部门单位;分组包括电力恢复组、社会稳定组、综合保障组等5个小组。
同时,由于参与部门的职责有所不同,设计人员分工时需要结合应急预案、部门职责等,制定某类突发事件的标准措施。例如,水库出现险情时,水库管理单位应“立即在第一时间通知下游影响范围内的单位和群众,并迅速处置险情,同时向上级主管部门和同级防汛抗旱指挥部报告出险部位、险情种类、抢护方案、处置情况等,以便有关部门进一步采取相应措施”。
受地理环境、时间节点、灾害强度等因素影响,同一种类的突发事件,以不同方式进行应急处置,后续事件流程和灾害情况将有所不同。例如,上述的水库出现险情事件,若舆论引导不及时,容易造成哄抢防汛物资行为;若群众转移不及时,容易出现人员失踪、伤亡,乃至后续防疫等事件。
为模拟更加真实的场景,在结合事件推测链基础上,采取有向无环图方式构建演练方案,图中部分关键节点有多个后续节点,演练进行到该节点时,可通过评估参演人员表现情况,决定后续事件走向,从而实现分支推理。如图4汛期强降雨演练事件流程所示,汛期暴雨作为起点事件,演练流程允许多条路线、多个结束状态。
图4 汛期强降雨演练事件流程
管理调度模块负责与参演人员开展信息交互,并结合参演人员表现情况,对事件走向和演练进程进行管理和调度。桌面演练中,采取“情景问答”模式,通过音频、图像、文字、投影等多种方式,向参演人员传达当前模拟突发事件的各项信息,参演人员需结合职能职责,针对情景下的突发事件,及时提出应急处理举措。系统根据评估结果以及演练方案,生成当前节点事件下一步可能发生的事件种类、事件发生熵及事件相关信息。后台管理人员再结合系统推演情况,调度事件流程并推送参演人员。“演练→评估→推送→再演练”过程将一直循环,直至演练结束。
文本相似度计算一直是自然语言处理(NLP)领域的热点,在文本分类、搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有着广泛应用。
目前,关于文本相似度计算方法主要有4类,分别是基于字符串、统计、知识库和深度学习[8]。
基于字符串,是直接对文本A和文本B进行比对,包括编辑距离LD、最长公共子序列LCS、N-Gram模型和Jaccard系数等。以Jaccard系数为例,计算文本A、B相交部分在A、B相并部分中的占比,得到文本A、B的Jaccard系数。
基于统计,是将文本转换成为空间向量, 通过计算向量间距离,得到文本间的相似度。包括向量空间模型VSM、主题模型Topic Model等。以TF-IDF算法(常用于百度、google等搜索引擎进行网页检索)为例,通过大量文本统计,为每个词汇赋予一定权重(权重为词频TF和逆文本频率IDF的乘积),作为相似度评估依据。
基于知识库,是运用语义结构和知识库,对文本之间的概念信息和层次关系进行相似度计算。例如,通过构建语义框架,将文本分解为主语、谓语、宾语等,再按词性将词语分为时间、地点、人物、动作等,对比各个位置得到相似度。
基于深度学习,是使用深度学习模型,通过无监督学习或监督学习,将文本输入模型后得到向量A与B,计算向量A与向量B相似度,得到语义文本相似度。常用的深度学习模型有Word2Vec、FastText、GPT、BERT 等。
参演人员提出措施RM(Reply_Measures)和标准措施SM(Standard_Measures)的文本相似度,能够充分反映职能职责掌握情况和突发事件应急处置能力。由于RM多表现为中小型文本,且在语言表述上方式多样,统计方法和知识库方法难以适用。为满足演练需求,采用“关键字+关键句”的匹配方式和“字符匹配+深度学习模型”的计算方法,以满足以下几点要求:降低语序、歧义、错别字、近义词等因素对相似度判定造成的影响;SM中的关键部分(关键举措),能在RM中找到并高亮,便于直观反映参演人员处置要点;相似度评估具有可重复性,演练结果可用于后续其他演练。
5.3.1 文本预处理
评估相似度前,对RM进行文本预处理,包括:剔除无用词,将RM中“了、啊、哈”等不具备实际意义的词汇剔除;更正错别词,将文本中常见的错误词语进行检测和自动更正,例如“沙袋等防汛屋子”→“沙袋等防汛物资” ;替换近义词,将文本中非标准词语替换为标准说法,例如“疫苗打针”→“疫苗接种”;文本切句,以“!。;;”等符号作为切割标志,将RM切割为句子集合RM_SL(Sentence_List) ;文本分词,使用jieba工具,将RM切割为词语集合RM_WL(Word_list)。
5.3.2 关键词匹配
关键词是指处理措施、参与部门等方面,能精准反映应急措施正确做法的核心词汇。例如,疫情防控事件中的“人员隔离”、“疫苗接种”,抗震救灾中的“应急救援物资”、“受伤人员转移”等。
设计突发事件时,每个事件节点的标准措施均对应一个关键词集合CWL(Core_Word_List)。关键词集合CWL由m项词语组成,演练过程中CWL中的关键词在RM_WL中出现n项,n项占m项的比例视为关键词评估得分——Sim_Word。
为精准检索关键词出现情况,采取滑窗匹配的方式。如图5所示,将关键词集合CWL中的关键词,按照1个词语组成的关键词(如“健康通”、“值班”)和多个词语组成的关键词(如“统计群众灾情”、“加强天气预报监测”),在RM_WL中进行逐项匹配。每出现一项,则标记词语位置并高亮,若首次出现则计数器n加一。此项过程一直循环,直至滑窗扫描结束,最终得到出现在RM中的关键词集合CWL_Exist和没有出现的关键词集合CWL_NotExist,便于过程评估和后续查漏补缺。
图5 关键词滑窗匹配
5.3.3 关键句匹配
关键句是设计事件处置措施时,根据角色职能职责、事件模拟场景等设计的标准措施,例如,“增派警力对重点区域加强治安巡逻防控,安排交警对停电路口进行人工疏导,确保交通秩序正常”。
关键句集合CSL(Core_Sentence_List)和提出措施集合RM_SL,可视为A个和B个句子组成的集合,每个句子表达不同的处置举措。若关键句集合CSL中的句Ai和RM_SL中的句子Bi相似度较高,则认为Ai和Bi互为相似句。如图6所示,A1和B1互为相似句,相似度为85%,A2与B3、B4互为相似句,相似度分别为92%、65%。
图6 关键句逐项匹配
关键句Ai在RM_SL中可能没有相似句Bi,也可能存在1个或多个相似句。匹配过程中,将Ai的每个相似句标记并高亮,相似度最高的为句Bi,其与Ai的相似度Sim(Ai,Bi)将参与关键句匹配计算。通过累计求和,并除以CSL集合中关键句的个数A,得到关键句评估得分——Sim_CS。
为提高识别精准度,直观反映文字上的相似部分和语义上的相似部分,关键句匹配采取Jaccard系数和Doc2vec模型双结合的方式,用于计算相似度Sim(Ai,Bi)。其中,Jaccard系数一般是计算句Ai和Bi交集占并集的比重,本文考虑到文字表述等因素影响,将Jaccard系数改为计算Ai和Bi交集占Ai的比重。计算方法如下:
Doc2Vec模型是Mikolov和Le[9]对Word2Vec改进后得到的深度学习模型,具有较好的特征提取和语义识别性能,常用于机器翻译、文本相似度等领域。本文采用gensim库构建Doc2Vec模型, 将Ai和Bi向量化,得到向量相似度Dov2Vec(Ai,Bi)。
根据 Jaccard(Ai,Bi)和 Dov2Vec(Ai,Bi)计算结果,按照“两项求和取最高”原则,确定关键句集合CSL在提出措施集合RM_SL中对应的相似句。
5.3.4 综合评估
通过对关键词和关键句的评估,得到关键词评估得分Sim_Word和关键句评估得分Sim_CS。考虑到每个节点事件关键句、关键词存在一定差别(如不同事件中关键句和关键词个数的差别),在确保最终评估得分位于0-100%区间前提下,可对关键句和关键词评估占比的权重进行动态调整,并按照加权求和得到综合评估分数Sim_Node。根据评估结果(Sim_Node),系统可开展态势推演,后台人员也可根据评估结果、推演情况,以及关键字、关键句高亮情况,调度演练过程、演后归纳总结等。
为验证系统设计可行性,本文以《大面积停电事件应急预案》为基础,以大面积停电事件作为主题开展实验,使用Unity3D引擎设计应急桌面演练系统。共设计公共交通堵塞、化工企业毒气泄露、部分地区通讯中断等20余项事件,居民小区火灾、暴雨灾害事件场景如图7所示。
图7 居民小区火灾、暴雨天气事件场景示意
文本相似度评估样例如表1所示,在处理城市交通信号停电事件时,参演人员提出了以下4点工作举措:市运管处及时通知客运班线,避开拥堵路段;安排交警到被堵地点维护交通秩序,引导车辆通行;加强交通运行监测,及时发布路网运行信息;组织力量及时清理路障。整体看,该举措在交通疏导方面回答较好,但遗漏了电力抢修、信号恢复方面内容,故评估得分相对较低,后续事件流程也将衍变为交通信号长期失效引发的“城市交通事故”和“火车站旅客滞留事件”。
表1 城市交通信号停电事件评估情况
与传统的应急桌面演练系统相比,加入自然语言处理技术后的系统在演练流程和评估模式上取得较大改善。一方面,参演人员过程表现情况得到实时体现,演练表现情况的好坏将影响流程进度,更加贴近真实应急响应的过程;另一方面,以往对参演人员评估主要是专家组、评估组的人工评估,存在较强的主观性,采取“关键词+关键句”匹配方式,能够更加客观地找到不足之处,便于查缺补漏。
但相应的,系统在具体实现上增加了工作量。例如,设计事件流程时,需充分考虑各项措施的重要性和各项突发事件的关联性,确保多流程路线、多结束状态的演练方案合理可行,这就需要大量的实际案例和丰富的工作经验。同时,在演练报告自动生成、演练方案拖拽式生成、演练方案统一设计平台和共享平台等方面,应急桌面演练系统还有许多待挖掘的空间。