APP下载

融合主题信息和Transformer模型的健康问句意图分类

2021-12-08迟海洋徐广义

小型微型计算机系统 2021年12期
关键词:编码器意图向量

迟海洋,严 馨,徐广义,陈 玮,周 枫

1(昆明理工大学 信息工程与自动化学院,昆明 650500) 2(昆明理工大学 云南省人工智能重点实验室,昆明 650500) 3(云南南天电子信息产业股份有限公司,昆明 650040) E-mail:kg_yanxin@sina.com

1 引 言

信息技术的发展和智能设备的普及极大地改善和提高了人们的生活质量.在医疗方面,用户可以利用在线问答社区、网站等方式来咨询、获取健康服务和信息,如通过各种在线问诊平台或网站查找和咨询健康问题已逐渐成为人们到医院就诊前的首先步骤.基于医疗问答社区产生的大量健康问句数据、记录具有丰富的医疗、研究和实用价值.通过对用户提出的健康问句分类和分析,一方面可以提高已回答问题的检索效率、提升用户体验;另一方面还可以创造更多的价值,如向用户推荐相关的医师和科室等.

问答系统的关键是要准确理解和识别用户问题的意图[1],并能准确地返回给用户预期的答案.而对用户的健康问句意图识别可以看作分类问题[2,3],即事先在该领域范围内定义可能的意图类别,再用分类方法将问句划分到合适的类中.目前在用户意图分类研究中,对已有的方法进行总结,大致划分为3类:

1)基于规则的方法:该方法需要通过领域专家人工提取针对特定问题类型的特征规则,进而构建一个基于规则的分类器对问句进行分类.Ramanand等[4]提出基于规则和图的方法来获取意图模板进而实现用户的消费意图.Campillos等[5]通过预先构建的规则与问句中相关字词、句子匹配,实现了对医疗健康问题的分类.该方法虽然对数据依赖性小,但需要定义大量的规则、费时费力且泛化能力较弱,很难构建一个通用的规则架构.

2)基于传统机器学习的方法:该方法基于特征工程,不需要人工定义大量的规则.陈浩辰[6]分别使用SVM和Naïve Bayes分类器实现了对微博语料的消费意图分类.Roberts等[7]使用k近邻算法帮助对医学问题的资源类型进行分类;Guo等[8]采用SVM对中文医疗健康问句进行分类.虽然该方法取得了不错的效果,但仍然存在诸多问题:一方面,传统的机器学习方法需要人工构建分类特征,成本较高;当数据集变化时,会演变成特征设计、特征选取问题.另一方面,选取的分类特征难以获取句子中词与词之间的深层语义信息,最终无法准确理解用户问句的语义信息.

3)基于深度学习的方法:该方法不需要人工显式地给定分类特征,极大降低了获取文本特征的难度.目前深度学习技术快速发展、已成为研究热点,在NLP领域得到广泛的应用.Ravuri等[9]提出将LSTM与RNN两种模型应用于意图分类问题.Hughes等[10]使用CNN对临床文本进行分类.钱岳等[11]构建了一种基于卷积的长短期记忆网络(Convolutional-LSTM)模型对用户的出行消费意图识别,相较于传统机器学习和单独使用CNN或LSTM的深度学习方法,F值有较为不错的提升.唐晓波等[12]提出了一种基于关键词词向量特征扩展的健康问句分类模型,使用LDA提取问句关键字并对其进行词向量特征扩展,最后由CNN实现分类,有效提升了健康问句的分类效果.余慧等[13]构建了基于BTM(Biterm Topic Model)-BiGRU的意图识别模型,利用BTM主题建模对短文本进行主题特征挖掘并结合深度学习的方法采用双向GRU网络捕获上下文信息,在用户就医意图识别上获得理想的效果.张志昌等[14]使用卷积和独立循环神经网络,构建了一种融合局部语义信息和全局结构信息的中文医疗健康问题分类方法,在中文医疗健康数据集上取得了非常好的效果.现有的卷积神经网络、循环神经网络及其变体结构获取整个句子序列信息有限,且中文医疗健康问句文本长度较短、字符数少、特征稀疏,不宜看作为一般的文本分类任务[15],分类性能尚有提升空间.

针对上述问题,本文提出一种融合主题信息和Transformer模型的健康问句意图分类方法,主要贡献如下:

1)针对卷积神经网络和循环神经网络的不足,构建完全基于多头自注意力机制的Transformer意图分类模型,充分提取句子内的语义信息.

2)针对中文医疗健康问句数据量庞大且文本字符数少、特征稀疏的特点,引入BTM主题模型对用户问句隐含主题建模,可以更好地对问句进行特征挖掘.

2 背景知识

2.1 主题模型

主题模型作为语义挖掘的利器,是一种对文字隐含主题进行建模的方法.主题是一个概念、一个方面,表现为一系列相关的词语,用数学语言描述,主题就是词汇表上词语的条件概率分布,与主题关系越密切的词语,它的条件概率越大,反之则越小.例如一个文本若是涉及“症状”这个主题,那么“症状”“表现”等词语便会以较高的频率出现.

传统的主题模型主要是通过计算词项在文本中的重要性来建模,若文本内容较短、数据稀疏则难以计算词项的重要性.针对LDA对短文本建模的缺陷,BTM主题模型应运而生[16-18].BTM模型的思想是对数据集中的同一上下文共同出现的一对无序词项进行建模,通过分析建模的结果,两个词项是否属于同一类别取决于它们的共现次数.

2.2 Transformer

传统的循环神经网络如RNN、LSTM在编码句子时无法进行并行计算,若层数较深时计算速度更是严重下降.虽然CNN能够实现并行计算,但不能直接处理过长的序列样本.针对以上提到的CNN、RNN、LSTM的不足,2017年Vaswani等[19]提出了一种基于自注意力机制的Seq2Seq模型Transformer,该模型可以将序列中所有单词并行处理,同时将上下文与较远的单词结合起来,在每个步骤中,每一个符号的信息都可以借助自注意力机制与其他所有的符号进行沟通.Transformer模型包含编码器和解码器两个部分,编码器由N个网络块组成,每一个块中包含一个自注意力子层和前馈神经网络子层,同时每个子层中还加入了残差网络和归一化;解码器的网络块一般与编码器网络块相同,也是由N(一般为6)个网络块组成,不过解码器的网络中多了一个Masked 多头注意力层.

3 模型构建

本文通过Transformer模型学习句子序列信息,可以使模型更加专注词的不同位置,进而理解句子中词之间的顺序和距离信息,同时考虑到中文医疗健康问句的特点以及BTM主题模型处理中文短文本语料的优势,利用BTM对主题建模和使用主题词向量模型[20]TWE(Topical Word Embedding)进行主题嵌入从而获得词级主题特征向量作为额外的特征信息,可以使模型充分利用句子的各种特征信息,进而有效的识别出句子的意图类别.融合主题信息和Transformer模型的问句意图分类模型框架如图1所示.

图1 模型框架图Fig.1 Model frame diagram

3.1 BTM建模

针对中文医疗健康问句的特点,若使用传统的词共现方式进行主题挖掘,效果不够理想,因此本文采用Cheng等[21]提出的利用词对共现代替词共现的方法来进行主题建模.Bi-term表示出现在同一文本中的两个无序词构成的词对,BTM通过对可以表达潜在主题的Bi-term的生成过程进行建模,以潜在的方式反映语料库中的语义结构,解决了短文本数据稀疏的问题.

Step 1.构建语料主题分布θ~Dirichlet(α).

Step 2.对于每个主题k,k ∈[1,K],K为整个语料库中的主题数目,从参数为β的Dirichlet先验中生成主题-词汇分布φk~Dirichlet(β).

Step 3.对于每一个词对bi∈B:

Step 3.1.从整个语料库的主题分布θ中抽取一个zi来生成词对的主题分配,记为zi~Multinational(θ).

Step 3.2.从抽取的主题z中获取词对b的两个不同词wi,1,wi,2,且wi,1,wi,2~Multitional(φk).

BTM生成过程如图2所示.

图2 BTM的图解模型Fig.2 Graphical model of BTM

3.2 词-主题向量

给定数据集,通过BTM主题建模最终可以推断语料中主题-词概率分布p(wi|zi)及文档-主题概率分布p(zi|s),由主题-词概率分布和文档-主题概率分布可以得到词在各个主题下的对应概率分布pwi,基于开源的TWE模型训练后可以生成主题向量矩阵Wt.设给定文本序列S=(w1,w2,…,wn),第i个词wi对应主题zj的概率可由公式(1)计算所得:

p(zj|wi,s)=p(wi|zj)×p(zj|s)

(1)

对于每一个主题计算wi对应的主题概率分布并进行归一化操作,可以得到wi在不同主题下的概率分布pwi,计算方法见公式(2):

pwi=[p(z1|wi,s),p(z2|wi,s),…,p(zK|wi,s)]

(2)

其中,pwi可以反映wi在不同主题下的权重.

基于wi的主题概率分布pwi与主题向量矩阵Wt相乘可以获得词wi所对应的主题词向量,计算方法见公式(3):

(3)

将词wi的主题词向量twi作为附加特征与其相对应的词向量W[wi]进行拼接,生成词的最终表示,见公式(4):

xi=W[wi]⨁twi

(4)

3.3 Transformer编码器模型

为了学习输入序列的句子表示,本文将融合了词主题信息的词向量集合X={x1,x2,…,xn}输入到Transformer编码器网络中,进行特征提取,如图3所示.本文只使用Transformer的编码器部分,Transformer编码器由两个子层组成,结构如图4所示.

图3 基于Transformer编码器模型Fig.3 Encoder model based on Transformer

图4 Transformer编码器结构Fig.4 Transformer encoder structure

Transformer获取句子序列特征过程如下:

1)将融合了主题词向量的序列X输入到编码器中.

2)由于Transformer模型缺少对输入序列中词语顺序的表示,所以在编码器层的输入添加一个位置编码向量Positional Encoding,该向量决定当前词在序列中的位置,计算方法见公式(5)、公式(6):

PE(pos,2i)=sin(pos/100002i/dmodel)

(5)

PE(pos,2i+1)=cos(pos/100002i/dmodel)

(6)

其中,pos表示当前词在句子中的位置,i表示向量中每个值的索引,dmodel表示词向量的维度.

3)多头自注意力的输出计算见公式(7)-公式(9):

(7)

(8)

Z=MultiHead(Q,K,V)=Concat(head1…headh)WO

(9)

4)利用残差连接和层归一化调整特征信息,可以有效避免梯度消失、加快收敛速度和提高模型的性能,计算见公式(10):

L=LayerNorm(X+Z)

(10)

其中,LayerNorm为归一化函数.

5)通过前馈神经网络对经过残差连接和归一化处理的输出L做两次线性变换,并使用ReLU激活函数激活,计算见公式(11):

FFN(L)=max(0,LW1+b1)W2+b2

(11)

其中,W1,W2为权重矩阵,b1,b2为偏置矩阵.

6)最后再通过一次残差网络和层归一化调整特征信息作为Transformer编码器的最后输出,见公式(12):

S=LayerNorm(L+FFN(L))

(12)

3.4 分类层

本文使用Softmax分类器计算问句被分到每个类别标签的概率,从而实现问句的意图分类;通过反向传播机制对模型中的参数不断进行训练,利用最小化交叉熵对模型进行优化,见公式(13)、公式(14)所示.

y=softmax(WfS+bf)

(13)

其中,Wf为全连接层的权重矩阵,bf为偏置.

(14)

4 实验设计与结果分析

4.1 数据集

本文采用的实验数据集来源于两部分:

1)网络(1)https://github.com/zhangsheng93/cMedQA2中整理的中文医学QA数据集questions.csv文件中提供的用户问句,该数据集所含用户问句丰富,累计数量拥有12万条.本文从中随机抽取20%的样本,为了提高样本的质量,先对抽取的样本进行筛选,剔除多意图或意图不明确的样本,确保每个问句只含有单一意图,再将其分成四部分交由四组人员独立对其进行人工标注,通过匹配每组人员的语料标注结果,去掉标注不一致部分从而确定每个样本的分类标签.

2)爬取国内知名健康网站:寻医问药网(2)http://z.xywy.com/、好大夫在线(3)https://www.haodf.com/,近一年用户提出的健康问句[22].考虑到随机抽取的样本中存在数据不平衡的现象,其中病因和治疗类的数据偏多,所以通过爬取在线健康网站的部分语料作为扩充.

目前分类体系尚无统一的标准,具体到健康医疗领域,若使用开放领域的问句分类方式难以满足其分类需求,还需面向领域知识的主题分类[22],本文在基于健康问答社区的主题分析、中文健康问句分类[23-25]以及综合分析语料中所涉及的用户的问题基础上,根据期望查询目标将用户问句大致归类并在此基础上开展实验.对数据集进行预处理后得到20000条样本,每种类别的样本数量、类别标签及示例如表1所示.

表1 意图分类及示例Table 1 Intent classification and examples

4.2 实验设置

本文实验基于Pytorch深度学习框架实现,使用Adam优化器,学习率为0.001,模型具体参数设置如表2所示.

表2 实验参数设置Table 2 Experimental parameter setting

4.3 评价指标

本文采用精确率P(Precision)、召回率R(Recall)及F1值来对问句意图分类效果进行评价,计算见公式(15)-公式(17):

(15)

(16)

(17)

其中TP表示将正类预测为正类的问题数;FP表示将负类预测为正类的问题数;FN表示将正类预测为负类的问题数.

4.4 对比实验与结果

本文实验中,将原始语料经过预处理后按9∶1比例分为训练集和测试集,并在谷歌提供的BERT预训练模型基础上对数据集进行fine-tune,生成词向量.

为验证模型的有效性,本文使用同一个数据集,选取经典的机器学习方法(SVM)和深度学习方法(CNN[26]、LSTM[27])作为基线并与本文采用的Transformer编码器网络作对比实验;同时,将本文提出的融合了词主题信息的BTM-Transformer模型与LDA-CNN[12]、BTM-BiGRU[13]模型作对比实验.不同方法在测试语料上整体分类性能对比实验结果见表3,不同方法在其各个意图分类中F1值比较见表4.

表3 不同方法对比实验结果Table 3 Comparative results of different experimental methods

4.5 实验分析

由表3、表4可以看出,本文提出的融合词主题信息和Transformer模型的问句意图分类方法在本文构建的语料中取得了最好的效果.

表4 不同方法在其各个意图分类中F1值比较Table 4 Comparison of F1 values in each intention classification in different methods %

相较于传统的SVM机器学习方法,基于深度学习的方法在意图识别效果上均有较大的提高.

对比CNN、LSTM、Transformer这3种深度学习网络模型,Transformer表现出了更强的特征获取和表达能力.虽然CNN获取句子局部特征能力较强,但缺乏对整个句子的语义表达和上下文时序关系的建模.基于LSTM的分类方法较SVM和CNN均有所提高,但存在捕捉特征不全、长程依赖、无法挖掘句子深层次信息以及梯度消失和爆炸的问题.由表4可以看出基于LSTM的分类方法在某些类别上提升并不明显.基于Transformer的模型比传统的卷积神经网络和循环神经网络可以提取到句子中更丰富的特征信息,语义编码能力更强.使用Transformer编码器提取句子特征,可以很好地捕捉到句子的长依赖特征以及充分提取句子内的语义信息,实现对句子的深层次语义编码,提升模型性能.

对比LDA-CNN、BTM-BiGRU、BTM-Transformer这3种方法,本文提出的BTM-Transformer模型效果最佳.针对中文医疗健康问句文本字符数少、特征稀疏的特点,引入BTM主题模型可以更好地对问句进行特征挖掘,说明融合了词主题信息的词向量能够丰富问句语义信息、缓解数据特征稀疏的问题,融入主题信息有助于提升模型整体分类性能.

5 结束语

本文提出了一种融合主题信息和Transformer模型的健康问句意图分类方法,将词向量和词的主题向量拼接融合在一起,考虑了词级别和主题级别两个粒度的语义抽象表示,缓解了中文医疗健康问句文本字符数少、特征稀疏的问题;利用Transformer编码器对句子进行充分的特征提取,增强了问句表示,与传统的神经网络模型相比效果提升显著.在健康问句数据集上的实验表明,本文提出的方法能有效提升意图分类效果,验证了该模型的有效性.

在下一步研究工作中,可以进一步考虑将句子层面上的主题特征加入到模型中,增强问句的语义表示;同时尝试结合知识图谱来丰富短文本的语义信息,更好地解决数据稀疏问题,提升短文本分类性能.

猜你喜欢

编码器意图向量
原始意图、对抗主义和非解释主义
基于ResNet18特征编码器的水稻病虫害图像描述生成
WV3650M/WH3650M 绝对值旋转编码器
基于高速公路的驾驶员换道意图识别
WDGP36J / WDGA36J编码器Wachendorff自动化有限公司
陆游诗写意图(国画)
向量的分解
基于Beaglebone Black 的绝对式编码器接口电路设计*
聚焦“向量与三角”创新题
向量垂直在解析几何中的应用