基于多任务学习的IT运维服务需求语义解析
2024-03-13许明阳刘振元王承涛
许明阳,刘振元+,王承涛
(1.华中科技大学 人工智能与自动化学院,湖北 武汉 430074;2.图像信息处理与智能控制教育部重点实验室,湖北 武汉 430074;3.武汉问道信息技术有限公司,湖北 武汉 430040)
1 问题的提出
随着新一代IT应用广度和深度的不断加强,IT运维逐渐成为企业和信息服务部门普遍关注却不堪重负的问题。其中,作为服务提供者与用户之间的桥梁,IT运维服务台的主要职能为:对用户的需求提供及时的辨识、分析和响应,最终形成服务任务清单。以人工坐席为主的客服服务台存在工作重复性高、服务不及时、人力需求大等问题[1],对此IT服务商开发了许多端到端的自动化服务平台。例如,IBM先后设计和开发出了工单分析与处理系统(System for Ticket Analysis and Resolution,STAR)[2]、IT工单自动推荐智能系统(An Intelligent System for online IT Ticket Automation Recommendation,AISTAR)[3]等工单自动推荐系统,可以及时为重复和相似的问题提供解决方案。有些服务平台则利用文本分类[4]技术将运维工单自动分派给相应的运维人员。然而实际上,一些简单重复的技术支持并不总是需要通知运维人员来解决,随着系统自动化程度的提高,一些系统已经具备自主处理请求的能力。例如,对于用户提出的“重置密码”的请求,系统在收集到用户的账户信息、关联的应用软件信息后,可以自动执行重置密码操作。从实现智能IT服务台的需求出发,本文提出一种IT运维服务领域用户语义解析方法,将用户的需求文本转化为结构化的语义表达,从而为IT服务台的进一步任务分解和工作分派提供基础。该方法具体分为意图识别(Intention Recognition,IR)和命名实体识别(Named Entity Recognition,NER)两个子任务。
意图识别用于确定用户的基本需求,属于文本分类任务。目前IT运维服务领域意图识别的相关研究主要集中在特征提取以及各种传统的机器学习方法[5-8]。人工提取特征与规则的方法扩展和迁移性差,近年来,深度神经网络也被用来处理自然语言,并取得了较好的效果。IBM公司[9]曾采用卷积神经网络(Convolutional Neural Network,CNN)对用户的IT运维请求进行分类;刘鹏程等[10]在神经网络模型中加入注意力机制,尤其关注故障件和故障模型两类关键特征。
命名实体识别是一类序列标注任务,用于提取文本中的关键信息。IT运维服务领域命名实体识别相关的研究以软件、设备、故障现象等实体的识别为主。HAN等[11]指出用户通常会对软件实体起别名或用缩略语,并采用双向长短时记忆网络(Bi-directional Long Short-Term Memory,BiLSTM)等深度学习模型进行识别;欧一鸣等[12-13]采用预先构建的知识图谱提取文本中的设备和故障现象实体。中文语境下的IT运维文本中存在大量英文词语,这些英文词语大概率为需要识别的实体,如“VPN”“OA系统”,而动词、名词通常最能表征一个句子的语义,因此本文在模型中加入包含英文类词性在内的词性特征。另外,本文还将IT运维领域实体词典作为先验信息加入模型[14-15],将知识驱动的词典方法和数据驱动的深度学习方法相结合。
在深度神经网络模型中,首先通过词嵌入的方法将文本转化为向量形式。常用的词嵌入技术有Word2vec,Glove等。然而传统的静态词向量无法根据语境动态变化,也无法解决一词多义的问题。2018年,Google公开了一种基于转换器的双向编码表征(Bidirectional Encoder Representations from Transformers,BERT)模型[16],解决了语言的多义性,其除了可以对文本直接编码外,还可以利用预训练模型在下游任务中进行微调,在小样本上也可以取得较好的效果[17]。IT运维领域暂无公开的数据集,数据的获取和标注需要大量的人力成本,使用预训练模型可以有效解决这一问题。
除此之外,考虑到意图识别与命名实体识别两个任务之间的关联性,如果一句话中存在“软件”类实体,则这句话的意图大概率是“软件安装”或“软件异常”,而不是“设备配送”,反之亦然。因此,本文采用多任务学习模型,通过参数共享机制将各个子任务结合起来[18]。常见的基于BERT的多任务学习通常共用一个编码层,然后分别进行解码[19-21],然而当输入序列融入其他特征时,难以将这些特征传递给意图识别模块。因此,本文对常见的基于BERT的多任务模型的参数共享方式进行改进,使意图识别模块也可以共享这部分信息。
表1所示为语义解析的具体示例。对于“总部大楼301室,送一个无线鼠标过来”这个服务请求来说,通过意图识别可以确定其意图是“配送设备”,通过命名实体识别技术可以提取出需要配送的设备是“无线鼠标”,配送地点是“总部大楼”的“301室”。
表1 语义解析示例
综上所述,本文提出一种IT运维服务领域用户语义解析方法。为提高模型的识别性能,在MBBC(multi-BERT-BiLSTM-CRF)基准模型上,通过在编码层融入词性特征和实体词典特征增强对领域语言特征和领域知识的学习;同时在多特征融合的基础上,对MBBC模型的参数共享方式进行改进,提出增强的MBBC(Enhanced-MBBC,EMBBC)模型,以增强两类任务在下游参数之间的共享能力。
2 问题描述
在IT运维服务中,用户通过文本的形式向服务台提出服务需求,这类文本被称为需求文本,可以表示为T={t1,t2,…,tL},其中ti表示文本中的第i个字,L为文本的长度。
意图识别常被看作是一项文本分类任务[22],即假设用户的意图存在于一系列预定义的类别中。假设存在N类意图C={c1,c2,…,cN},其中ci表示第i类意图,意图识别就是根据用户的需求文本,将用户的意图划分到预定义的类别中。本文需要识别的意图共17类,包括企业大部分的日常运维服务需求,总体分为服务请求和故障问题两大类。
命名实体识别[23]实际上是一类序列标注任务,用于提取用户需求文本中的关键信息。假设存在M类实体E={e1,e2,…,eM},其中ei表示第i类实体,每一类实体都采用BIO标记方法,B表示实体的开始,I表示实体剩下的部分,O表示非实体,实体标注示例如表2所示。命名实体识别就是将用户需求文本T中的ti映射到对应的实体标签。本文需要识别的命名实体共7类,除了IT运维相关的设备、实体、故障现象以及涉及的人员类实体,对于需要上门的服务还需要识别地点信息,本文地点信息具体到区域、楼、房间。
表2 命名实体BIO序列标注示例
3 模型结构
本文采用EMBBC模型联合学习意图识别和命名实体识别任务。模型结构如图1所示,包括BERT共享层、意图识别模块、命名实体识别模块3部分,其中意图识别模块和实体识别模块共享BERT编码向量。意图识别模块通过Softmax激活函数进行解码得到意图类别;命名实体识别模块融入词性特征和实体词典特征,并依次通过BiLSTM和条件随机场(Conditional Random Field,CRF)进行解码得到实体标签序列。除了共享BERT编码向量外,EMBBC模型通过Hadamard乘积共享两个模块之间的其他下游参数。
3.1 BERT共享层
为了将用户的需求文本转化为计算机可以处理的向量形式,本文采用Google提供的中文BERT预训练模型,包括12层编码层、768个隐藏单元和12个自注意力头部。中文BERT模型在大规模无标签的《人民日报》数据集上预训练得到,将其应用在IT运维服务领域验证其适用性。在BERT模型中,输入文本的编码向量为3个词嵌入特征的叠加(如图2),包括通过WordPiece得到的字符嵌入,用于区分两个句子的分割嵌入和表示字的位置信息的位置嵌入。
在WordPiece中,对文本的切分按照预定义的词典进行,Google提供的中文词典以中文汉字为单位,同时包括部分常用英文单词,切分时默认去掉空格、换行符等空白字符。除此之外,因为BERT的输入可以是一个句子,也可以是两个句子,所以会在整个输入的开头加入特殊标记[CLS],用于得到整个输入的编码向量,并在每个句子的结尾加入特殊标记[SEP],用于区分两个句子。假设输入文本的编码序列为[t[CLS],t1,…,tL,t[SEP]],通过BERT得到的编码为
(1)
式中:n为编码层的个数;ti∈R,R为BERT的隐藏层单元个数。通过BERT模型得到的编码向量可以取代Word2vec等词嵌入,作为共享编码输入后续两个子任务中。
3.2 意图识别模块
意图识别实际上是一类文本分类任务,即将整个句子划分到预定义的类别中。而BERT模型的[CLS]位编码向量就是对整个句子的编码,将其作为句子特征输入到一层激活函数为Softmax的全连接层进行解码,从而实现意图识别。
yintent=Softmax(Wintent·xCLS+bintent)。
(2)
式中:Wintent和bintent为可训练的模型参数;Softmax为激活函数,
(3)
3.3 命名实体识别模块
3.3.1 词性与实体词典特征
表3 词性特征与实体词典特征示例
最后,将词性特征、实体词典特征与BERT编码向量拼接,然后馈送给上下文编码层,其中第i个字符的向量
(4)
3.3.2 上下文编码层
文本的上下文信息通常采用循环神经网络(Recurrent Neural Network,RNN)来提取,长短时记忆网络(Long Short Term Memory,LSTM)是RNN的一种变体,其通过加入门控机制解决RNN梯度爆炸和梯度消失问题。对于命名实体识别任务,句子中的一个实体既和句子的前文有关,也和句子的后文有关,LSTM模型只能捕捉一个方向的依赖关系,而BiLSTM将两个不同方向LSTM模型的输出进行了拼接,可以更好地捕捉前后文特征[25]。
假设上一步得到的特征向量为X={x1,x2,…,xL},LSTM网络中的存储单元更新过程定义如下:
it=σ(Wixt+Uiht-1+bi);
(5)
ft=σ(Wfxt+Ufht-1+bf);
(6)
ot=σ(Woxt+Uoht-1+bo);
(7)
(8)
(9)
ht=ot⊙tanh(ct)。
(10)
式中:σ表示Sigmoid函数;⊙表示元素乘法;t表示时间步;it表示输入门;ft表示遗忘门;ot表示输出门;ct表示单元状态;ht表示隐藏状态;W,U,b为可训练参数。
单向LSTM只能捕获句子的前向语义关系或后向语义关系,而BiLSTM可以捕获句子的双向语义关系,其模型结构如图3所示,图中包括两个并行的不同方向的LSTM,在输出端将两个LSTM的输出串行拼接得到双向语义特征st,计算公式如下:
(11)
(12)
(13)
3.3.3 解码层
序列的标签是有约束关系的,例如O标签后面不能跟随I标签,句子的开头不能是I标签。全连接输出层对序列中的每一个元素进行独立预测,不能考虑这种约束关系,因此本文采用CRF获得全局最优的标记序列。
假设CRF输入序列X′={x′1,x′2,…,x′L},实体的标签序列Y={y1,y2,…,yL},标签序列的得分为
(14)
式中:Ayi,yi+1为标签yi转移到标签yi+1的概率;Pi+1,yi+1为输入序列中第i+1个字对应标签yi+1的概率。标签序列Y的概率为
(15)
式中Y*为所有可能的标签序列集合。训练时,模型求解参数使p(Y|X′)最大化。预测时,通过Viterbi算法将得分最高的序列yentities作为最终的标注结果,
(16)
3.4 多任务建模
常见的基于BERT的多任务模型通常只在编码层共享参数,由于在命名实体识别模块中加入了词性特征和实体词典特征,为了与意图识别模块共享这部分信息,对通用模型进行了改进。如图1所示,采用Hadamard对意图识别模块和命名实体识别模块的编码向量进行交叉相乘:
hintent=hCLS⊙hmean;
(17)
(18)
对于多任务学习,需要对子任务进行联合优化,即将各个子任务损失函数的加权和作为总损失函数,训练时对总损失函数进行迭代优化。其中,意图识别采用交叉熵损失函数。假设共有N类意图,则意图识别损失函数
(19)
实体识别的损失函数是对实体标签序列的概率值取负对数,即
(20)
损失函数L为两者的加权和,即
L=a×Lintent+(1-a)×Lentites,
a∈(0,1)。
(21)
式中a和1-a是两个子任务的权重,决定了不同子任务在训练中的重要程度。
4 数据集和实验
4.1 数据集
本实验数据来自某企业IT运维服务中产生的工单,共8 903条数据,通过人工整理得到意图识别样本数分布如表4所示,实体分布如表5所示。其中共17类意图、7类实体。
表4 意图识别样本分布
表5 命名实体分布
从表4可见,不同意图之间样本分布差距较大,“应用配置变更”的服务请求占大多数,“回收设备”和“激活软件”的请求则比较少,这和企业的实际运行情况相关。对比每一类样本的平均长度和最大长度可以发现,“开通账号”“应用配置变更”“开通访问权限”的样本长度差距比较大,但均属于短文本范围。从表5可见,软件类实体出现的概率较大,其为所有实体中变化最大的一类实体,不同用户对同一类软件的表述相差很大,例如“windows系统”也可以表达为“win系统”或“windows”。
4.2 评价指标
考虑到样本分布对多分类问题的影响,实验采用准确率(Accuracy意图)和加权宏平均F1值(F1w)作为意图识别结果的评价指标,计算公式如下:
Accuracy意图=
(22)
(23)
式中:N为总类别数;F1i为第i类意图的F1值;wi为第i类意图样本数占总样本数的比例。
用F1值(F1实体)作为命名实体识别的评价指标,计算公式如下:
(24)
(25)
(26)
4.3 实验设置
文本在操作系统为Ubuntu 18.04、显卡为NVIDIA T4、内存为15 GB的服务器上进行实验。模型搭建使用Keras深度学习框架;每条输入序列的填充长度为50;训练使用Adam优化算法,训练批次大小(batch size)为32,训练轮次(epoch)为20;BERT模型使用Google在GitHub上开源的中文预训练模型,共12个编码层、768个隐藏单元和12和自注意力头部;学习率为1×10-5;BiLSTM每层的隐藏神经元个数为128;Doupout层的随机丢弃率为0.5;意图识别和命名实体识别任务的损失函数之比为0.5∶0.5;词性特征的嵌入维度为50,实体词典特征的嵌入维度为15。具体超参数设置如表6所示。
表6 超参数设置
5 结果及分析
5.1 模型对比
实验将数据集以8∶1∶1的比例划分为训练集、验证集和测试集,其中训练集用来训练深度神经网络模型,验证集用来在训练的过程中调节参数,测试集用于测试模型效果。在BERT诞生之前,通常用CNN和RNN两种神经网络模型及其变体进行意图识别和命名实体识别。为对比BERT模型与这两种基线模型在IT运维服务领域语义解析任务中的性能,本文分别用CNN,BiLSTM,BERT模型进行对比实验。其中,CNN模型采用文本卷积神经网络(Text Convolutional Neural Network,TextCNN),包括大小分别为2,3,4的3个并行的卷积核,特征向量为3次卷积结果的串联拼接;BiLSTM隐藏层神经元的个数为128,特征向量为两个方向向量串联拼接。除此之外,CRF可以对序列标签有一定约束,因此将CRF也作为一项对比变量加入实验。表7所示为各模型在单任务上的实验结果,其中以CRF为输出的模型只检验命名实体识别结果。
表7 单任务模型实验对比 %
本文采用微调的方式,使用BERT预训练模型。实验结果表明,相对于TextCNN,BiLSTM基线模型,BERT对意图识别的准确率和加权F1值以及命名实体识别任务的F1值都有显著提升。对于意图识别任务,BERT比TextCNN提升4.6%的准确率和4.89%的F1值,比BiLSTM提升6.51%的准确率和6.49%的F1值。对于命名实体识别任务,BERT比TextCNN提升2.67%的F1值,比BiLSTM提升4.03%的F1值。除此之外,在命名实体识别任务中,CRF对结果提升较大,其中TextCNN-CRF比TextCNN提升2.45%的F1值,BiLSTM-CRF比BiLSTM提升5.82%的F1值。在BiLSTM-CRF的基础上加入BERT得到BERT-BiLSTM-CRF,使F1值提升了3.64%。
在最优模型BERT-BiLSTM-CRF的基础上,将词性特征和实体词典特征应用到微调的BERT模型中,验证其对命名实体识别任务的影响,实验结果如表8所示。当添加词性特征时,F1值从90.45%提升到91.16%;当添加实体词典特征时,F1值提升到91.65%;当同时添加这两种特征时,F1值可以达到92.07%。由此说明,融合词性和实体词典特征可以增强模型对词法信息和领域知识的学习。除此之外,这两种特征不需要基于大量的领域语料库进行提取,因为一个采用通用词性标注器,另一个采用先验知识和外部资源。为了将领域知识融入模型,有很多将词嵌入和字嵌入进行融合的模型,本文没有这样做,因为这需要大量的领域语料库来训练Word2vec等词嵌入模型。
表8 词性特征和实体词典特征对NER的影响 %
由于意图识别和命名实体识别在语义解析任务中有一定的关联性,本文在融合词性特征与实体词典特征的基础上,构建了3个多任务模型进行对比,分别是基于TextCNN+BiLSTM-CRF的多任务模型、MBBC模型和文本提出的EMBBC模型,表9所示为这3种多任务模型的实验结果。可见,与单任务模型相比,多任务模型在两类任务上均有一定提升,而EMBBC模型的结果最优,其中意图识别的准确率达到97.19%,命名实体识别的F1值达到93.16%。这些结果说明,本文所提EMBBC模型可以增强两个任务之间的信息共享能力。
表9 融合词性特征与实体词典特征的多任务模型实验对比 %
5.2 错误分析
为了对语义解析的结果进行定性分析,计算每一类意图和每一类实体的识别结果,如表10和表11所示。
表10 意图识别结果分类统计 %
表11 命名实体识别结果分类统计 %
续表11
在意图识别结果中可见,“安装软件”“连接网络”“回收设备”“激活软件”和“忘记密码”类的各项指标均达到100%。对比表5可知,“激活软件”类识别较好的原因可能是样本量大,而剩下的几类在小样本上也能得到很高的F1值,因为这几类文本的特征词比较明显,例如“联网”“回收”“激活”“密码”等词,在对应意图中出现的概率很大而在其他意图中出现的概率很小。从中随机抽出一些具有代表性的错误结果,如表12所示。
表12 意图识别错误结果示例
在第1句中,关键词“账号”在“开通账号”意图中出现的概率很高,因此被分错;第2句属于歧义问题,“无法访问”在该句中的意思为“无法登录”,模型没有很好地识别出这一点;第3句也是因为“数据”属于“应用数据错误”类的关键词,因此被错分。
从表11可见,各类实体的F1值相差不大,从中随机抽出一些具有代表性的错误结果,如表13所示。
表13 命名实体识别错误结果示例
在第1句中,虽然出现了两个软件类实体“WIN7”和“WIN10”,但是其意图是“安装软件”,真正应该被识别出来的软件类实体应该是“WIN10”,模型错误地识别出了“WIN7”;在第2句中,模型没有能够识别出“故障现象”这个实体,这类错误在每一类实体中都有出现,影响了模型的召回率;在第3句中,“打印机扫描一体机”属于一个整体,因为在某些文本中,“打印机”和“扫描一体机”都属于设备类实体,所以模型错误地将其识别为两个实体。
综上所述,模型对模糊语义和歧义问题的学习还不够好,出现概率较小的样本类型容易被出现概率较大的样本类型影响。因此,今后研究可以考虑构建IT运维服务领域知识图谱进行语义推理,辅助IT运维服务领域语义解析。
6 结束语
本文从实现智能IT服务台的需求出发,通过分析IT运维服务领域语义解析的相关研究背景,提出一种IT运维服务领域语义解析方法,包括意图识别和实体识别两个任务。在融合词性特征与实体词典特征的基础上,通过EMBBC模型对意图识别和命名实体识别进行联合学习。实验结果表明,融合词性和实体词典特征能够在一定程度上提升识别结果,EMBBC模型比MBBC模型更擅长捕捉意图和命名实体之间的关联。意图识别和命名实体识别属于语义解析的两项基本任务,因此本文方法不仅适用于IT运维服务领域,未来还可根据其他服务领域的特点进行适当改进,应用于相应领域的智能服务系统中。
此外,在对错误的识别结果进行分析后发现,本文构建的模型还不能很好地解决语言的模糊性和歧义性。后续研究可以考虑构建IT运维服务领域知识图谱进行辅助识别,还可以考虑研究IT运维服务领域实体的语义相似度,以实现相同实体的归一化。