基于甲状腺知识图谱的自动问答系统的设计与实现
   来源:智能计算机与应用     2018年09月10日 02:01

那些健康大知识

文章編号: 2095-2163(2018)03-0102-06中图分类号: 文献标志码: A

摘要: [HT6SS〗随着人们生活水平的提高,甲状腺结节类疾病日渐成为当代人的一种常见疾病,而中国国内医疗资源分布不均,造成了大医院人满为患,医生名下病人多,病人看病时间长等问题,许多病人想要看病在花费大量金钱的同时还要耗费大量时间。随着互联网技术以及计算机技术的发展,越来越多的病人为了节省时间,在赶往医院前,往往会在网络上对自己的病症进行相关查询,所以市面上出现了医生网上答诊和病人在线问诊的医疗咨询系统,一对一为病人回答问题。此举将医生提供给不能定时提问的网上咨询的患者的同时、会造成医院内医生资源更加紧缺的状况,且网上在线系统大多仅包括导诊流程,即帮助病人在前往医院确诊前对自己的病症有初步了解,并未涉及到病种诊断治疗,无法达到节约病人的时间的目的。 因此,针对上述状况,本文选取甲状腺结节类病种数据为研究对象,对甲状腺真实数据进行重点的分析,创建甲状腺知识图谱,基于该知识图谱,设计并实现一个面向甲状腺诊疗的自动问答系统,本系统可以有效地回答病人在甲状腺类疾病方面的用药以及检查等方面的问题,节约病人问诊时间的同时,医生可以使用该系统对患者以及处方等信息进行相关查询,更加快速便捷,节约了医生的时间。

关键词: automatic question answering system based on thyroid knowledge map

(School of Computer Science and Technology, Donghua University, Shanghai 201620, China)

Abstract: With the improvement of people's living standards, thyroid nodule disease has become a common disease of the contemporary people. While China's domestic medical resources are unevenly distributed, the top-three hospitals are mainly concentrated in Beijing、 Shanghai and Guangzhou, resulting in overcrowding in large hospitals. It is required that many patients spend long time and a lot of money for seeing a doctor. With the development of Internet technology and computer technology, more and more patients often search for their own conditions on the Internet before going to the hospital to save time. So there is a medical consultation system on the market where doctors give online consultations and patients online consultations. One-on-one answers questions for the patient, which provides doctors with patients who do not regularly ask online consultation. At the same time, the situation of doctors in hospitals will become more scarce, and most of the online online systems only include the consultation process, which means that they can help patients to get a preliminary understanding of their own conditions before going to the hospital for diagnosis. The diagnosis and treatment of the diseases could not be involved and the purpose of saving the patient's time could not be achieved. Therefore, in view of the above situation, this study selects thyroid nodule disease data as the research object, analyzes the characteristics of the thyroid true data, creates a thyroid knowledge map, further designs and implements an automated question and answer system for thyroid diagnosis and treatment based on this knowledge map. The system can effectively answer questions about the patient's thyroid diseases such as medications and examinations, save doctors' time, and doctors can use this system to make relevant queries on patients and prescriptions, which is more rapid and convenient.

Key words:

作者简介:

收稿日期: 引言

为了解决病人挂号难,看病难的问题,各家医院均纷纷出台利民举措。专门地,针对甲状腺结节类疾病,许多医院及网站就推行了该类疾病的病情问答版块,如:好大夫在线网[1]、寻医问药网。病人可以通过互联网与医生开展在线的语音或文字的交流,但此举却将消耗大量人力物力,更多的医生在线诊疗就意味着更少的医生会在一线的医院对病人施以治疗,由于病人在线问诊时间的不确定,医生的在线等待就避免不了时间的浪费。为了缓解医疗压力,提高医疗资源的利用率,降低医疗支出,本文研究建立有关甲状腺类疾病信息的知识图谱,并基于该知识图谱设计实现自动问答系统,患者、医生、医院通过使用系统可以迅速获取自己需要了解的信息,从而达到高效化、自动化、信息化服务于社会的目的。

英国数学家图灵[2]在1950年首次提出了 “机器智能”和“图灵测试”[3],这可视作为自动问答系统的前身。图灵测试是使测试者—输入问题的用户,对计算机进行自然语言问题的输入,通过输出结果判断计算机是否具备人的智能。如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,可以用作问答系统。

国内外在自动问答系统方面的研究已历经了较长的发展时期。上世纪60到70年代的问答系统主要依赖搜索技术,对查询相关的文档进行检索,例如Yahoo早期的answer and quora。上世紀70年代开始,自动问答系统大多以结构化知识库为基础,将用户输入的自然语言转换为机器可识别的结构化查询语言,通过搜索知识库最终得到结果。该阶段的研究实例主要包括SQL[4]、SPARQL[5]等。80年代以来,人工智能即进入了蓬勃发展期,而且其研究成果层出不穷,在很多项目均有重大斩获。而如今,基于知识图谱的自动问答系统已经成为问答系统的主流,众所周知的SIRI就是以知识图谱为基础设计并研发成型的,IBM的Watson系统[6]也是国外认知计算[7]系统的成功范本,基于知识图谱的问答系统包含信息分析、自然语言处理和机器学习领域的大量技术创新,能够帮助使用者从大量非结构化数据中得到所需的具体信息。

目前,随着人们生活水平的提高,人们对于医疗健康的需求也逐年增长。但患者基数大,健康资源供给远远滞后于需求的增长,并呈现分布不均衡的状态[8]。全国三甲医院主要集中分布在中、东部地区,西部地区健康资源稀缺。庞大的健康需求将推动寻找研发更加有效的方式为人们提供健康服务。近几年,国内居民医疗支出呈现递增态势,也给在线医疗产业带来了发展契机,同时这也给自动问答系统的技术研究创造了实践机遇与应用空间。目前国内并没有甲状腺结节类疾病专用的自动问答系统,本文研究的即是甲状腺类疾病领域的自动问答系统,在将大量有关甲状腺类疾病信息做出有效汇总整合后,创建生成了甲状腺知识图谱,基于该知识图谱设计给出了有关甲状腺类疾病的自动问答系统。用户输入问题,在系统中对输入的自然语言进行命名实体识别、依存句法分析等处理,转换为Sparql查询语言,通过识别语义,匹配不同语义的不同模板在知识图谱内进行查询,由此获取到答案。最后,在Java平台上实现了基于甲状腺知识图谱的自动问答系统,通过多次实验初步证明了系统的可用性。

1系统架构

系统以用户在医院的问诊流程为基础,根据用户关心问题构建知识图谱,并遵循自动问答系统的问答流程,本系统设计有良好的人机交互界面,用户通过输入有关甲状腺相关的自然语言问题,经过系统处理后得到简单准确的自然语言答案。

整个系统分为3部分,可对其阐释如下:

(1)是用户在浏览器所看到的人机交互界面,用户在系统外部界面输入自然语言问题。

(2)是存储甲状腺类疾病相关信息的知识图谱,根据存储甲状腺相关信息Sql Server数据库设计知识图谱。

(3)系统内部的功能处理模块,以(2)中涉及的知识图谱为基础,系统内部接受(1)中用户输入的问题后,将该问题进行命名实体识别与词性标注,根据识别后的实体,将用户输入的自然语言问题划定分类,再根据不同类别,匹配不同的查询模板,使用模板研发得到用户求索问题的最终答案。研究可得,系统设计架构如图1所示。

2相关技术

2.1甲状腺知识图谱的构建

本系统甲状腺知识图谱根据Sql Server数据库[9]中存储的三甲医院甲状腺类疾病信息构建,包括患者信息实体、药品使用信息实体,诊断数据实体等、实体之间存在很多联系,由于数据库内数据整齐,可以规范解析实体和实体之间的关系来形成整个知识图谱,利用形成的知识图谱提供具体且丰富的语义关系,用户可以更为直接地观察到实体数据以及实体的联系。

2.1.1构建流程

本次设计的总体流程为:首先,根据数据库中不同表的不同数据,结合初始甲状腺结节就诊记录,提炼出甲状腺知识图谱的概念层,构建概念分类树并抽取数据之间的关系。而后,将表中数据、即实体填充进概念层中,以三元组、即<实体,关系,实体>的形式,得到完整的甲状腺知识图谱。

2.1.2概念层设计

对甲状腺数据库中数据进行分类,研究得到如下医学实体定义。

定义1甲状腺医学实体包括甲状腺患者实体、基本信息实体、甲状腺诊断结果实体、甲状腺用药实体等。

在定义了甲状腺医学实体之后,可以构建甲状腺知识图谱的概念分类树如图2所示。

定义2甲状腺事实关系实体甲状腺事实关系表示不同甲状腺医学实体间产生的联系,如<病人,入院诊断,甲状腺肿>。其中,病人、甲状腺肿均为甲状腺医学实体,而入院诊断为甲状腺事实关系实体,甲状腺事实关系类型主要包括内容可见如下:

(1)X has Y关系:表示实体Y隶属于实体X的关系。

(2)X attribute_of Y 关系:表示实体Y拥有一个属性实体X。

(3)X use drug Y 关系:表示病症实体X使用药品实体Y。

(4)X diagnosis Y 关系:表示检验报告实体Y的诊断结果为实体X,实体间为诊断关系。

在给出了甲状腺医学实体和甲状腺事实关系实体定义后,甲状腺知识图谱的概念层的定制设计可如图2所示。

2.1.3实体填充设计

在探讨了概念层设计后,可以实体填充方式创建本体,通过实体映射的方法,将概念层中的概念与数据库中实体一一对应,本文采用的是BFS广度优先算法,对创建的概念树进行填充,得到知识图谱。输入已得到实现的概念分类树T、概念层中的概念集合C以及定义后的实体集合E,输出研发运行后的甲状腺知识图谱G,保证输出后的知识图谱是以三元组的形式构建的。算法伪代码如下:

map = CreateMap(C,E)BFS(T,map) Enqueue(root); While(!queue) Node=dequeue(); For v in ChildrenNodes(node):if v is leaf node T.add(map.get(v.c)); Enqueue(v);CreateSequentialTuples(T)[JP3]E+Relation+Time=ExtractFromTree(T);[JP] For head in E For tail in E For relation in RelationsortedTuples = SortByTime(head,relation,tail,Time)k = FindKthRel(sortedTuples);Tuples.add(head,rel|k,tail)return Tuples至此,研究得到实体填充的运行流程可表述为:首先,创建映射表。根据实体属于概念树中某一概念的原则,构造得出概念到实体间的映射表如图3所示。[PS马晨浩3.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]图3映射表[JZ]Fig. 3Mapping table[HT5SS][ST5BZ][WT5BZ]其次,根据一一对应的映射表,进行实体填充。通过BFS广度优先遍历将映射表中的实例实体存放在对应的子节点中,使每个实体都有自己的属性以及属性值,如患者A属于患者实体类,则将“患者A”实例化为患者实体的姓名属性值。[JP3]最后,抽取实体和关系,综合确定三元组,形成最终的甲状腺知识图谱,以rdf文件的形式送入存储。[JP][BT5]2.2用户自然语言问题处理[JP2]在预期构建了甲状腺知识图谱后,系统首先对知识图谱的各实体进行存储,将所有实体存入表中,方便日后查询。此后将立足于研究用户提问的部分,即需要对用户输入的自然语言问题进行处理,得到计算机查询语句后才能在知识图谱中进一步展开查询。[JP]对于用户提出的自然语言问题,系统内部对其实现了一定的预处理。首先进行中文分词、命名实体识别,在得到各实体后,就是辨识用户问题的类别。不同类别的问题,将调取系统中不同的模板,并将提取出的关键词辅以依存句法分析,得到关键词的语法关系,再与存有知识图谱实体的表经过测试比对后,将比对成功的关键词,根据分析后的语法关系,传入模板,执行查询。2.2.1最大匹配算法设计综述目前,中文分词大多采用最大匹配算法进行操作。最大匹配是指以词典为基础,撷取词典中最长单词作为首个选取字数量的扫描串,在词典中依序搜索扫描(为提升扫描效率,还可以依据字数不同设计多份字典,而后则根据字数从不同字典中分别来提速扫描)。而最大匹配算法,则可分为最大正向匹配算法和最大逆向匹配分词算法。这2个算法都将定义一个最大词长m。其中,最大正向匹配算法在收到自然语言字符串后,从左向右取待切分汉语句的m个字符作为匹配字段,切分出词长不大于最大词长的候选字符串,将候选字符串在已建立好的词库中进行查询,若匹配成功,则将这个匹配字段作为一个词切分出来。 若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。与最大正向匹配算法不同,最大逆向匹配算法由右至左对字符串进行切分,若匹配不成功,则将匹配字段的最前一个字去掉。一般来说,逆向匹配的切分精度略高于正向匹配。统计结果表明[10],单纯使用最大正向匹配错误率为1/169,单纯使用逆向最大匹配错误率则为1/245。为了满足系统内部需要,本文结合正向匹配和逆向匹配算法的优点,采用双向最大匹配算法。双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果加以衡量比较,从而决定正确的分词方法。根据Sun等人的研究[11],中文方面大约90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确;只有大约9.0%的句子对于这2种切分方法得到的结果不一样,但其中必有一个是正确的;而仅有少于1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最大匹配法和逆向最大匹配法切分不同但2个都不对。因此可知,双向最大匹配法能得到更高的准确率,这一点将是毋庸置疑的。算法的伪代码设计内容如下:Vector list_zheng=ZhengXiang(String) //正向匹配算法分词Vector list_ni=NiXiang(String)//逆向匹配算法分词If(list_zheng.size()!=list_ni.size()){//分词结果词数不同 return 分词数量较少的list}else{//分词结果相同return任一list}2.2.2技术研究处理在双向最大匹配算法保证了分词的准确度后,还需识别文本中有关甲状腺结节病症及专用词的实体,即对文本进行命名实体识别,本系统以分词后的结果,使用基于词典的方法对文本提供处理。在该方法中,多采用语言学专家手工构造规则模板[10],选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词(如尾字)、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立。词库的建立以前期研究给出的知识图谱为基础,由于知识图谱是以三元组<实体,关系,实体>的形式存储在rdf[12]文件中。rdf属于一种xml应用,存储格式整齐,是处理分布式结构信息的有效工具,将实体和关系取出分别存储,组建出基于甲状腺知识图谱实体的词库。在用户输入的自然语言文本经过分词处理后,系统借助哈工大语言云平台的LTPParser[13]接口,对文本进行依存句法分析。在得到文本各分词的成分后,将分词结果与词库内实体进行比对,比对成功的实体和关系,可以最终植入查询模板[14],形成完整的Sparql查询语句,在系统中进行查询。如自然语言文本“病人A的入院诊断是什么?”,经过实体识别及句法分析正确得到该问句主语为“病人A”,关系为“入院诊断”,需要得到对宾语的查询,而不会将“入院诊断”视为主语,对“入院诊断”进行相关查询。2.2.3问题分类设计在用户进行分词后,同时需要对用户提出的问题划定分类。本系统问题主要可分为4类。研究可得各类型设计阐释如下。(1)列表类问题。带有“哪些”等关键词的问句在进行自然语言处理后,获取实体Keyword放入列表类问题模板。得到完整的Sparql查询语言,在甲状腺知识图谱内进行查询,列表类问题模板为:SELECT ?答案 where{< Keyword > ?relation ?答案}[JP3]其中,Keyword为用户的查询目标关键词;由于分类为列表类问题,?relation 为Keyword与Keyword下各实体的关系;?答案为Keyword下与其相关的各个实体,使用一个循环函数,将所有符合Sparql查询语句的实体显示出来,同时呈现出列表绘制效果。[JP](2)计数型问题。带有“有多少”、“数目”、“数量”等单词的问句在进行自然语言处理后,获取实体Keyword。计数类问题模板为:SELECT ?答案 (COUNT(?x)as ?count) where {"<" + Keyword + ">" + " ?relation?答案 " +" }GROUP BY ?x order by ?count ";利用该函数,即可获得Keyword下实体的数目,得到最终问题的答案。(3)最值类问题。最值类问题分为最大值和最小值。带有“最大”、“最高”、“最小”、“最低”等单词的问句在进行自然语言处理后,获取问题目标Keyword的过程中,可推得设计定义如下。① 最大值类问题模板SELECT ?数值类实体 ?数值 where{?主体 ?relation1?数值类实体}.ORDER BY DESC(?数值) LIMIT 1② 最小值类问题模板SELECT ?数值类实体 ?数值实体 where{?主体 ?relation1?数值类实体}.ORDER BY ASC(?数值) LIMIT 1[JP2]其中,主体是指问题的具体方向,数值类实体是指实体内含有数值属性的实体,如甲状腺结节检查报告实体中含有各种指标。总地来说,甲状腺结节为主体,检查报告为数值类实体,各指标则为数值实体。[JP]研究中,需要对各数值进行排序,而数值分散在各数值类实体中,因而在最值类模板中,就要将数值类实体经过第一轮查询取出,再在所有查询出的数值类实体中对各数值做出排序,由此获得了用户所需的最值答案。(4)事实类问题。将带有”是什么“、“是谁”、“如何使用”等关键词的问句均列为事实类问题。在事实类问题中,主要对知识图谱中的各实体的特征属性,进行查询,根据用户的具体需求,设计得出功能模板的分类内容如下。① 基本事实类模板SELECT?答案 where{?主体 ?关系 ?客体}基本事实类模板是对用户提出的简单问题而构设的基本查询。根据对“谁”、“什么”等代詞的成分分析判断问句需要得到的答案是作为主体还是客体,得到代词在问句中的成分后,将提取出的实体送入模板中的相应位置进行查询。② 用户手术查询类模板While(病人信息未全部遍历){SELECT?病人 where{?病人 ?relation ?病人信息}}用户输入自己病症的信息,将所有信息送入模板进行多次查询,得到相同状况的病人后,再对该病人信息设定手术查询,查询同等病况的患者是否做过穿刺手术,最终统计得到病人手术的比例。在将实体进行模板匹配后,通过在甲状腺知识图谱中的查询,系统最终可以得到用户所需的答案,并通过图形界面提交给用户。[BT4]3实验结果与分析[BT5]3.1实验一 计数类问题[HT5H]输入[HT5SS]:<实体>有多少?[HT5H]实例输入[HT5SS]:34岁的患者有多少个?[HT5H]预期结果[HT5SS]:83个(人工计数知识图谱中34岁患者的数目)。实验运行结果如图4所示。[PS马晨浩4.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]图4计数类问题测试[JZ]Fig. 4Counting class problem test[HT5SS][ST5BZ][BT5]3.2实验二 列表类问题[HT5H]输入[HT5SS]:<实体>都有哪些?[HT5H]实例输入[HT5SS]:40岁的患者都有哪些?[HT5H]预期结果[HT5SS]:[JP4]列举出所有年龄为40岁患者的病历号。[JP]实验运行结果如图5所示。[PS马晨浩5.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]图5列表类问题测试[JZ]Fig. 5List problem test[HT5SS][ST5BZ][WT5BZ][BT5]3.3实验三 最值类问题[HT5H]输入[HT5SS]:<实体>的<最大值,最小值>是多少?[HT5H]实例输入[HT5SS]:[JP4]患有甲状腺结节的最大年龄的患者是?[JP][HT5H]预期结果[HT5SS]:最大年龄患者的病历卡号及其年龄。实验运行结果如图6所示。[PS马晨浩6.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]图6最值类问题测试[JZ]Fig. 6Maximum class problem test[HT5SS][ST5BZ][WT5BZ][BT5]3.4实验四 事实类问题[HT5H]输入[HT5SS]:<药品名>的使用方法。[HT5H]实例输入[HT5SS]:葡萄糖酸钙注射液如何使用?[HT5H]预期结果[HT5SS]:得到知识图谱中药品的使用方法。实验运行结果如图7所示。[PS马晨浩7.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]图7事实类问题测试[JZ]Fig. 7Fact class problem test[HT5SS][ST5BZ][WT5BZ][BT4]4结束语随着IT技术的不断发展,自动问答系统也正日趋完善。研究可知,有关医疗行业的自动问答系统势将更加贴近病人的实际需求,而现今社会上问世的有关医疗方面的问答系统却多为在线诊疗,即采用一对一问诊的方式来解答用户问题。迄今为止,自动问答系统并不多见,而以知识图谱为基础的自动问答系统则尚属罕见。本系统基于甲状腺知识图谱展开设计。知识图谱可以存储大量数据的同时,还在后续的数据维护方面相比较传统知识库而言也占据了显著优势。在研究过程中,随着对知识图谱内有关甲状腺类疾病信息的增加,系统可以处理回答的问题种类也将增多,准确度也会获得有效提高。但是由于目前知识图谱内信息种类较少,决定了可以回答的问题种类至今并未得到明显突破,这也将是未来亟待改进的研究方向之一。[HS2][HT5H]参考文献[HT][WT6B1][ST6BZ][HT6SS][1] [ZK(#〗[HJ*2] 薛书峰. 互联网医疗的定价影响因素研究[D]. 南京:南京大学,2015.[2] PEREIRA L M.Turing is among us[J]. Journal of Logic and Computation,2012, 22 (6):1257-1277.[3] KORUKONDA A R. Taking stock of Turing test: A review, analysis, and appraisal of issues surrounding thinking machines[J]. International Journal of Human-Computer Studies, 2003,58 (2) : 240-257.[4] 詹晨迪. 基于知识库的自然语言问答方法研究[D]. 合肥:中国科学技术大学,2017.[5] 郭少友,魏朋争,洪娜,等. 四种SPARQL查询构建器及其比较研究[J]. 情报科学,2015,33(3):80-84.[6] 孔鹿. IBM的Watson如何改善中国医疗[N]. 第一财经日报,2016-08-30(A08).[7] 索传军,盖双双,周志超. 认知计算—单篇学术论文评价的新视角[J]. 中国图书馆学报,2018,44(233):50-61.[8] 中华医学会内分泌学分会,中华医学会外科学分会,中国抗癌协会头颈肿瘤专业委员会,等. 甲状腺结节和分化型甲状腺癌诊治指南[J]. 中国肿瘤临床,2012,39(17):1249-1272.[9] 蒋晓健,郑力,梁宇澜,等. 基于SQL SERVER的面向对象数据库的构建[J]. 计算机工程与应用,2004(4):178-181.[10]曾田日,王晋国. 基于统计的云搜索中文分词算法[J]. 西北大学学报(自然科学版),2015,45(4):568-572.[11]孙茂松,邹嘉彦. 汉语自动分词研究评述[J]. 当代语言学,2001,3(1):22-32,77.[12]佟强. 数据库支持的RDF(S)构建与存储方法研究[D]. 沈阳:东北大学,2015.[13]杜泽宇. 基于中文知识图谱的电商领域问答算法设计与系统实现[D]. 上海:华东师范大学,2016.[14]张喜. 基于语义模板与知识库的智能导购机器人系统的研究与实现[D]. 北京:中央民族大学,2012.[ZK)][FL)]

实体 甲状腺 图谱