当前位置:首页 期刊杂志

一种融合医疗知识图谱的端到端对话系统

时间:2024-07-29

穆天杨,李宝安,游新冬,吕学强

(1.北京信息科技大学 网络文化与数字传播北京市重点实验室,北京 100101;2.北京信息科技大学 计算机学院,北京 100101)

0 引言

随着社会的发展,人机交互技术在各个领域得到了不同程度的应用,人机对话因为其自身的巨大潜力以及商业价值而备受关注,相关技术发展迅速。一方面我们可以很容易地获取到网络中的结构化数据以及非结构化数据,另一方面随着深度学习的迅猛发展,可以运用获取到的数据进行深度学习模型的训练从而构建人机对话系统。其中专业领域的对话系统尤为重要,是一个很有应用前景的研究方向,值得相关研究人员进行深入的挖掘和探索。

知识图谱作为一种新型的结构化数据,其基础的数据形式是(实体,关系,实体)的三元组,常用的图数据库有Neo4j、FlockDB等。图数据库在大规模数据的处理上拥有着更快的查询速度。除此之外,图数据库只关注节点和边以及二者的属性信息,而结构化数据库还需要定义不同表之间的关联。知识图谱作为一个新型的常识库,在对话系统的构建和应用中有着很好的指导作用。

对话系统按照应用方向不同可以分为两个大类,一类是通用型的对话系统,一类是专业领域的对话系统。通用型对话系统更倾向于与用户进行闲聊,而专业领域的对话系统能够回复该领域的一些有针对性的问题。相对来说专业领域的对话系统更有研究价值。对话系统的构建方式可以分为Pipeline(管道方法)和end-to-end对话系统两种。Yan 等[1]使用高斯混合模型进行建模,提出了语义增强的大边际高斯混合损失算法来训练模型的编码器,然后使用局部离群因子(local outlier factor,LOF)算法来进行域外检测,进而构建对话系统。这也是普遍的Pipeline对话系统设计思路。然而Pipeline方法构建的对话系统虽然在许多特定的领域有很好的效果,但是他们的规则都仅仅适用于这一特定领域,很难迁移到其他的领域。随着端到端神经生成模型的发展,任务型的对话系统得到了长足的发展。Wen等[2]对端到端对话模型进行研究,将对话建模成了一个Seq2Seq的映射问题,即建立了问题到答案的映射关系模型,并且该方法以当前对话中的历史数据以及大规模的对话语料库作为支撑。Li 等[3]也是以文档为支撑,基于Transformer构造对话系统。Eric 等[4]提出了将copy机制纳入到神经网络架构中的方法,从而提升了Seq2Seq任务的性能。康海燕等[5]用贝叶斯方法与疑问词相结合,将问题转换成查询语句,并加入了新词识别功能。Huang 等[6]提出了一种将知识图谱融合进模型的增强摘要生成框架,并将强化学习应用到模型中。

目前对于如何将知识图谱信息应用到对话系统中的研究依旧处于一个起步的阶段。各种添加图谱信息的方法还不够成熟,如何利用好外部知识库的信息仍然是一个研究热点,有着较大的发展空间。本文将知识图谱中的结构化信息应用到对话系统中,提出了融合医疗知识图谱的端到端对话系统。

1 模型与方法

本文所提方法的整体流程如图1所示。使用基于变换器的双向编码表示(bidirectional encoder representations from transformers,BERT)+ 双向门控循环单元(bidirectional gated recurrent unit,BiGRU)+条件随机场(conditional random fields, CRF)的方法进行关键词的识别,并将识别到的关键词与实体库进行匹配找到对应的信息后作为GPT2模型输入向量的常识信息,从而影响端到端生成模型的输出,最终得到相应的回复。

图1 本文方法整体流程

1.1 关键词提取模块

此模块的作用是提取当前话轮信息中的关键词,从知识图谱的常识库中搜索到相关的知识信息。模块使用BERT+BiGRU+CRF模型结构对整个话轮信息进行序列标注,从而识别出当前问句中的关键词,然后根据预先建立好的同义词词表,优先使用完全匹配的方法,若完全匹配无法找到对应的实体,则利用bm25经典检索算法查找出知识图谱常识库中的对应实体、实体的相关属性以及实体与其他实体的关系。三元组BERT模型的输入分别是字向量、句向量和位置向量3类,在输入的开头和结尾分别使用[CLS]与[SEP]标签进行标记。在本文方法中,将关键词提取任务转换成字的二分类,即给输入模型的信息打上0、1标签,标识为1的即为关键词。相比于双向长短时记忆(bidirectional long short term memory,BiLSTM)网络结构,BiGRU更容易收敛,因此在设计模型时选择了BiGRU的模型结构。与此同时,因为在进行关键词提取的过程中并没有进行分词操作,所以也就避免了因为分词不当对关键词提取任务造成的干扰,从而提高关键词提取的准确率。

为了更好地识别出当前问句中的关键词信息,首先根据人工建立的检验指标、症状和疾病同义词表进行匹配,如果没有匹配到相应的内容则使用bm25检索算法在构建好的检索模型中找到最相近的知识图谱实体数据。bm25算法源于二值独立模型,但是二值独立模型仅仅考虑到了文本中的词项出现与否,没有考虑单词的权重。bm25算法对其进行了改进,使用词频、逆文档频率以及字段长度归一化信息进行相似度的匹配。其计算方式如式(1)所示。

(1)

其中

(2)

式中:ri为包含单词i的相关文档数量;R为总的相关文档数量;N为文档的总数;tftq为单词在文档中出现的频率;k1、k2和b均为经验参数。在实验中将b的数值设定为0.75。在本文的应用中,将每一组实体名及其对应的同义词均视为一个文档来进行bm25搜索模型的构建。

本模块中知识图谱的存储使用Neo4j数据库,实体作为图数据库的节点,实体之间的关系作为图数据库的边,实体的基本信息作为节点的属性进行存储。在调用时使用py2neo进行数据库的增、删、改、查操作。在得到完全匹配的结果或者是bm25的搜索模型输出后,根据搜索结果在数据库中查找到实体对应的信息,拼接到输入向量之前作为end-to-end 模型的输入。为了应对输入数据过长的问题,当信息传递到end-to-end模型中后,首先将搜索到的知识图谱相关信息中字符数超过30的属性信息进行截取,只将前30个字符的知识信息应用到end-to-end模型的输入中去。然后将拼接后过长的输入进行截取,取前500个字符。这样就可以满足BERT模型对输入的要求。

1.2 end-to-end 模型

本模块使用GPT2作为对话生成的预训练模型,并对其进行微调。GPT模型的结构如图2所示。GPT使用了Transformer的编码层,但是在模型中精简了模型结构,去掉了编码层的第二个自注意结构。而GPT2是GPT模型的发展和延伸,在设计上主要有几个方面的创新:一是将Layer norm(层归一化)放到了每个子块前;二是残差层的参数初始化可以根据定义的网络深度进行自我调节;三是扩大了字典和输入序列的大小长度,以及训练测试的batchsize(批大小)。

图2 GPT2模型结构

在本文提出方法的应用中,end-to-end 模型的整体结构以GPT2为主,微调工作的输入与关键词提取模块类似,但是在前面加上了从知识库中搜索到的相关信息,模块输入分别是字向量、位置向量和句向量。为了将知识图谱的信息添加进端到端的对话模型,我们将获取到的知识图谱信息经过筛选后添加到GPT2模型的输入中,作为备选的知识信息,以便生成更完善的回复信息。

2 实验

2.1 实验数据以及评测指标

本文选用的数据是MIE[7]医疗对话数据集,对其数据进行了部分扩充,在表1中展示了部分对话数据样例。其中话轮信息中一栏是对话的话轮信息,标签一栏中“-”前后对应的分别是实体和关系,若一句话中有多组实体和关系,则以逗号为分隔符。本文应用的知识库信息来自于39健康网(http://ask.39.net/question)、快速问医生(http://so.120ask.com)等医疗网站。表2中的数据是已有知识库中的检验指标、疾病、症状以及三者间关系的数量统计。图3是对知识图谱三元组的可视化展示。

表1 对话数据样例

表2 图谱信息统计

图3 图谱展示

为了验证本文提出方法的准确性,使用贪婪匹配(greedy matching,以下简称为G)和BLEU(以下简称为B)两个评价指标作为验证标准。

(3)

(4)

2.2 实验环境

由于实验环境以及参数设置对深度学习模型的效果具有很大的影响,本文列出了部分实验环境以及模型参数设置情况。

模型采用的是深度学习中的pytorch框架。训练环境参数如表3所示。

表3 训练环境参数

在训练模型的过程中通过调整预训练模型的参数对整体的模型进行微调,最终效果最好的模型参数如表4所示。

表4 模型参数

2.3 实验设计

表5中列出了本文提出方法生成的部分回复信息。为了更严格地验证模型效果,设计了一组对照实验,并使用B1、B2以及G三个评价指标来对实验结果进行评定。实验5的方案为本文的模型结构。

表5 对话生成数据样例

实验1:直接使用GPT2模型进行训练和测试。

实验2:使用词表匹配的方式提取关键词后搜索知识图谱信息,作为GPT2模型的额外输入。

实验3:使用BERT+BiGRU+CRF的模型结构提取关键词,并用bm25算法与图谱中实体匹配后搜索知识图谱信息,作为GPT2模型的输入。

实验4:首先使用词表匹配的方式,如果没有匹配到相关的信息,再使用BERT + BiGRU + CRF的模型结构提取关键词用bm25算法与图谱中实体进行匹配后搜索知识图谱信息,作为GPT2模型的额外输入。

实验5:具体模型结构与实验4相同,但是在训练时打乱了训练数据。

按照设计好的实验方案进行测试,具体的实验结果如表6所示。

表6 实验结果

2.4 实验分析

由实验1可以看出,GPT2生成模型对应的B1、B2和G值极低,因此不加额外知识库信息的对话生成模型不足以满足医疗领域专业型对话系统的要求。实验2和实验3的实验结果相差不大,但是相比于实验1的方法B1、B2值和G均有了较大的提升,说明在添加了知识图谱的常识信息后,词表匹配以及深度学习模型进行特征提取均能将有效的常识信息添加到模型的输入中。对比实验2、3与实验4,在混合了两种常识搜索方式后,B1的值分别提升了0.118和0.163,B2的值分别提升了0.091和0.067,G也有了0.02以上的提高,证明了混合搜索方式的有效性。只用词表搜索不能在全部的测试语料中匹配到相应的实体信息,这时就需要在没有匹配到对应实体时调用深度学习模型来进行关键词的匹配以及有效常识信息的搜索。实验5将训练集中的数据进行打乱,对比于实验4,B1、B2的值和G分别有了0.015、0.012和0.017的提升,这说明训练数据的不均衡分布对实验效果有着影响,在打乱了数据后能有效提高端到端生成对话模型的效果。

表5中列出的对话数据样例,说明本文提出的对话生成方法能回复医疗专业领域的患者问题,证明了本文提出的融合知识图谱的端到端对话构建方法的有效性。

综上所述,本文提出的方法将医疗知识图谱中的常识信息融合进端到端对话系统中去,能够有效提高对话系统的效果。

3 结束语

本文提出了一种融合知识图谱的端到端对话系统,使用GPT2模型结构的同时,添加了知识图谱的常识性信息,从而完成多轮对话。实验结果表明本文提出的方法具有较好的效果,可以满足医疗领域专业型对话系统的要求。但模型生成的部分回复存在语句不连贯的问题,接下来的研究方向就是怎样使回复语句更连贯,以及更符合用户的口语习惯。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!