杨卿涛,郭文艳,倪维健,曾庆田
(山东科技大学 计算机科学与工程学院,山东 青岛 266590)
过程模型抽取(Process Model Extraction, PME)是从过程描述文本中自动抽取过程信息,并通过形式化方式描述抽取结果,涉及自然语言处理和业务流程管理(Business Process Management, BPM)等技术手段[1]。随着信息数据的爆炸式增长,作为信息载体的文本、图片、视频等媒体均可作为过程模型的抽取对象。突发事件应急预案是政府部门为科学、有效和快速应对突发事件,最大程度减少突发事件造成的损失而预先制定的工作方案[2]。非结构化自然语言描述的应急预案主要包括总则、组织体系、预警报告、应急响应、善后处置和保障措施6部分,其中应急响应部分蕴含大量过程信息,包括应急部门/人员、响应任务、部门/人员与任务之间关系以及任务与任务之间关系等内容,本文将应急预案的应急响应部分称为“响应过程文本”,这是一种典型的过程描述文本。目前应急响应过程模型大多由应急领域专家与建模专家手动完成,这种手工建模的方式需要耗费大量时间和精力,而且建模效率无法保证。面对海量化的应急预案文本,如何快速将非结构化的应急预案文本自动转化为形式化的过程模型,为专家建模提供参考,显得尤为重要。
针对当前构建应急响应过程模型极大消耗人力和物力资源的问题,本文提出一种从应急预案响应过程文本中自动抽取应急响应过程业务流程建模标注(Business Process Modeling Notation, BPMN)模型的方法。首先,对应急预案文本进行清洗、分句、分词和标注词性,训练神经网络模型识别响应任务元素;其次,通过分析文本构建任务关系特征向量,用机器学习的方法抽取任务关系;然后,将抽取的响应任务和任务关系转换为BPMN模型元素,并用Activiti工作流引擎构建BPMN模型,通过BPMN-JS解析显示;最后,对抽取功能进行封装,并开发应急响应过程BPMN模型自动抽取原型系统,用户可以通过线上提交或手动输入应急预案响应过程文本,系统自动生成应急响应过程BPMN模型。另外,本文还对抽取步骤中用到的方法进行对比实验,验证了所提自动抽取方法的有效性。
过程描述文本广泛存于生产生活,承载着重要的过程信息,越来越多的学者通过各种方法从这些文本中抽取过程相关信息,并将抽取结果描述为不同形式的结构化模型。由于特定领域规范化文本的句式比较完整,可以采用自然语言处理工具挖掘过程信息。FRIEDRICH等[3]提出一种用自然语言处理工具从文本描述中抽取业务过程模型的方法,其用StanfordParser得到句法树和句子间的语法关系,用FrameNet和WordNet进行语义分析,结合回指消解机制识别指代关系,得到更加准确的活动关系,进而生成BPMN过程模型;EPURE等[4]提出一种从文本中自动提取活动日志和挖掘过程实例模型的方法,该方法用StanfordParser和自然语言处理工具包(Natural Language ToolKit, NLTK)组合生成语法树,在WordNet和VerbNet数据库中查找及物动词,将含有动词的语句作为活动识别的重要条件,结合给定的规则逐句分析当前活动与前一步得到的活动之间的关系,进而生成过程实例模型;FERRERIA等[5]提出一种半自动的方法识别自然语言文本中的过程元素,其用SpacyParser分析输入文本的结构,通过过程元素在文本中的句法特点和语法类别以及词组之间的关联定义映射规则识别过程元素;HAN等[6]提出一种从自然语言文本中自动提取声明式过程模型的方法,该方法用StanfordParser分析约束描述中的语义成分和依赖关系,并识别和提取活动,结合已识别的活动和其他语义信息生成约束;GUO等[7]提出一种从中国应急预案中自动抽取应急响应过程模型的方法,将文本表示为文本树,采用规则的方法识别过程模型元素,然后结合文本树和过程模型元素生成应急响应过程树,得到BPMN过程模型;郭文艳[8]提出一种面向任务视图和组织视图的应急响应过程自动建模方法,将深度学习与规则方法结合,自动抽取多视图模型。
考虑到过程文本多样性和灵活性的特点,将过程模型抽取分为实体识别与关系抽取两部分,并应用统计学习方法得到更好的过程元素抽取效果;NIEKLE[9]采用支持向量机(Support Vector Machine, SVM)替代特定规则识别活动关系。由于机器学习需要用大量标注数据训练模型,倪维健等[10]提出一种半监督学习的方法,通过为不同活动关系设计识别规则,在同领域内只有少量标注数据的情况下,采用大量未标注数据提升抽取效果。除了隐马尔可夫模型(Hidden Markov Models, HMM)和条件随机场[11](Conditional Random Fields, CRF)外,深度学习也常用于实体识别与关系抽取,相关工作主要对编码层、语义编码层和解码层3部分进行改进。ZHANG等[12]为降低分词错误对模型整体效果的影响,通过LatticeLSTM方法将中文词级别信息添加到基于字的长短期记忆条件随机场(Lang Short Term Memory CRF, LSTM-CRF)模型上;CHEN等[13]首先通过卷积神经网络(Convolutional Neural Networks, CNNs)捕捉词的局部上下文,然后通过门控关系网络(Gated Relation Network, GRN)构建词与词之间的关系,将局部特征映射到全局上下文特征中,实现了过程元素标签预测;HUANG等[14]将双向长短期记忆(Bi-directional Long Short Term Memory, Bi-LSTM)网络与CRF结合应用于序列标注问题,从而兼顾上下文信息,有效利用过去和未来的输入特性,对词嵌入的依赖性更低;RAMAMOORTHY等[15]在双向长短期记忆条件随机场(Bi-directional Long Short Term Memory CRF, Bi-LSTM-CRF)的基础上加入全局注意力机制(global attention),以增强关键特征在识别过程中的权重,进一步提高识别效果;CHEN等[1]提出一种无需人工定义过程特征的分层神经网络用于建模和提取多粒度信息,将PME形式化为多粒度文本分类问题,通过从粗到细的学习机制训练层次神经网络实来抽取多粒度过程信息。
总之,第一类方法凭借自然语言处理工具,适用于某一特定领域或条件下的信息抽取,适合处理句式简单固定、结构完整的过程描述文本;第二类方法通过大量标注数据训练深度神经网络,其对过程元素的识别效果明显优于基于规则的方法,而且可以处理更加灵活多样的自然语言文本。本文在Bi-LSTM-CRF网络基础上添加前馈注意力机制(feed-forward attention)[16],将抽取工作拆分为数据预处理及标注、过程元素抽取和BPMN模型生成3个阶段,渐进地从响应过程文本中抽取过程模型。
为便于理解,下面给出本文重要概念的相关定义。
定义1应急预案响应过程文本(RPT)。由多个长句(LS)组成,记为RPT=∪1≤k≤MLSk,其中M为响应过程文本中长句的数量。长句由一个短句(SS)或多个连续短句构成,表示为LS=∪1≤k≤LSSk,其中L为长句包含的短句数量。短句由一个或多个连续词组(w)组成,表示为SS=∪1≤k≤Nwk,其中N为短句中词组的数量。
定义2应急响应任务。表示为一个四元组TASK=ExeDep,TaskDes,IntType,IntDep,其中ExeDep为任务执行部门;TaskDes为任务描述内容;IntType为任务类型,包括普通任务、发送任务和接收任务3种类型;IntDep为交互部门。
定义3任务关系。表示为一个三元组TR=TASK1,Relation,TASK2,其中TASK1为当前应急响应任务;TASK2为规定距离内的响应任务;Relation为任务间的关系,包括并发、同步、选择、顺序和跳转5种类型,具体定义如下:
(1)并发关系,指TASK1和TASK2不存在严格的先后顺序,两者都完成才可执行下一个任务,记作TASK1,parallel,TASK2。
(2)同步关系,指TASK1和TASK2的任务描述相同但执行部门不同,记作TASK1,synchronous,TASK2。
(3)选择关系,指TASK1和TASK2同一时刻只能执行一个,记作TASK1,exclusive,TASK2。
(4)顺序关系,指两个任务存在次序上的依赖关系,只有在TASK1执行之后,TASK2才能执行,记作TASK1,sequential,TASK2。
(5)跳转关系,指只有符合特定条件才执行TASK1,否则跳过TASK1直接执行后续任务,记作TASK1,exclusive,τ,其中τ表示空任务。
定义4应急响应过程BPMN模型。表示为一个多元组ERPM=Activities,Roles,Events,Gateways,Pools,N,F,ρ,π,其中:
(1)Activities为活动集合,记录BPMN模型中所有的活动(Activity)信息,由n个活动组成,记作Activities={Activityi|0≤i≤n},活动对应响应任务的任务描述。
(2)Roles为角色集合,记录BPMN模型中所有的角色(Role)信息,由m个角色组成,记作Roles={Rolei|0≤i≤m},角色对应响应任务的执行人员。
(3)Events为事件集合,包括一个开始事件和一个结束事件。
(4)Gateways为网关集合,记录BPMN模型中所有的网关(Gateway)信息,网关是连接活动与活动之间关系的桥接,具体分为排他网关(exclusive gateway)和并行网关(parallel gateway),其中并行网关表示同步关系和并发关系,排他网关表示选择关系和跳转关系。
(5)Pools为池集合,池为应急响应任务的执行部门。
(6)N为所有节点集合,N=Activities∪Gateways∪Events。
(7)F为顺序流集合,F⊆N×N,∀f∈F表示节点间的有向边。
(8)ρ:Activity→Role表示角色到活动的映射关系,每一个应急响应任务都对应一个角色。
(9)π:Role→Pool表示角色到池的映射关系,所有角色都属于各自对应的部门。
本文提出的应急响应过程BPMN模型自动抽取方法的整体框架如图1所示,具体包括数据预处理及标注模块、过程元素抽取模块和BPMN模型生成模块3部分。
(1)数据预处理及标注模块 对应急预案响应过程文本进行清洗、分句、分词和词性标注,根据待抽取的响应任务属性对分词结果进行元素标注,并为响应任务对设置关系标签。
(2)过程元素抽取模块 首先构建输入特征向量,结合标注数据训练Bi-LSTM-Attention-CRF网络识别响应任务属性元素;然后基于属性元素在短句中的组合关系,将识别后的元素拼接为响应任务;最后通过分析文本生成任务关系特征向量,结合标注数据训练XGBoost[17]模型,完成对响应任务关系的抽取。
(3)BPMN模型生成模块 首先补全无法直接识别的间接任务关系,然后拆解得到的响应任务关系,根据网关与活动的关系生成顺序流;最后通过Activiti工具构建BPMN文件,采用BPMN-JS解析文件实现BPMN模型的可视化。
数据预处理及标注模块包括数据清洗、分句、分词、词性标注、响应任务属性元素标注和任务关系元素标注。其中,数据清洗用于去除响应过程文本中与过程描述不相关的信息,如去除“总则”、“组织体系”“预警报告”“善后处置和保障措施”等章节部分。在应急预案文本中,长句通常以句号和分号为分隔符,短句以逗号和冒号为分隔符,本文用jieba分词和词性标注工具将文本字符串切割成词组序列,并为每一个词组分配合适的词性标记,以便后续元素识别等操作。
响应任务属性元素标注采用设计好的标签规则人工标注词组和BIO(begin,inside,outside)标签系统,其中:D表示部门;R表示角色;T表示普通任务描述;S表示消息发送任务描述;E表示消息接受任务描述;B表示元素词序列的开始;I表示元素词序列剩下的成分;O表示与过程描述无关的词组。
表1所示为截取的应急预案响应过程文本的一个片段“省地质灾害应急指挥部派出指挥组”,第1行表示片段的分词结果,第2行表示词性标注,第3行表示元素标注结果,其中部门“省地质灾害应急指挥部”由1个“B-D”和3个“I-D”组成,普通任务“派出工作组”由1个“B-T”和1个“I-T”组成。共有顺序、选择、跳转、并行和同步5种任务关系需要抽取,其标签表示为Y={顺序:1,选择:2,跳转:3,并行:4,同步:5,其他:-1}。例如句子“市减灾委向市政府、省民政厅报告”,经过处理可以得到响应任务T1和T2,分别为“市减灾委”,“报告”,发送任务,“市政府”和“市减灾委”,“报告”,发送任务,“省民政厅”。T1与T2的关系特征向量记作X1,其中T1与T2的并行关系作为特征X1的标签,表示为[X1:4]。
表1 响应任务属性元素标注示例
(1)Bi-LSTM-Attention-CRF识别网络
本文在Bi-LSTM-CRF网络基础上添加前馈注意力机制来识别应急响应任务属性元素。虽然Bi-LSTM可以对长期序列建模,但是对词序列靠前的时间步效果不理想,缺乏平等性,而注意力机制(attention)可以很好地捕捉长距离依赖信息,Bi-LSTM还可以弥补注意力机制无法处理位置信息的缺点。
(2)应急响应任务的生成
短句的响应任务属性元素识别结果表示为s=DS,TDS,CDS,SDS,sens,其中:DS为部门列表;TDS为普通任务描述;CDS为接收任务描述;SDS为发送任务描述;sens为部门间的关系词,如“向”“收到”等。算法1所示为响应任务的生成过程,输入为短句的响应任务属性元素识别结果集合S,输出为响应任务集合TASKs。将非空的任务描述记作taskInfo,写入TASK.TaskDes,并根据taskInfo所属任务描述类别确定任务类型taskType,写入TASK.IntType(第2~3行)。如果部门列表有一个及以上部门,则将部门按照在部门间关系词的前后分为任务执行部门列表(forward_Ds)和交互部门列表(back_Ds),嵌套遍历任务执行部门列表和交互部门列表,写入TASK.ExeDep和TASK.IntDep,将生成的TASK放入TASKs(第5~12行)。如果当前部门列表为空,则向上检索长句的首个短句抽取出的响应任务(iter),且其任务执行部门不为空,用其ExeDep补全当前响应任务,将生成的TASK放入TASKs(第13~16行)。本文规定缺失任务执行部门时,检索当前任务所在长句的第1个短句抽取出的响应任务,以其任务执行部门作为补全内容,若长句第1短句任务也缺失任务执行部门,则继续向上检索,直到任务执行部门不为空。例如短句“市委向省政府报告灾情,并开展抢险救灾应急处置工作”,生成的响应任务为“市委”,“报告灾情”,“发送任务”,“省政府”,其中第2个短句缺失主语,通过上述算法最终生成响应任务“市委”,“开展抢险救灾应急处置工作”,“普通任务”,∅。
算法1响应任务生成算法。
输入:响应任务属性元素识别结果集合S。
输出:响应任务集合TASKs。
1:For eachs∈S do
2: If s.TDS≠∅ or s.CDS≠∅ or s.SDS≠∅ then
3: TASK.TaskDes←taskInfo;TASK.IntType←taskType;
4: End if
5: If|s.DS|≥1 then
7:For i=0 to|forward_Ds|do
8: TASK.ExeDep←forward_Ds[i]
9: For j=0 to |back_Ds|do
10:TASK.IntDep←back_Ds[j]
11: End for
11: TASKs.appand(TASK)
12: End for
13:Else then
14: TASK.ExeDep←iter.ExeDep
15: TASKs.appand(TASK)
16: End if
17:End for
18:return TASKs
(3)任务关系特征表示及任务关系识别
在生成应急响应任务后,根据任务关系在文本中的描述特征生成特征向量。本文通过分析响应过程文本和过程信息抽取结果的特点选择任务关系特征为X=id1,id2,P1,P2,LS,ALS,SS,ASS,TR,DR,SD,RD,ST,L,其中:id1为当前任务ID;id2为对比任务id;P1为当前任务属性编号;P2为对比任务属性编号;LS表示两个任务是否从同一长句抽取所得;ALS表示两个任务是否从相邻长句抽取所得;SS表示两个任务是否从同一短句抽取所得;ASS表示两个任务是否从相邻短句抽取所得;TR为任务的关系词编号;DR为部门的关系词编号;SD表示两个任务是否包含同一发送部门;RD表示两个任务是否包含同一接收部门;ST表示两个任务的任务描述是否相同;L为两个任务间的距离。
在得到任务关系特征向量X后,将任务关系识别看作多分类问题。本文采用XGBoost模型识别任务关系,采用事先标注的关系元素标签和特征集训练模型,保存训练效果最好的模型,并将其封装为接口用于抽取任务关系。
(1)补全任务关系
应急预案响应过程文本是一种自上而下描述应急响应活动从开始到结束过程的文本,因此其本身具有任务发展顺序性,且识别出的任务关系具有传递性。例如“指挥部启动应急响应,市委、市政府开展抢险救灾应急处置工作”,生成3个响应任务“指挥部启动应急响应”“市委开展抢险救灾应急处置工作”“市政府开展抢险救灾应急处置工作”,记为T1,T2,T3。通过上述任务关系识别可得T1,sequential,T2和T2,synchronous,T3,在此基础上推理出T1与T3也存在顺序关系,即T1,sequential,T3。对此类间接关系,需要对识别的任务关系进行二次识别,重点在于拆解复杂任务关系和补全缺失成分的响应任务,采用简单顺序任务关系表示所有复杂任务关系。
算法2所示为任务关系的补全过程,输入是通过关系识别得到的任务关系集合_TRs和响应任务关系特征集合AI,输出是关系补全后的完整的任务关系集合TRs。往前检索得到与当前任务为顺序关系的_TRs下标idx,以及并行、选择或同步关系的_TRs下标集合forward;往后检索得到与当前并行、选择或同步关系的_TRs下标集合back。首先遍历back与idx,组成简单顺序关系放入TRs,防止重复处理,故跳过back包含的任务(第2~4行)。将当前任务关系放入TRs,若为跳转关系,则获取当前任务所在长句的最后一个任务下标temp,将其与当前任务组成简单顺序关系放入TRs(第6~8行)。当支线任务过多而其他分支任务过少时,任务过少的分支会出现不连贯,即任务关系缺失成分TASK2,因此需要将所有支线的最后一个任务与后续任务组成简单顺序关系放入TRs(第9~11行)。
算法2补全任务关系。
输入:任务关系集合_TRs、响应任务关系特征集合AI。
输出:完整的任务关系集合TRs。
1:For i=0 to |_TRs| do
2: If _TRs[i].Relation≠"顺序" and _TRs[i].Relation≠"跳转" then
4: i←max(back)+1
5: Else then
7: If AI[temp][5]=1 and_TRs[i].Relation="跳转" then
9: Else if forward≠∅ and back=∅ then
11: End if
12: End if
13:End for
14:return TRs
(2)生成顺序流
将任务关系补全后的响应任务表示为BPMN中的活动,为生成BPMN模型,需要生成顺序流,顺序流表示为f=From,To,其中:From为开始节点;To为结束节点。在生成活动的基础上,需要添加开始事件和结束事件,还需要添加网关例描述活动关系,本文把将活动与网关的关系分为3类,即活动与活动和网关与网关相连的一般关系、网关与多个活动相连的发散关系,以及多个活动与网关相连的收束关系。
算法3所示为顺序流的生成过程,其中输入为任务关系集合_TRs和完整的任务关系集合TRs,输出为顺序流集合F。通过任务对照查找_TRs中任务原有的复杂关系来判断网关类型gateway,向后检索与当前任务关系有相同TASK1的下标列表back1,向前检索与当前任务关系有相同TASK1的下标列表forward1和TASK2的下标列表forward2。back1不为空表示存在发散关系,遍历back1与事先判定的网关组成顺序流,若顺序流集合中最近添加的两个顺序流的结束节点相等且为网关,则认定为网关连接网关的情况,将网关与网关相连组成顺序流,当存在网关与活动的收束关系时,将网关与收束关系下的所有活动组成顺序流(第2~7行)。若back1和forward2均为空,则为一般关系,只需直接连接TASK1与TASK2组成顺序流(第8~9行);若forward2不为空,则表示收束关系,将当前任务和forward2列表中的任务与网关连接组成顺序流(第10~13行)。
算法3顺序流生成。
输入:完整的任务关系集合TRs、任务关系集合_TRs。
输出:顺序流集合F。
1:For i=0 to |TRs| do
2: If back1≠∅ then
3: F.appand(TRs[back1].TASK1,gateway)
4: If F[-1].To=F[-2].To and F[-1].To.type="网关" then
5: F.appand(gateway, gateway*2);gateway←gateway*2;
6: End if
7: F.appand(gateway,TRs[forward1].TASK2)
8: Else if back1=∅ and forward2=∅ then
9: F.appand(TRs[i].TASK1,TRs[i].TASK2)
10: Else if forward2≠∅ then
11: F.appand(TRs[i].TASK1,gateway)
12: F.appand(TRs[forward2].TASK1,gateway)
13: End if
14:End for
15:return F
(3)模型构建及可视化
本文采用Activiti工作流动态生成BPMN文件,通过读取所生成的顺序流集合,生成BPMN模型。BPMN-JS是一个BPMN 2.0渲染工具包和Web建模器,其可以将图表嵌入各类Web应用程序并在浏览器中展示,本文在前端接收后端Activiti生成的BPMN模型,采用BPMN-JS解析加载模型文件并将其可视化。
以某应急预案响应过程文本中Ⅰ级响应部分为例,给出应急响应过程BPMN模型的抽取过程。图3所示为应急预案响应过程文本实例,图中包括7个长句和17个短句,其中15个短句与过程描述相关,2个短句与过程描述无关,共涉及10个不同主体部门。
表2所示为响应任务抽取结果,从文本中共抽取19个响应任务,包括12个普通任务和7个发送任务。表3所示为任务关系抽取结果,包括14个顺序关系、3个同步关系、2个并行关系、1个选择关系和1个跳转关系。
表2 响应任务抽取结果
表3 任务关系抽取结果
根据抽取结果补全所有关系,将同步、并行、选择、跳转关系全部转换为简单顺序关系,例如并行关系T16,parallel,T17结合前面顺序关系T15,sequential,T16得到T15,sequential,T16和T15,sequential,T17,插入网关得到T15,sequential,ParallelGateway,ParallelGateway,sequential,T16,ParallelGateway,sequential,T17,最终生成的应急响应过程BPMN模型如图4所示。
本文使用的数据集是从各省市区的政务网站搜集整理的关于灾害的应急预案文本,共计108个应急预案,包括防汛抗灾、地质灾害和自然灾害3种类型。每类应急预案分为省级预案、市级预案和区级预案3个层次,各层的预案根据响应级别分为一级响应、二级响应、三级响应和四级响应。将应急预案按照响应级别进行拆分,得到96个防汛抗灾类的响应过程子文本、144个地质灾害类的响应过程子文本和192个自然灾害类的响应过程子文本。
训练Bi-LSTM-Attention-CRF网络的环境配置为python3.6,tensorflow1.13.1。具体参数配置如表4所示,其中:emb_dim为词向量维度;hidden_size为Bi-LSTM隐层维度;batch_size为批次大小;learning_rate为初始学习率;optimizer表示所选择的优化方法,本文采用随机梯度下降法(Stochastic Gradient Descent, SGD);epoch为训练轮数。实验的训练集、验证集和测试集划分比例为8∶1∶1。
表4 过程元素识别网络参数设置
实验采用的评价标准为精确率、召回率和F1值。实验进行3种对比,首先在词向量表示中比较了随机生成与FastText生成两种方式,然后在构建输入特征向量中比较了随机词向量(random)、随机词向量与词性编码拼接(random+词性)以及FastText词向量与词性编码拼接(FastText+词性)3种方式,最后在元素识别网络中比较了Bi-LSTM-CRF,Bi-GRU-CRF,Bi-GRU-Attention-CRF和Bi-LSTM-Attention-CRF 4种神经网络的识别效果。表5所示为测试集中各标签的数量。
表5 测试集各标签数量
表6 过程元素识别精确率
续表6
表6所示为不同网络下所有标签的识别精确率,可见词向量与词性拼接的向量特征明显优于词向量,同时对比LSTM与门控循环单元(Gated Recurrent Unit, GRU)[20]算法可见两者相差甚微,对比FastText生成词向量与随机生成词向量可见FastText优势明显。本文采用的Bi-LSTM-Attention-CRF网络在大部分标签中的识别精确率较高,其中对标签B-E和I-E的识别结果异常,分析原因是标签数量过低导致。
表7所示为过程元素识别的召回率,可见FastText与词性编码拼接作为输入特征向量的Bi-LSTM-Attention-CRF网络在大部分标签下的召回率均较好,与精确率类似。B-E和I-E的识别结果异常,其他过程元素识别召回率和精确率基本相同。
表7 过程元素识别召回率
表8所示为过程元素识别的F1值,其中普通任务描述(B-T和I-T)和部门(B-D和I-D)识别结果高于其他过程元素的识别结果,原因是这两类元素在数据集中数量较多,有更多的数据用于训练模型。
表8 过程元素识别F1值
续表8
任务关系识别采用的是XGBoost模型,具体参数如表9所示。表中:learning_rate为初始学习率;max_depth为树的最大深度;n_estimator为最大迭代数;objective表示学习目标参数为多分类问题;num_class为类别个数;eta为更新过程中的收缩步长,用于防止过拟合。实验训练集和测试集的划分比例为7∶3。
实验采用的评价标准为精确率、召回率和F1值,将XGBoost与随机森林(random forest)和SVM模型进行比较。由表10可知,XGBoost在5种标签下的效果均优于其他两种算法,其中跳转关系的准确率、召回率和F1值为1.0,分析原因为跳转关系界限明确且样本过少,所以出现极端情况,仅凭关键词即可判定其为跳转关系。
表9 任务关系识别参数设置
表10 任务关系识别结果
本文基于JavaWeb开发了应急响应过程BPMN模型自动抽取原型系统。用户在文本输入位置选择事先准备好的应急预案响应过程文本或手动输入文本信息,点击提交后端服务器,将有一个上传成功或失败的反馈。后端服务器对文本进行解析,按系统框架图的顺序依次执行,直至生成BPMN模型和响应任务列表,然后反馈给前端并进行展示。
应急响应过程BPMN模型自动抽取系统界面如图5所示,分为3个展示模块,左上角为文本输入模块,此处需要用户上传文件或者手动输入响应过程文本。右上角为响应任务抽取结果展示界面。下面是BPMN模型展示模块,提供放大缩小功能,或者快捷键使用“Ctrl+”或“Ctrl-”控制模型大小,除此之外还提供模型下载和保存功能。
本文以应急预案响应过程文本为数据源,自动抽取应急响应过程BPMN模型。详细给出了响应任务、任务关系和应急响应流程BPMN的定义,根据定义将抽取过程划分为3个阶段,通过提高每一阶段的性能来提高整体抽取效果;在过程元素识别阶段,采用深度学习和机器学习的方法降低对文本句式结构的严重依赖,使其能够适应更加灵活的响应过程文本;不但在过程元素抽取上提高抽取效率,而且基于抽取的响应任务和任务关系,通过补全简单任务关系并生成网关和顺序流等步骤,将抽取结果转化为BPMN模型元素,并将完整的BPMN模型可视化。
由于应急预案文本数据种类繁多,导致其句子结构多样,句式不统一,并非所有文本都能清晰且明确地描述响应过程的逻辑关系,对补全任务关系提出了挑战。本文方法针对逻辑清晰的过程描述文本执行抽取任务,文本描述在内容上具有明显的过程性,部门间的分工协作明确,不存在歧义和表达不准确的问题,结构上各角色之间的指代关系明显,而对于结构复杂、指代关系不明确的文本,本文方法不能良好地适配。因此,下一步工作将针对句式复杂的文本制定关系抽取策略,以得到更加合理且符合认知的任务关系。