基于甲状腺知识图谱的自动问答系统的设计与实现
2018-09-05马晨浩
文章編号: 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