《基于知识图谱的医疗问答系统设计与实现》12000字_第1页
《基于知识图谱的医疗问答系统设计与实现》12000字_第2页
《基于知识图谱的医疗问答系统设计与实现》12000字_第3页
《基于知识图谱的医疗问答系统设计与实现》12000字_第4页
《基于知识图谱的医疗问答系统设计与实现》12000字_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEI基于知识图谱的医疗问答系统设计与实现目录TOC\h\z\t"中文摘要,1,英文摘要,1,aaa,1,bbb,2,ccc,3,xxx,1"基于知识图谱的医疗问答系统设计与实现 I第一章绪论 11.1研究背景及意义 11.2国内外研究现状 21.2.1知识图谱 21.2.2问答系统 21.3研究内容 21.4论文框架 3第二章基础理论介绍 32.1知识图谱构建理论 32.1.1概述 32.1.2知识存储 52.2问答系统技术 62.2.1基于知识图谱的问答 62.2.2基于语义解析的问答 7第三章知识图谱构建 73.1知识图谱构建框架 73.2知识图谱规模 83.2.1知识图谱实体类型 83.2.2知识图谱实体关系类型 83.2.3知识图谱属性类型 93.3数据获取 93.3.1数据来源 103.3.2数据采集 113.4知识提取 123.4.1实体提取 123.4.2关系提取 143.5基于Neo4j的知识存储 15第四章基于医疗知识图谱实现自动问答 164.1技术框架 164.2支持问答类型 174.3智能问答 174.3.1问句分析 174.3.2问答搜索 174.4基于知识图谱的医疗问答系统前端界面设计与实现 19第五章总结与期望 205.1总结 205.2未来工作与期望 20参考文献 22第1页共32页第7页共24页摘要:互联网已成为人们搜索获取健康与医疗知识重要的途径。一般情况下,用户在查询与医疗健康相关的内容时,搜索引擎仅仅提供与关键词近似的网页,且返回结果繁多,而专业医疗类网站相关信息,往往过于专业繁杂,无医疗知识基础的用户无法快速准确的得到真正关心的信息。对于海量数据问题,知识图谱能够结构化知识。因此可以将互联网上的医疗健康知识通过知识图谱技术有效的结合,基于Neo4j图数据库,构建更加准确丰富的医疗领域知识图谱,进而构建医疗智能问答等应用。其次,为了更好地理解用户的意图、更针对地对用户提供更精确的医疗疾病健康知识,智能问答系统能够提高用户获取所需信息的便捷性,因此可以利用医疗知识图谱作为知识库来搭建医疗问答系统。目前,面向大众的即时医疗问答系统较为少见,因此本文所构建的系统能够为大众提供便捷的医疗问答服务,从而缓解上述困境,具有重要应用价值。其次,在中文领域的医疗健康类知识图谱同样较少,因此本文所构建的医疗知识图谱,可以作为智能问答或者信息搜索等应用的知识基础,且方便扩展和迁移,具有广泛的应用前景。关键词:医疗领域知识图谱,Neo4j图数据库,医疗问答系统

第一章绪论1.1研究背景及意义随着互联网在日常生活中的普及,越来越多网民开始使用网络例如百度、谷歌搜索引擎等查询所需的知识信息。2018年“健康与医疗”搜索份额为61.24亿,这个数字占“中国网民科普搜索指数”[1]比例高达66.83%,互联网已成为人们搜索获取健康与医疗知识重要的途径。一般情况下,用户在查询与医疗健康相关的内容时,搜索引擎仅仅提供与关键词近似的网页,且返回结果繁多,而专业医疗类网站相关信息,往往过于专业繁杂,无医疗知识基础的用户无法快速准确的得到真正关心的信息。现存的基于互联网提供在线医疗服务的产品,存在医生咨询服务等待周期不确定、效率相对低下的问题,比如飞华健康网等。基于以上问题,知识图谱为有效的整合并利用互联网上的医疗信息资源提供了一个新的方法和途径。知识图谱逐渐成为人工智能未来发展的关键,它不仅可以结构化的描述现实世界中的各种事物、概念以及它们之间关系,同时知识图谱能够快捷处理大量数据问题。因此可以通过知识图谱技术奖互联网上的医疗健康知识整合起来,通过建立食物、症状、疾病、药品等医疗健康知识之间的关系,搭建一个基于知识图谱的医疗问答系统。此外,智能问答系统可以为用户提供所需的更方便的信息。这种特点可以更有针对性地为用户提供准确的医学疾病和健康知识。所以医学知识图谱被用于建立知识库的医学问答系统。目前,市面上的即时医疗问答系统相对较少,因此本文构建的系统可以为公众提供便捷的医疗问答服务,从而减轻上述难题,具有重要的实践意义。其次,国内医学和健康知识地图也较少。因此,本文构建的医学知识图谱可作为智能问答或信息搜索等应用的知识库,方便扩展和迁移,具有广阔的应用前景。1.2国内外研究现状1.2.1知识图谱知识图谱[2](KnowledgeGraph)由Google公司发布。在国外,知识图谱领域的研究已日渐成熟,已经构建了许多大规模的知识图谱。UMLS(theUnifiedMedicalLanguageSystem)[5]、Drug-Bank[10]、DiseaseOntology等都是较为完善的医疗领域知识图谱,它们为医疗领域的信息化建设提供了许多便利。在国内,近年来医疗知识图谱方面的相关研究包括解放军医学图书馆开发的医学知识服务系统,以及由上海曙光医院研发的中医药类知识图谱[4]等。但相较国外,国内由于起步晚,医疗知识图谱领域整体水平低于国外,总体来说,对于医疗领域的相关信息和研究相对较少。1.2.2问答系统国外对于问答系统的研究较早,1996年,第一个问答系统“Eliza”在美国诞生。IBM的WatsonHealth沃森机器人,它结合了知识图谱和传统的问答系统,可用于问答应用程序。Terol[6]等使用自然语言处理技术分析问题,形成逻辑表达形式,利用UMLS和WordNet在知识库中搜索回答。在国内,王昊奋[4]等人构建出了基于中医的知识图谱,并将其应用到医药问答。近年来,丁香医生等医疗领域相关网站出现,会有线上医生及用户问答板块,但是无法实时自动回答,并且无法使用医疗信息来形成知识图谱。1.3研究内容本文设计并实现了一个基于知识图谱的医学问答系统,可以满足用户对医学联合会健康信息的需求,并实时回答用户提出的问题。此外,还添加了可视化功能,以在充分利用知识图形的同时增强用户体验。首先构建医疗知识图谱,使用网络爬虫技术通过需求分析和互联网上的医学信息从医学专业网站获取相关医学知识数据,然后通过图谱构建技术对知识进行组织和处理,最后使用规则和词典对于每个实体与医学实体的关系和Neo4j图数据库用于存储和组织医学知识图。其次,对于医学问答系统算法,针对语义分析问题可以转化为分类问题,通过问题的类别查询问题的答案。针对问题检索模块的处理,本文对每个类别的查询建立了查询模板,采用图数据库Neo4j自带的Cypher查询语言对各类别的关键字在知识图谱上进行匹配查询,找到问题对应的答案。最后采用Streamlit的UI框架搭建前端界面,提供医疗知识可视化服务。1.4论文框架本文分为五个章节,其具体的组织如下所述:第一章为绪论。在阐述研究背景和意义的同时,还介绍了知识图谱和问答系统的研究现状,然后阐述了本文的主要研究内容和论文写作框架。第二章为基础理论介绍。本章详细介绍了实现知识图谱和问答系统的相关技术理论。第三章为知识图谱构建。从知识图谱构建的步骤出发,首先是知识图谱构建的知识获取,从数据的来源考虑,介绍了知识来源及获取知识的相关步骤。其次介绍了知识图谱构造的知识提取部分。最后,介绍基于的知识存储。第四章为基于医疗知识图谱实现自动问答。介绍了问答的问句分析和问答搜索,最后介绍了采用Streamlit的框架搭建问答系统前端界面的方法。第五章为总结与期望。对本文研究成果进行总结和反思,并对今后工作进行梳理,针对不足之处提出了部分改进思路。第二章基础理论介绍2.1知识图谱构建理论2.1.1概述知识图谱[8]本质来说,是由实体节点和表示实体间关系的边为主体,组成的结构化语义网络。一般而言,数据层和模式层是知识图谱的组成部分,因此构造知识图有两种不同的方法:(1)自下而上的思路,它首先分析获取的数据,然后通过诸如实体识别和关系提取之类的技术获得实体、属性和关系,然后在此基础上对它们进行分类和总结。在此过程中,上级可以逐渐抽象,在概念层次结构的末尾,添加了一个集成的知识图。(2)自上而下的思路,首先建立本体的概念层,即模型层,然后建立数据层,也就是根据模型层的结构添加和更新实体关系。在实际构建过程中,通常不单独使用这些构建方法中的一种,一般是结合这两个领域的特征和各自领域的需求来考虑这两个方法。图2.1为知识图谱通用构建框架。图2.1知识图谱通用构建框架组织知识图谱的构建,首先要依据数据来源的情况和特点,进行分析,然后在此基础上利用不同的技术或者策略,得到这些数据中存在的实体和它们之间存在的关系,最后结合领域需求等因素,使用适宜的存储方式存储相应知识。要构建知识图谱首先是使用实体、关系和属性抽取等知识抽取技术,获得数据中包含的知识,因为数据包含不同的形式,例如结构化数据,半结构化数据和非结构化数据。实体抽取即抽取出构建知识图谱所必要的实体名称以及有意义的命名实体。实体抽取可以分为以下两种方法:(1)基于统计模型的方法。首先,需要命名数据集,然后使用此结构化数据来训练和微调所生成的算法模型。近年来,随着深度学习的发展和应用,深度学习在实体识别领域也得到了广泛的应用。(2)基于规则词典方法。首先,分析原始数据中存在的一般规则,然后根据分析结果制定相应的规则,然后使用这些规则过滤数据中的实体;关系抽取一般需要事先定义实体与实体之间关系的抽象概念。其目的是,经过实体抽取抽取出实体之间的关系,得到<实体,关系,实体>的三元组。关系抽取可以分为以下两种方法:(1)基于特征的方法。为了根据段落的上下文提取有用的信息,以句法或语法为特征进行相应的训练;(2)基于规则的方法。通过分析文本的结构和语言特征以及实体之间的关系,制作规则模板提取关系属性提取的目的是为提取的实体添加属性。属性提取和关系提取本质上是相互联系的,因此可以采用相似的方法进行提取。由于从原始数据中提取的知识不一定形成标准的结构,不同的数据源往往存在冗余或冲突,因此有必要对提取的知识进行集成。实体对齐是指提取的实体结果与定义的本体概念相对影。然后对关系进行融合,检查是否存在冗余和冲突,并根据规则或手工进行相应的过滤和融合。知识抽取后,通过对已有图谱的一系列推理,对原有知识地图进行扩展,生成新的知识。通常,在知识映射过程中,所提取的知识或多或少会有偏差,因此需要一套质量评价体系作为辅助。质量评价主要通过人工手段进行控制,主要目的是提高现有知识图谱的质量和可靠性。2.1.2知识存储知识图谱中,图中的节点和节点之间的边分别代表实体和实体之间的关系。目前主要有RDF三元组和属性图两种表示模型。1、RDF三元组模型资源描述框架[7](ResourceDescriptionFramework),也简称为RDF。RDF使用多个三元组表示模型,每一个三元组为<Subject,Predication,Object>SPO三元组,这种结构类似于知识图中实体节点和节点间边的结构,因此知识图谱中的每一个<entitynode,edge,entitynode>都可以用spo三元组来表示,进而用几个spo三元组来表示知识图谱。2、属性图模型属性图模型由节点对应的实体和连接节点的边对应的实体组成,即用多个节点和边来表示图。在模型中,每个实体节点使用一个唯一的标识符来标记它所表示的实体。类似地,对于每条边,它也有一个唯一的标识符来标记它所表示的关系。同时,每个边可以用来连接头节点实体和尾节点实体。图2.2展示了一个简单的属性图模型。图2.2实体关系图模型图使用非结构化方法将数据连接存储在知识图谱中。此数据结构在关系查询中可能更有效。对于上述两个模型,对于RDF三元结构,通常使用Jena和Virtuoso这样的数据库,对于图模型结构,有Neo4j[3]这样的数据库。2.2问答系统技术问答系统[9](QuestionAnsweringSystem,QA),可以使用自然语言与用户进行交互,目的是回答用户提出的问题并帮助他们获得所需的知识数据。一般来说,我们的语言表达千差万别,所以自然语言问句就会有多种形式,也会区别于知识库中的知识形式<实体节点,边,实体节点>。例如我们问:“二尖瓣狭窄的治疗周期是多久?”,所以就要在知识库中找到“二尖瓣狭窄”和“3个月”这两个实体,以及寻找实体之间的关系“治疗周期”。基于知识图谱的问答和基于语义解析的问答会在本文中用到。2.2.1基于知识图谱的问答基于知识图谱的问答(KnowledgeBasedQA,KBQA),首先通过对用户提出的问题进行实体链接抽取出问句中的实体,然后在此基础上进行属性理解,通过意图识别找到在知识图谱上对应的属性,最后使用结构化的查询方式在图谱上找到答案。知识图的问答基于知识库作为结果的来源。它主要考虑如何将用户的自然语言问题转换为基于知识库的结构化搜索,比如,回答“口腔溃疡应该怎么治疗?”对于这个问题,我们需要将其变换为sql查询或其他结构化查询,关键的问题是属性推断。而对于属性推理又需要解决问题表示和语义匹配问题。对于问题表示,任意一个问答系统都需要有一个具有代表性的问题表示,能够帮助识别出拥有一样语义的问题,又能够区分出问题的不一样的意图。对于问句语义的匹配,又该如何把问句表示关联到知识库的结构化查询中呢?可以使用基于模板的方法,直接用所定义好的模板对句子进行表示。2.2.2基于语义解析的问答针对自然语言,首先进行语义解析,然后转化为逻辑表达形式,从而让知识库理解该表达式,进一步可以把相应的查找语句在知识库中去查询知识,最后可以得到所需的结果答案。语义解析的问答中有语义解析和查询执行两个阶段。其中,最重要的阶段是语义解析阶段,一般分为实体识别、词汇映射和语义组合:(1)实体识别。抽取出问句中的实体、以及实体间的关系和属性;(2)词汇映射。把句子中的单词投射到知识库中对应的有关联性的实体元素的关系中去,一般能够根据构造出的词汇表去实现投影,或者可以对预定义好的模板去关系匹配;(3)语义组合。将问句识别抽取出的实体与知识库中的关系属性对应后,通过某种规则进行组合,形成对应的结构化的逻辑形式。语义解析后,采用其对应的数据进行查询执行,这里需要一种逻辑语言来处理逻辑查询,以达到对知识库进行查询的目的。最后,将逻辑形式转换为相应知识库的搜索语言以进行查询,例如RDF知识库使用的SPARQL语言,Neo4j图形数据库使用的Cypher语言等,以获得正确的结果信息。第三章知识图谱构建3.1知识图谱构建框架本文所设计的知识图谱构建[8]框架如图3.1所示。图3.1知识图谱构建框架3.2知识图谱规模3.2.1知识图谱实体类型本文知识图谱所包含的实体类型如表3.1所示。表3.1知识图谱实体类型实体类型中文含义举例Check检查项目遗传筛查;尿液分析Department医疗科目小儿内科;肿瘤内科Disease疾病感冒;高血压Drug药品脑血康胶囊;羧甲司坦片Food食物枸杞叶猪腰汤;芝麻茶Producer在售药品华海药业鬼臼毒素酊;江西药都樟树补中益气片Symptom症状血压偏低;假日心脏综合征3.2.2知识图谱实体关系类型本文知识图谱所包含的实体关系类型如表3.2所示。表3.2知识图谱实体关系类型实体关系类型中文含义举例belongs_to属于<心内科,属于,内科>common_drug常用药品<冠心病,常用,丹参片>do_eat宜吃食物<冠心病,宜吃,莲子>no_eat忌吃食物<冠心病,忌吃,杏仁>drugs_of在售药品<丹参片,在售,雷氏丹参片>need_check检查项目<冠心病,所需检查,心电图>recommand_drug推荐药品<冠心病,推荐用药,丹参片>recommand_eat推荐食谱<冠心病,推荐食谱,绿豆粥>has_symptom症状<冠心病,疾病症状,不正常呼吸短促>acompany_with并发症<冠心病,并发疾病,动脉栓塞>3.2.3知识图谱属性类型本文知识图谱所包含的属性类型如表3.3所示。表3.3知识图谱属性类型属性类型中文含义举例name名称二尖瓣狭窄desc简介二尖瓣狭窄是由于不同原因引起二尖瓣开放功能受限cause病因老年性二尖瓣环prevent预防措施防止风湿热的初次发作cure_lasttime治疗周期3个月cure_way治疗方式“药物治疗”,“支持性治疗”,“手术治疗”cured_prob治愈率手术治愈率95%以上easy_get易感人群无特殊人群3.3数据获取3.3.1数据来源想要构建医疗类知识图谱,我们首先要确定它的数据来源。医疗知识和身体健康紧密相连,所以它具有极强的专业性,我们可以选择寻医问药网、春雨医生、39健康网等与医疗疾病健康相关的专业网站,从中获取医疗相关数据和知识信息。本文选择从寻医问药网来获取医疗相关数据和知识信息。图3.2寻医问药网图3.3寻医问药网词条结构示例图从图3.3寻医问药网词条结构示例图可以看出,每个页面都是围绕一个实体进行介绍,很多的结构化数据包括在每个实体中。想要获取这些知识就需要查看网页结构,图3.4是寻医问药网站词条对应的网页源代码图。图3.4寻医问药词条对应的网页源代码3.3.2数据采集确定寻医问药网为本文数据来源后,需要将网站中的医疗知识数据采集到本地,这里就需要用到网络爬虫技术。通常情况下,网络爬虫技术共分为4步:(1)发送请求。发送http请求到目标地址后,等待目标服务器响应;(2)获取内容。等到目标服务器响应后,得到相应网页页面中的内容;(3)解析网页。得到相应网页页面中的内容后,对信息进行解析;(4)下载和保存内容,最终存储为我们所要的数据。图3.5展示了网络爬虫的基本原理。图3.5网络爬虫基本原理由于互联网上医疗网站的开发技术不同,不同的网站页面和数据传输方式也各不相同。1、针对静态页面,其所有的数据都保存在html中,只要找到对应的URL,就能得到整个页面的数据。可以使用基于规则的方法直接通过URL下载整个HTML页面,从而对页面内容进行分类,分析页面的规则,然后用XPath对页面进行规则解析,得到所需的医疗数据。2、针对动态页面,不能通过获取HTML页面直接获取页面数据,因为通过JavaScript发出动态请求,然后呈现页面。我们可以使用基于Selenium的方法,通过事件函数观察动态页面的加载情况,进而得到所需的医疗数据。3、针对返回格式为json类型的URL。可以采用基于json-url的方法,主要针对数据传输形式为JSON类型数据的前端和后端web页面。通过分析页面中数据的访问路径和对应的URL,分析其参数,并做相应的修改,可以直接请求网站通过修改后的URL获取JSON格式的数据。图3.6爬虫流程图3.4知识提取3.4.1实体提取本文所使用的医学知识数据来源于寻医问药网,且大多具有特定的结构化风格。因此,我们可以分析和发现数据中的共性,并制定相应的实体识别规则,从而可以使用和制定适当的规则,同时集成词典。经过以上分析,本文将根据具体的数据信息情况制定不同的策略。一方面是发现和分析一些易于分类和整合的特征。在此基础上,我们可以总结出与之相一致的共同规律,进而得到相应的规则来表达和获取所需的信息。另一方面,可以将上述方法结合起来,先用分词工具对其进行处理,然后用规则对其进行处理,得到所需的信息。本章中医疗实体抽取的详细策略如图所示。图3.7医疗实体抽取流程对于本文所涉及的领域,疾病等相关术语将更具特殊性,因此本文将在jieba分词的基础上进行补充,即利用医学领域词汇与之相结合。建立词汇表的过程是添加更容易获得的医疗实体。在此基础上,可以辅助jieba分词工具,有利于相关实体的识别和获取。具体策略如下:1、根据数据制定规则在对医学数据的分析中发现,大多数医学网站上的疾病标签都是标准化、规范化的,便于筛选疾病实体和构建词典,便于后续知识抽取过程的使用。对于其他实体的提取,可以通过分析得到数据中大部分医学知识文本的描述,更加规范化,因此可以通过制定规则来提取。我们可以从药品说明书中看出哪些药品可以用来治疗哪些相关疾病和相应的症状。同时,描述具有一定的风格结构,因此可以利用这一特征得到相应的规则[8]。例如,在药品说明书数据中,以药品“感冒灵颗粒”为例,将这种感冒灵颗粒的功能描述为“适用于咽喉痛、鼻塞、头痛、流涕、流感发热……”,因此可以提取规则并添加到规则库中,即,本品适用于由[疾病]引起的[症状],其中“999感冒灵颗粒”、“999感冒灵颗粒”可提取实体中的“头痛”,实体中的“发热”,实体中的“鼻塞”,实体中的“流涕”,实体中的“咽喉痛”[8]。因此基于上述的思路,可以采用的规则如下:(1)药物描述文本中,根据药品主治功能标签,可根据药品用于/XXX、药品常用于治疗/XXX、药品可用于/XXX、药品适用于/XXX、药品常治疗/XXX等类似的规律得到相关的症状以及疾病类型实体等。(2)在相关疾病饮食描述文本中,可以根据疾病宜吃/XXX、不宜吃/XXX,忌食/XXX,推荐食物为/XXX等规则获取食物实体。(3)在检查治疗描述文本中,根据相关检查为/XXX、主要检查/XXX,常见检查项目有/XXX。(4)药物描述说明中,可以根据药物名称/XXX,本品名称/XXX等规则得到药物类实体[8]。2、根据词语及相关词性制定规则在基于词和词性规则制定的方法中,采用解jieba分词对医学描述文本进行切分。在处理的过程中,可能会出现多种名词,这些名词不一定是我们需要的数据,因此需要借助相关的词典信息进行辅助。同时,我们也需要在此基础上总结制定相关的规则信息,并进行综合处理。接下来举个例子,“支气管哮喘常伴有支气管分泌物増加、咳嗽、喘息、肺过度充气、哮鸣音、呼吸困难、咳嗽伴哮鸣音气管阻塞、痰饮”,通过jieba分词获得词语词性结果为“支气管哮喘/n常/d伴有/v咳嗽/v、/x喘息/v、/x肺/n过度/n充气/n、/x哮鸣音/n、/x呼吸困难/l、/x咳嗽/v伴/v哮鸣音/n、/x气管/n阻塞/v、/x痰饮/n”,从处理的过程中可以看出,首先可以得到支气管哮喘的实体名词,然后分析其后面每个词的词性和结构。我们可以知道,许多连续出现的单词都与症状等信息有关。然而,一些完整的症状描述在处理后的信息中会被加工成不同的词,影响其完整性和准确性。因此,在这种情况下,当数据中存在各种连接词时,需要将它们作为分割的基础,才能得到正确的结果[8]。由于第一种策略获取的医疗实体数据较多,第二种策略可以充分利用现有的医疗实体词典进行辅助处理。首先,我们可以找到现有相关实体的位置,然后利用这些信息和后续词性信息对相应的规则进行分析和总结,得到不同的规则,并保留一些关系信息,也可以用于后续处理。因此,相关的规则有:[词语wd]/谓词词项/症状实体的词汇,则wd为药物或疾病实体;词典中疾病实体/谓词词项/[词语wd],wd为症状或疾病相关实体;症状实体词汇/谓词词项/[词语wd],wd为疾病或者症状实体词语;[词语wd]/谓词词项/疾病实体,wd为症状药物或疾病相关实体[8]。3.4.2关系提取提取对应关系的主要目的是连接它们之间现有的语义。首先,我们需要分析从互联网上获取的数据信息中存在的关系规则。同时,在之前的医学相关实体提取过程中,可以获得实体相关关系的三重信息[8]。因此,我们可以充分利用这些数据来获得对应关系。在分析数据之后,我们可以使用上述关系三元组来获得所需的关系类型。同时,我们还需要根据需求定义对关系进行分类和过滤,并指定相应的处理规则[8]。因为在相关的叙事数据中有明显的标记,我们可以利用这些标记信息来提示获得关系。例如,如果在一些与疾病相关的描述性信息中有“并发症”标签,我们就可以判断并发症之间的关系[8]。例如,在疾病描述数据中,类似于癫痫疾病描述文本中的“常并发急性肾功能衰竭和急性白血病”。通过在规则库中加入“常复杂”规则,我们可以得到癫痫与其他疾病并发症之间的关系[8],癫痫,并发症,急性肾功能衰竭以及癫痫,并发症,急性白血病。对于属性来说,可看成另一种关系,主要根据需求制定的定义,采用上述方法可获取[8]。3.5基于Neo4j的知识存储本文利用图数据库Neo4j对医疗知识图谱数据进行存储。Neo4j相较于其他图数据库而言,优势在于,不仅可以快速操作数据库,还可以灵活进行调整扩展。所以,Neo4j是目前使用最广泛的图数据库。同时为了方便将数据导入Neo4j,也为了更便于查询图形数据,该图数据库提供Cypher语句。Cypher是一种声明模式匹配的语言,便捷易于理解。Neo4j图数据库的数据存储形式由节点代表知识图谱中实体元素和边代表实体相关联的关系组成,每个节点上都可以有一个或多个标签来表示实体的分类,以及键值对表示属性的集合。Neo4j中的工具neo4j-import,就专门针对大规模数据,将实体和实体之间的关系数据迅速地导入到图数据库之中,在数据导入以后,可以使用Cypher语言对知识图谱进行可视化操作。本文采用的是json文件方式进行导入,也可以利用Cypher语句自己创建节点和边。图3.8展示了基于图数据库Neo4j所构建的医疗知识图谱,44112个实体、291164对实体关系包含在了该知识图谱中。图3.7医疗知识图谱效果图第四章基于医疗知识图谱实现自动问答4.1技术框架图4.1展示了此文所设想的医疗问答系统的流程框架。图4.1基于知识图谱的问答框架4.2支持问答类型表4.1展示了本文所设计的医疗问答系统[9]支持的问答类型。表3.2问答系统支持的问答类型问句类型中文含义问句举例disease_desc疾病描述手足口病disease_cause病因手足口病的产生原因?disease_acompany并发症手足口病有什么并发症?disease_symptom症状手足口病的症状是什么?disease_prevent预防措施手足口病的预防措施有?disease_lasttime治疗周期治疗手足口病需要多久?disease_cureway治疗方式如何治疗手足口病?disease_cureprob治愈率手足口病的治愈率是多少?disease_easyget易感人群哪些人容易得手足口病?disease_do_food宜食手足口病患者应该吃什么?disease_not_food忌食手足口病患者不该吃什么?symptom_disease已知症状找疾病打喷嚏是得什么病了吗?food_not_disease什么病不要吃**(食物)哪些患者不要吃莲子?food_do_disease**(食物)对什么病有益杏仁对什么病有益?disease_drug**(疾病)要吃什么药手足口病患者吃什么药?drug_disease**(药品)能治什么病益肾壮阳膏能治什么病?disease_check**(疾病)需做什么检查手足口病需做什么检查?check_disease**(检查)能查什么疾病心电图能查什么疾病?4.3智能问答问答系统的实现,目的就是可以回答用户所提出的问题,要想实现智能问答系统,问句分析和答案查询是必不可少的。其中,问句分析是智能问答的基础,将系统用户输入的自然语言问句完成语义分析,以便进行答案查询。而答案搜索是在语义分析完成后,基于本文构建好的医疗类知识图谱,在知识库中进行问句查询功能的完成,从而可以返回用户想要知道的知识、数据结果。4.3.1问句分析问句分析是智能问答的重要组成部分,也是完成整个智能问答的基础。问句分析的目的是通过对自然语言问句进行语义的分析和理解,使得用户的口头化表达可以转变为逻辑表达式,方便知识库理解。一般而言,问句分析包含分词、命名实体识别以及语义分析等,而智能搜索的目的在于识别出实体以及识别出实体间的关系。智能搜索问句分析中比较重要的技术--句法分析,就包括了句法结构分析和依存关系分析这两个部分,依存关系分析的主要目的在于分析出问句中词与词之间的依存关系,即实体与实体间的依存关系。4.3.2问答搜索基于知识图谱的问答(KBQA),是根据问句的语义理解和解析,然后在知识库中检索得到解答。一般问句的形式和种类多种多样,有对比型、事实型、是非型、关系型以及因果型问题等,而不同类型的问题的查询方式和湖大结果也不尽相同。通过对本文问句的分析,医疗健康问题领域本身就属于比较封闭的场景,对领域问题可以进行穷举分析,用户所提出的问题的类型一般都属于事实型问题,基于规则模板匹配的方法是解决上述问题最简单明了的方式。基于知识图谱的问答系统中,本文采用了知识图谱的图数据库neo4j自带的高级查询语言Cypher来进行高级检索,使用Cypher的match在neo4j图数据库进行匹配查找。这里的匹配是根据关键词进行匹配的,关键词是由我们手工定义穷举出来的,比如以症状类别为例,用户提出问题“中暑会出现哪些症状?”、“患了颈椎病有什么明显的现象?”、“出现哪些状况是感冒了?”等等,从大量用户提出的问题中不难发现,问题中一般会出现“症状”、“表现”、“现象”、“表征”、“状态”、“症候”、“状况”等关键词,因此,本文主要根据上述实体和问句的分类来进行匹配索引。图是以Cypher查询语言为例进行问句查询的简单流程。图4.2问句查询流程图在上文问句查询过程中,问句分析可以对问句执行依存句法和命名实体分析,再根据识别到的关键词实体以及问题的意图类别确定候选的模板,模板的查询结构为:match(n)returnn,其中,本文根据问句的形式不同将模板定义了三种类型的候选模板,下面将简单介绍这三种模板查询的形式。第一种:“实体”型。例如“什么是感冒?”,问句中只出现实体,目的只是为了查询实体的相关信息,不涉及其他部分。查询的结构为:“match(x:实体类型)returnx”。2、第二种:“实体+关系”型。例如“感冒应该吃什么东西?”,查询问句中实体-关系相关的实体或属性值,可以通过关系三元组,例句中的关系三元组为<疾病,推荐食谱,食谱>。查询的结构为:“match(x:实体类型{关系类型:实体值})returnx”。第三种:“实体+属性”型。例如“感冒多久能治好?”,用于查询问句中实体的相关属性值。查询的结构为:“match(x:实体类型{属性名:属性值})returnx”。对用户的问句进行查询后得到的结果数据,结合相应的答案回复模板,再一次进行组装合并,返回相对准确的答案给用户。4.4基于知识图谱的医疗问答系统前端界面设计与实现本文采用Streamlit的UI框架,搭建医疗问答系统前端界面。Streamlit是一种Web框架,它的优势在于不仅简约,而且运行速度快。Streamlit的目的是使用Python更加轻松、更加便捷搭建模型和可视化。flask常被用来搭建网页,但需要编写较多的html文件,对js语言要求较高,操作复杂。Stremlit和flask对比来看,Stremlit框架小,适合搭建简单的交互网页flask更加适合搭建复杂网页。图4.3和图4.4为采用的框架搭建的问答系统前端界面效果图。图4.3问答系统前端界面图4.4问答系统前端界面第五章总结与期望5.1总结本文以寻医问药网作为数据来源,基于知识图谱构建理论和Neo4j图数据库,构建了一个医疗知识图谱,该图谱包含了44112个实体,291164对实体关系。在构建知识图谱完成的基础上,通过对用户输入的自然语言进行分析和搜索,完成医疗智能问答,问题种类共包含“疾病描述”、“病因”、“并发症”等18类。5.2未来工作与期望本文实现的基于知识图谱的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论