《临床心血管病杂志》
0 引 言
目前中国心血管病(CVD,cardiovascular disease)病人数量高达2.9亿。随着城市化进程的加速,人口老龄化问题突出,及吸烟、身体活动不足、不合理膳食等不良生活习惯的盛行,心血管病患病率持续居高不下,并呈现出上升趋势。心血管病死亡率占据首位,2018年心血管病死亡分别占农村、城市居民疾病死因的46.66%、43.80%[1]。心血管病住院总费用快速增长,国家心血管病的负担逐渐加重,心血管病已经成为重大的公共卫生问题。虽然国内已经展开一系列心血管病社区防治工作并取得一定的成效,心血管病医疗质量也在不断提高,但是随着国民心血管病多个危险因素的流行趋势明显,防治工作仍然面临着严峻的挑战[2]。
自动问答系统作为互联网时代信息获取的一种有效途径,为心血管病的防治带来了新的机遇,成为进一步加强心血管病知识普及的一种手段。自动问答系统与书籍、海报、杂志等传统的信息获取方式不同,与传统的搜索引擎也有所区别,目的在于提高信息获取的效率,可以根据用户提出的问句,直接返回精准而简洁的答案。本文以现有的心血管病知识图谱为数据支持,构建一个基于KV-MemNN(key-value memory network)模型的心血管病自动问答系统,通过挖掘知识图谱中有价值的信息,加速心血管病知识的普及。
1 知识图谱简介及预处理
本文使用的心血管病知识图谱共包含1 173个实体,2 381组实体关系和实体属性。实体包括心血管病、症状以及药物;实体关系包括疾病与症状之间的关系、疾病与药物之间的关系,在此分别定义为相关症状、常用药物关系。一个以心肌梗塞为中心的知识图谱示例,如图1所示。可知一种疾病往往对应多个相关症状关系、多个常用药物关系。
为了确保知识图谱的可用性,对其中的数据进行检查与修正。
(1)数据存储于5个.csv文件中,存在个别疾病名称不一致的情况,需要统一修改为正确的名称;
(2)个别疾病名称与数据来源中的名称不同,需要修正为数据来源中的名称;
(3)该知识图谱主要抽取自39健康网的疾病百科,又有部分其他来源的补充信息,存在少量表述方式的不一致,个别疾病与症状重名,但数量极少,影响不大,不作处理。此外,疾病的别名内容比较复杂,除了包含传统意义上的别称,还可能包含疾病的父类、某种子类、某种特征等等,导致疾病的一些别名可能与其他疾病或症状重名,需要对冗余的别名进行清理。为了完全避免部分别名与其他疾病或症状的重名问题,将一种疾病的所有别名作为一个整体看待。
处理后的知识图谱以SPO三元组(subject, predicate, object)的形式统一存储,并用实体表保存疾病、药物、症状三种实体。
图1 以心肌梗塞为中心的知识图谱示例Fig. 1 A knowledge example centered on myocardial infarction
2 基于KV-MemNN模型的自动问答
本文运用Facebook AI研究院的Miller等人提出的KV-MemNN模型实现基于心血管病知识图谱的自动问答,这个过程主要分为两部分:问答数据集构建和自动问答实现。问答数据集构建为自动问答提供了数据支撑,自动问答实现则包含了最为关键的数据处理和模型计算过程。
2.1 问答数据集构建
问答数据集依赖于知识图谱构建。针对知识图谱中的关系和属性,设计不同类型的问句模板。已知知识图谱中包含疾病与药物之间的常用药物关系、疾病与症状之间相关症状关系、疾病的别名属
性,以此设计根据疾病查询常用药物、相关症状、别名三种类型的问句模板。为了进一步丰富问句类型,对常用药物、相关症状两种关系进行逆向拓展,得到药物与疾病之间的依存关系、症状与疾病之间的依存关系,以此设计根据药物查询可治疗疾病、根据多个症状排查疾病两种类型的问句模板。问句模板通过39健康网、百度知道以及使用搜索引擎检索到的相关网页信息搜集整理所得,与知识图谱中对应的三元组进行整合。
整合过程分为两种情况:其一是问句模板与单个实体整合,以相关症状关系为例,由于一种疾病对应多种症状,问句模板与同一种疾病的若干三元组进行整合,得到的问句以多个症状为答案;其二是问句模板与多个实体整合,只应用于相关症状的逆向关系,找到多个症状所对应的共同疾病,将问句模板与这些症状进行整合,得到的问句以共同疾病为答案。
问答数据集由五种问答数据整合,最终得到13 062组问答数据,每种问答数据以大约8∶1∶1的比例分别作为训练集、验证集、测试集。训练集中包含所有问答模板。