基于知识图谱的医疗问答系统_第1页
基于知识图谱的医疗问答系统_第2页
基于知识图谱的医疗问答系统_第3页
基于知识图谱的医疗问答系统_第4页
基于知识图谱的医疗问答系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、基于知识图谱的医疗问答系统 Medical question and answer system based onKnowledge graph 在数字信息迅速增长的时代, 人们获取信息的途径从书本逐渐迈向互联网。为了了解自己的身体状况并及时预防或治疗,不少的人们选择从互联网上查找疾病和症状的相关信息。然而, 传统的通过捜索引擎来搜索医药信息的方法较为麻烦。因为通过搜索引擎检索出来的信息存在虚假信息,其中还掺杂着不少的广告信息, 需要用户做进一步的筛选才能得到答案, 难以满足人们快速获取医疗健康信息的需求。基于知识图谱的医疗问答系统是从知识图谱中获取答案的自动问答系统。作为一种人机交互的新趋势

2、,自动问答逐渐深入人们的生活中。微信小程序作为轻量级的应用程序,具有快速迭代的优点,开发周期短,而且还能借助大厂的流量入口,快速导入用户。综合考虑各种成本因素及用户量的规模,后端框架上面选择flask。不同于人工智能在医疗领域的应用场景,本文所设计的自动问答程序,以给患者提供医疗咨询为目的,不涉及诊断决策与患者信息。患者通过该程序所获取的知识服务于患者就医过程,具体方面包括:帮助患者准确了解与其病情相关的医学知识,提高对自身正确病情的阐述,减少在就诊过程中表达错误病情情况的发生;提高问诊效率,帮助患者了解医生对其病情的解释与医嘱,减少同一问题反复咨询的情况;帮助患者降低受互联网错误医疗信息影响

3、,减少医疗诈骗事件发生,指导患者树立正确的健康观。综上,该系统基于人工智能技术,临床收集患者问答相关数据,以微信小程序为载体,能够诊前后提供正确的相关医学知识,提高就医效率。关键词:知识图谱 微信小程序 智能医疗AbstractIn the era of rapid growth of digital information, peoples access to information has gradually moved from books to the Internet.In order to understand their physical conditions and preve

4、nt or treat them in time, many people choose to find information about diseases and symptoms from the Internet.However, the traditional method of searching medical information through search engines is troublesome.Since the information obtained through the search engine has false information, it is

5、also mixed with a great deal of publicised information, and it is also mixed with a lot of advertising information, users need to do further screening to get answers, it is difficult to meet peoples demand for rapid access to medical and health informationMedical question answering system based on k

6、nowledge mapping .As a new trend of human-computer interaction, automatic question answering has gradually penetrated into peoples lives.As a lightweight application program,WeChat applet has the advantages of rapid iteration, short development cycle, and can also quickly import users through the fl

7、ow entrance of large factories.Considering various cost factors and the scale of user volume, flask is selected on the back-end framework.Different from the application scenario of artificial intelligence in medical field, the automatic question answering program designed in this paper aims to provi

8、de medical consultation for patients, and does not involve diagnosis decision and patient information. The knowledge acquired by the patient through the program serves the patients medical treatment process. The specific aspects include:help the patient to accurately understand the medical knowledge

9、 related to their condition, improve the description of their own correct condition, and reduce the occurrence of expressing the wrong condition during the treatment process; improve the efficiency of consultation, help the patient to understand the doctors explanation and order of their condition,

10、and reduce the same Third, help patients to reduce the impact of Internet wrong medical information, reduce the occurrence of medical fraud, and guide patients to establish a correct view of health. To sum up, the system is based on artificial intelligence technology, clinical collection of patients

11、 Q & A related data, with wechat small programs as the carrier, can provide correct relevant medical knowledge before and after diagnosis, and improve the efficiency of medical treatment.Key words: Knowledge-graph Wechat-applet Intelligent-medical-treatment 广东东软学院本科毕业设计(论文)目录第一章 绪论11.1研究背景与意义11.2国内外

12、研究现状11.2.1领域知识图谱构建研究现状11.2.2医疗领域问答系统应用研究现状21.3 研究的内容21.4 论文的组织结构2第二章 关键技术和理论知识42.1 知识图谱和图数据库42.2 实体识别和用户意图识别42.3 微信小程序和Flask5第三章 问答系统的需求分析63.1可行性分析63.1.1技术可行性63.1.2 经济可行性63.1.3 法律可行性63.2系统业务需求63.3系统功能需求73.3.1 问句解析模块73.3.2 问句分类模块73.3.3 答案检索模块7第四章 问答系统的总体设计84.1 系统架构设计84.2 系统功能模块的设计94.2.1 问句解析模块94.2.2问

13、句分类模块114.2.3答案检索模块12第五章 系统的详细设计与实现145.1开发环境和工具145.2 医药数据的获取145.3 医药知识图谱的构建145.4 医疗问答系统的设计与实现165.4.1问答系统流程设计165.4.2 问答系统的实现175.5 基于微信小程序的交互界面的实现185.6系统测试19第六章 总结与展望206.1论文工作总结206.2未来工作的展望20参考文献22致谢23 第一章 绪论1.1研究背景与意义问答系统正逐渐成为一种新趋势,关于机器与人之间的自然交互,它可以更准确地理解自然语言所描述的问题,并根据用户的真实思想向用户返回更准确的答案Error! Referenc

14、e source not found.。随着大数据近年来崛起和知识工程的发展,一种新形势的搜索引擎:自动问答系统也逐渐进入人们的生活。基于知识图谱的自动问答系统通过信息爬取技术和数据清洗技术将来自专业论坛,互联网百科,医疗问答的非结构化文本信息转化成结构化的文本数据来构成医疗知识图谱。从而可以更好地构造海量数据并将其与人类认知联系起来。因此,近年来,由于知识图谱概念的提出,学术界将自动问答系统的的发展重心逐渐转移到基于知识图谱的的自动问答系统上。知识问答可以在精确的问答服务中发挥关键作用。 在越来越多的垂直行业领域中,知识图谱已被广泛用作基础数据服务,以提供上层智能应用程序的基础结构,特别是在

15、医疗领域,因为某些领域的数字化进程不断发展,各种信息系统不断发展。市场已经产生了大量的医疗信息。在如此大数据的背景下,有必要考虑如何有效地提取,管理和使用这些医学信息以提高医学资源的利用率。因此,临床医学知识图谱的构建和应用还有很大的发展空间。 微信小程序基于微信环境,具有很高的使用率,有利于软件开发后的推广和实际应用。小型程序使用的MINA框架利用Java的异步输入和输出技术为用户提供更流畅的体验。微信小程序于2017年1月9日开始公开测试。与传统的App相比,小程序的使用方便。从用户的角度来看,您无须下载即可使用的微型程序,从而完美解决了用户需要下载App体验功能的弊端,使软件触手可及。

16、1.2国内外研究现状1.2.1领域知识图谱构建研究现状医学知识数据集包括医学术语集(本体数据库)、医学知识库和医学知识图谱。其中,当前的医学术语(本体数据库)为医学知识库和医学知识图谱的构建提供医学专业术语,受限词汇分类和概念标准化。它具有权威性,涵盖的数量和质量范围广泛。该担保得到了医疗行业的广泛认可。在医学知识库方面,当前国内外大多数医学知识库都基于专业领域,但是医学知识库以结构化领域定义的形式存储医学知识,并且缺乏丰富的结构信息。医学知识图是具有相关图的知识的集合。实际上,它是基于语义网的知识库的直观表示,着重于提取关系以显示知识的高度相关性和高度结构化的特征。结果,医学知识图可以包含更

17、丰富的关系级别和关系链接,从而显著提高知识推理的准确性和效果。 总体而言,大规模、多领域、跨语言的专业医学知识图谱的建设仍处于发展和不断增强的阶段。为了获得更完整的医学知识图谱,需要不同的医学本体库和知识库。与知识图谱集成,并将尚未涵盖的知识和不断生成的新知识集成到现有知识图谱中。医学知识图谱的构建必须是不断迭代更新的过程。医学知识图谱的发展所需的知识融合,知识补充和动态知识更新表达变得迫在眉睫。1.2.2医疗领域问答系统应用研究现状问答系统是一种智能检索系统,基于自然语言处理技术,模拟人类的行为处理输入的问题并传出知识库中对应解决答案。医疗问答系统实质上就是疾病知识问答系统,用于自然文本提出

18、问题,系统可以返回相关疾病信息的需求。国外的问答系统发展比较早。1950年,“图灵机测试”是问答系统的雏形;1961年,green为了便于回答体育赛事的相关问题,设计了第一个问答系统,这是智能问答系统发展的起点;1999年,文本检索会议对系统衡量的指标定制了标准,推动了问答系统极大地发展。此后,国外众多知名的高校陆续研究人机对话系统。同时,互联网行业的巨头如微软、IBM等也纷纷加入智能对话系统研究的浪潮,以问答系统的研究目标:用最精简有效的本文回答人们的提问,而不是某种概念的全部信息,并且首先要研究非结构化的数据变成结构化的技术。医学领域是涉及人体健康的领域。该领域对医疗信息检索要求更强,但是

19、面对搜索引擎上呈现巨大的医疗健康信息,非医学专业的用户很难从中筛选出对自己有利的信息,造成信息污染和信息浪费,急需医疗问答系统实现有效地帮助。问答系统在医学领域中的应用,可以缓解医生和患者之间的信息失衡,提高医疗数据资源的有效使用性。于是,社会资源的压力推动者国内医疗问答系统的发展,克服传统医疗行业信息检索局限性,促使我国医疗问答领域发展和迭代。1.3 研究的内容本项目研究的主要内容是搭建一个基于知识图谱医疗问答系统。该系统实现的功能是允许用户输入描述疾病或症状的白然语言句子, 系统将自动抽取问题句子中的症状或疾病,并识别用户的查询意图。在意图明确的情况下,系统会从知识库中检索出符合用户意图的

20、答案,并将答案反馈给用户。1.4 论文的组织结构本文由六章组成,具体文章的组织结构如下:第一章, 绪论:主要介绍了本课题的研究背景及意义,国内外研究现状以及本课题的主体研究与目标。第二章, 关键技术和理论知识:本章节将会详细地介绍基于微信小程序的医疗问答系统所采用的技术和方法。包括:知识图谱、实体识别、实体抽取、flask和微信小程序。第三章, 问答系统的需求分析:本章节会通过可行性、业务、功能的角度来分析本项目中问答系统的需求。第四章, 问答系统的总体设计:本章节会详细地介绍问答系统的总体框架以及问句解析模块,问句分类模块,答案检索模块的设计方案。第五章, 系统的详细设计与实现:详细介绍了问

21、答系统的开发环境;知识图谱的构建方法;利用python的flask框架来实现基于微信小程序的自动问答系。第六章, 总结与展望:对本文的主要内容、成果、创新点进行总结,并阐述在研究中获得的经验以及存在的不足,以及对未来工作的展望。第二章 关键技术和理论知识2.1 知识图谱和图数据库知识图谱是用于存储和表示复杂的用于计算机系统的结构化和非结构化信息的技术Error! Reference source not found.。 知识图谱与数据库有着较为明显的区别。数据库以表格的形式按行存储,表格的列称为字段,每个字段必须是基本的、不能拆分的数据类型,如整型、实型和字符型等, 因而它的数据是扁平的,而且

22、结构或数组不能作为字段的类型。 然而知识库的数据是立体的, 知识图谱不仅要存储字符串或数字等常规数据, 还要存储数据之间的关系, 这些关系可以是从属关系、子类等。 知识图谱既可以存储在关系型数据库中, 也可以存储在图数据库中 。 但后者不管是在存储结构还是查询方面都优于关系型数据库, 因而本文釆用图数据库存储知识图谱。现在主流的图数据库有titan、orientDB、Neo4j、Oracle、NoSQL等,其中neo4j是目前最流行的图形数据库,Neo4j创建的图是用顶点和边构建一个有向图,顶点是现实世界中实体,边代表了实体间的关系,Neo4j中有图数据库中专用的Cpyher查询语句,查询也比

23、较简单,在Neo4j中表现映射关系变成了图关系,使用较少的资源就可以获得较高的性能,Neo4j有活跃的社区和技术文档,还有完善的Python工具包,所以本文选用Neo4j作为本系统的图数据库Error! Reference source not found.。2.2 实体识别和用户意图识别命名实体识别(NER)作为自然语言处理任务中的一种。命名实体识别从非结构化的文本中识别出实体,并根据业务需求(例如疾病,疾病症状,药物等)识别更多类型的实体。命名对象识别技术是许多自然语言处理技术(例如信息提取,信息检索,知识图谱,机器翻译和问答系统)的组成部分。在本项目中实体识别的作用就是分析出用户输入的问

24、题语句中的实体,提供给问答系统去实现答案的检索。模式匹配是数据结构中字符串的一种基本运算, 该运算用于在给定一个子串的情况下, 从某个字符串中找出与该子串相同的所有子串, 其广泛应用于信息检索、入侵检测等领域,模式匹配算法按其一次能够匹配的模式数量可以分为单模式匹配算法和多模式匹配算法Error! Reference source not found.。简単来说, 单模式匹配与多模式匹配的不同点在于单模式匹配是捜索一个关键字,而多模式匹配是搜索多个关键字。当前,利用已有的词典来提取用户输入的自然语言问题句子中的疾病或症状词语是准确性最佳的方法 。但为了保证系统有较快的响应速度, 匹配算法应该一

25、次就能匹配词典中的所有词 。因此, 本文采用多模式匹配的方法来从用户输入信息中匹配出实体词典中的词 。目前, 在实际应用中使用最多的多模式匹配算法是 Aho_Corasick(简称 AC)算法Error! Reference source not found.。本文采用了基于词典匹配方法,词典匹配方法采用的是 AC多模式匹配算法, 主要负责从用户输入信息中找出已有词典中的词语, 从而达到提取疾病症状实体的目的。意图识别的目的是让系统识别出于用户输入的查询相关的信息,在本文中,意图识别的作用就是让系统识别出用户所提出的查询目的,即用户是要查询疾病还是询问治疗方法等等目的。意图识别对于基于搜索的系

26、统非常重要,若意图识别准确率高,则系统的检索时间能大大加快,检索的精确率也会相应提高。意图识别本质上是一个分类问题,主要有三种方法:基于词典匹配的规则分类、基于过完日志匹配和基于分类模型进行分类。不同的方法适用于不同的场景。 用户提出医药领域的问题的说法相对有限,所以本项目主要采用基于词典匹配的方法。2.3 微信小程序和Flask微信小程序于2017年1月9日开始公开测试。与传统应用程序相比,小型程序易于使用。从用户的角度来看,无须下载即可使用微程序。这将完全解决让用户下载应用程序体验功能并访问软件的缺点。从开发人员的角度来看,小程序的开发成本低,开发周期短,并且还有其他独特的优势。因此本项目

27、使用微信小程序作为前端交互界面。 因为前后端交互的逻辑并不复杂,所以该项目采用Python的Web框架之一的Flask作为后台程序,并与前端微信小程序进行交互。 Flask是一个非常流行的微型Web框架,用于使用Python编程语言实现相关功能,“Micro”并不意味着将整个Web应用程序放入一个Python文件中,而Micro框架中的“Micro”意味着Flask使扩展代码变得简单而容易,主要特征是核心配置相对简单,但是具有高度可伸缩性和兼容性Error! Reference source not found.。Flask和微信小程序具有相同的优势。开发人员可以使用Python快速实现网站或

28、Web服务。 第三章 问答系统的需求分析3.1可行性分析3.1.1技术可行性由于本项目不选择部署在服务器上,所以在硬件上性能要求仅为一台windows系统的电脑,以用于开发本系统。本项目开发所用的工具为:微信开发者工具、PyCharm、Neo4j。由于开发人员对微信小程序开发工具使用的熟练度较低,所以存在一定开发风险。3.1.2 经济可行性本项目采用的开发工具皆为免费版。由于不选择在云端服务器部署本系统,所以开发本系统的所需的经济成本为零。本系统没有任何的付费接口,也没有加入任何广告模块,纯属公益项目。所以本项目不会产生任何经济效益。3.1.3 法律可行性本项目采用的工具和技术不违法任何法律道

29、德,不会对社会稳定性产生影响。值得一提的是,本项目将通过网络爬虫来获取的数据替换成现成的结构化数据,有效地避免了法律问题。3.2系统业务需求随着互联网的快速发展,无论类型或数量如何,互联网上的信息都呈爆炸性增长,人们对信息的访问已逐渐从书报转向Internet。另一方面,随着智能移动设备的发展和移动无线传输速度的提高,人们可以随时随地获得各种信息,包括医疗服务信息。现在,人们不仅会在疾病发生前在互联网上搜索疾病预防信息,而且还将在疾病发生后在Internet上咨询康复和保健信息。 随着Internet信息的不断增长和改进,有效的信息检索已成为当务之急10。日前,从互联网上检索信息主要使用Goo

30、gle和百度等关键字搜索模式。此模型要求用户设计和优化关键字。一旦关键字不正确或不完整,搜索网站将检索与用户查询意图不符的结果。同时,搜索站点的搜索结果是网页列表,用户需要阅读和过滤更多内容以获得所需的知识。因此,上述缺点导致搜索站点上的搜索效率降低。 与通过搜索网站来查询问题相比,亟须一款问答系统可以让用户用自然语言直接描述他们的问题,并将其用作问答系统的输入,而不必进行细化关键字以获取问题的答案,让用户拥有更好的使用体验。3.3 系统功能需求3.3.1 问句解析模块实际上用户提出的医疗相关问题形式多变,没有固定的模板。所以问答系统的核心难题就是解析用户提出的医疗问题,分析出医疗问题中的实体

31、和用户意图。例如,用户输入问题“失眠症属于什么科室”,该模块应该抽取出疾病实体词“失眠症”,并将该词标记为疾病,同时应该识别出查询意图为查询科室。问题解析模块是本问答系统的关键模块之一,该模块的主要职责就是从用户提出的医疗问题中抽取出医药实体和用户意图,并将实体信息和用户意图传递给问句分类模块。3.3.2 问句分类模块图据库查询需要查询条件和查询目标, 疾病和症状实体是数据库查询的条件, 那么用户输入信息的查询意图就是数据库查询的目标。在通过问句解析模块获得了医疗问题中的实体信息和用户意图后,再把两个信息融合在一起就是用户的查询意图。问句分类模块的职责就是根据用户意图结合实体信息来生成相应的数

32、据库查询语句,最后该模块会将相应的查询语句传递给答案检索模块。3.3.3 答案检索模块本问答系统是检索式系统,通过检索图数据库来获取相应的答案。因此答案检索模块主要负责生成相应数据库的查询语句, 并处理从数据库检索到的结果信息。该模块通过获取问句分类模块传递进来图数据库查询语句, 并将该语句传递给知识库进行查询,把查询结果包装成自然语言答案,并反馈给前端交互界面。 第四章 问答系统的总体设计4.1 系统架构设计本项目采用各种技术框架来构建基于知识图谱的医学问题解答系统,包括前端UI采用了微信小程序,后台业务采用Flask框架,数据库采用图数据库neo4j等。 Python作为主要的编程语言。在

33、前端 UI层面,采用 微信小程序框架实现问答答系统前端交互界面的搭建,在后端业务层面采用 Flask框架实现业务逻辑构建。本文系统技术架构设计如下图4.1所示。图4.1技术框架图根据本文3.3小节可知,本项目的问答系统主要由三个模块构成:问题解析模块、问句分类模块和问答检索模块, 其中最重要的是问题解析模块和答案检索模块,各模块之间的关系如图4.2。图4.2系统框架图4.2 系统功能模块的设计4.2.1 问句解析模块问题解析模块是本系统的最关键模块,该模块目标是从用户输入的医疗问题中抽取出实体, 该模块将使用第三章所提到的实体识别方法和意图识别方法,也就是基于词典匹配的用户意图识别和实体识别。

34、基于词典的命名实体识别,难度在于为其准备一个覆盖率足够大的实体词典。本项目在把结构化的医药数据导入图数据库时,把实体名称同步写入相应实体类型的词典中,最终生成了7类实体词典,总计实体44111条,实现实体词典的实体数量和图数据库的实体数量的全对齐,巧妙地解决了这个难题。各类实体词典数量如下表所示。表4.1 各类词典的实体数量实体类型中文含义实体数量Check诊断检查项目3,353Department医疗科目54Disease疾病8,807Drug药品3,828Food食物4,870Producer在售药品17,201Symptom疾病症状5,998由于用户提出医药领域的问题的说法相对有限,所以

35、本项目主要采用基于词典匹配的方法,构建了疑问词特征词典,如图4.3所示。 图4.3 问句疑问词词典并将这些疑问词分类出13种意图类型,如下表4.2所示. 表3.1意图类型设计意图类型中文含义举例symptom_qwds查询症状心脏病的症状是什么?cause_qwds查询病因为什么会头痛?acompany_qwds查询并发症冠心病的并发症有哪些?food_qwds查询食物失眠症吃什么?drug_qwds 查询药品咳嗽吃什么药?prevent_qwd查询预防措施流行性感冒的预防措施?lasttime_qwds查询治疗周期失眠症的治疗周期?cureway_qwds查询治疗方式肺炎的治疗方式?cure

36、prob_qwds查询治愈概率青光眼的治愈概率?easyget_qwds查询易感人群肺炎的易感人群有哪些?check_qwds查询检查科目肾结石应该检查什么项目?belong_qwds查询科室失眠症属于什么科室?cure_qwds查询药效阿莫西林治疗什么? 在运行该模块时,将通过调用python中ahocorasick库来生成Aho-Corasick自动机,AC自动机根据用户问句来快速的匹配出实体词典中的特征词,从而识别出用户问句中的实体.图4.4为构建AC自动机的方法。 图4.4 构建AC自动机的方法 由于疑问特征词典较小,本项目用for循环来遍历疑问特征词典,并通过判断语句来判断用户问句中

37、是否存在特征词。从而识别出问句的用户意图,实现的方法如图4.5所示。图4.5 判断方法4.2.2问句分类模块 问句分类模块通过实体和用户意图来分析出用户的查询意图,来生成对应数据库查询语句。图数据库Neo4j指定的查询语句是Cypher.Cypher具有直观的书写方式,使得用户可以通过编写简单的查询代码来实现对neo4j进行各种复杂的操作,其中包括检索数据库。Cypher的查询命令主要是MATCH命令,用户可以通过MATCH命令查找有关节点的属性或者节点与节点的关系,它一般是与return和where命令组合和起来使用,从数据库中筛选满足条件的数据,然后返回指点的数据。在本项目中,知识库答案检

38、索的目标就是将用户提出的自然语言问题转换成一个语义等价的Cypher查询语句。例如,用户描述的问题“失眠症属于什么科室?”,问题解析模块应从问题句子中抽取出疾病实体“失眠症”,并应该识别出用户查询意图为查询科室,然后系统应将问题转换为如下形式的查询语句:MATCH (m:Disease) where = 失眠症 return , m.desc,并将转换的查询语句传递给答案检索模块。具体方法如下图4.6所示。 图4.6 根据相应的用户查询意图生成不同的查询语句 4.2.3答案检索模块本节主要描述在系统获取到疾病实体以及用户意图,生成相应的cypher查询语句,并处理从数

39、据库检索到的相关的医疗数据.在完成问句分类和命名实体识别任务后,本项目已经完成了cypher查询语句的生成,最后需要在图数据库Neo4j中执行查询语句获取答案Error! Reference source not found.。通过python第三方库中的py2neo库,可以完成python和图数据库neo4j连接,py2neo支持对neo4j数据库的结点创建,关系创建,属性创建和结点查询,属性值查询,节点间的关系查询等多种操作Error! Reference source not found.。下图4.7为调用py2neo来连接neo4j数据库的方法。 图4.7 连接数据的方法 在成功连接n

40、eo4j以后,该模块将查询语句传递给neo4j数据库,并将查询结果转换成自然语言答案。实现的方法如下图4.8.所示,该方法根据不同的查询意图,来调用不同的回复模板。 图4.8 生成自然语言答案的方法第五章 系统的详细设计与实现5.1开发环境和工具电脑的硬件信息如下表5.1所示。 表5.1 硬件信息表电脑型号microsoft surface pro6CPUIntel 酷睿i5 8250U内存8g硬盘128g显卡Intel GMA UHD 620开发工具:PyChram2018社区版、微信开发者工具、neo4j开发环境:python3.6 、windows105.2 医药数据的获取本项目数据来源

41、于网络上共享结构化数据,用python中的scrapy库从在线医疗健康网站抓取所需的json数据。本文抓取的主要数据来源于寻医问药网。如下图5.1所示为获取的结构化数据。 图5.1 结构化医药数据5.3 医药知识图谱的构建若采用人工的方式构建知识库尤其是领域知识库,那么需要领域专家设计,这将耗费大量的时间和人力。因此,自动化的构建知识库时所有学术界和工业界关注的重点,本文首先利用scarpy工具从寻医问药网爬取结构化的疾病相关,并保存在json文件中。然后处理json文件中的数据。通过程序自动的转变为三元组形式,并存入neo4j数据库中的三元组信息Error! Reference source

42、 not found.。根据医药信息之间的数据关系映射,如下表所示,本项目在图数据库中创建了疾病(disease)、药品(drug),食物(food),在售药品(producer),疾病症状(symptom)、诊断检查项目(check)、所属科目(depatment)。这七类实体中以疾病实体为中心节点,其余类实体围绕它建立关系网,经过统计,最后得到了总计实体44111条,具体详情见表5.2。 表5.2 各种实体类型的数量实体类型中文含义实体数量举例Check诊断检查项目3,353支气管造影;关节镜检查Department医疗科目54整形美容科;烧伤科Disease疾病8,807血栓闭塞性脉管炎

43、;胸降主动脉动脉瘤Drug药品3,828主动脉动脉瘤,京万红痔疮膏 Food食物4,870番茄冲菜牛肉丸汤;竹笋炖羊肉Producer在售药品17,201青霉素V钾片 Symptom疾病症状5,998乳腺组织肥厚;脑实质深部出血此外本项目依据这7类实体定义了10类关系类型,详情见表5.3。总计得到实体关系类型294149条,由此可知一个疾病可能关联多个同一类的实体。表5.3 各类实体关系类型的数量实体类型中文含义实体数量举例belongs_to属于8,844妇科,属于,妇产科common_drug疾病常用药品14,649阳强,常用,甲磺酸酚妥拉明分散片do_eat疾病宜吃食物22,238胸椎骨

44、折,宜吃,黑鱼drugs_of药品在售药品17,315青霉素V钾片need_check疾病所需检查39,422单侧肺气肿,所需检查,支气管造影no_eat疾病忌吃食物22,247唇病,忌吃,杏仁recommand_drug疾病推荐药品59,467混合痔,推荐用药京万红痔疮膏recommand_eat疾病推荐食谱40,221番茄冲菜牛肉丸汤has_symptom疾病症状5,998早期乳腺癌,疾病症状,乳腺组织肥厚acompany_with疾病并发疾病12,029下肢交通静脉瓣膜关闭不全,并发疾病,血栓闭塞性脉管炎数据图谱能够清晰地展示实体与实体这间的关系,如图5.2所示,通常查询语句查找到属于心

45、理科的疾病。 图5.2 属于心理科的疾病实体图5.4 医疗问答系统的设计与实现5.4.1问答系统流程设计本文设计的医疗问答系统主要为用户提供疾病相关信息和治疗建议, 帮助用户了解白身健康状况, 在去医院就诊时能心中有数。本系统的问答流程如图5.3所示。从图5.3可知, 系统接收了用户输入的对于疾病或症状的描述信息后, 首先执行的是问题解析模块中的疾病症状抽取子模块, 在该模块中利用自定义的实体词典抽取用户输入信息中的疾病和症状词语。然后再执行问题解析模块中的用户意图识别子模块, 在该模块中识别出用户输入信息的查询意图类型 。如果识别出了意图类型, 则下一步将用户输入信息转变为 Cypher查询

46、语句, 再将该语句传递给医疗知识库, 由知识库的查询引擎执行相应的查询命令, 从而从知识库中查询出结果。问答系统检索出答案后, 将根据答案生成检索结果报告 。图5.3系统流程图5.4.2 问答系统的实现本项目将问句解析模块、问句分类模块和答案检索模块封装成不同的类。此外还有chatbot_graph类,来完成各个模块之间的调度。表5.4为各个类所属的模块和职能。 表5.4 方法类对应所属模块表类名所属模块职能question_classifier问句解析模块解析问句中的实体和用户意图question_parser问句分类模块生成数据库查询语句answer_search答案检索模块查询数据库并返

47、回自然语言答案chatbot_graph主模块实现各个模块之间的调度。chat_graph类属于主模块,负责实现各个模块之间的调用关系,从实现智能医疗的问答的效果。主模块在获得用户提出的问题之后,将问题数据依次递给其他的三个模块,最后再接受来自答案检索模块的答案。在运行chatbot_graph类后,系统会提示用户输入问题,并快速的返回答案。图5.4运行效果图。 图5.4 运行效果图5.5 基于微信小程序的交互界面的实现基于微信小程序的交互界面为用户提供一个交互窗口,即用户可以在此界面输入医疗问题,也可以在此界面了解到问题的答案。交互界面如下图5.5所示。交互界面用微信开发者工具进行开发,以微

48、信小程序的形式来呈现。这个是仿微信聊天界面的交互窗口,用户可以看到聊天记录,在输入框输入医药知识问题,在点击搜索按钮来发送输入的问题。图5.5基于微信小程序的交互界面本项目前后端之间的交互较为简单:问答系统接收来自交互的问题;交互接收来自问答系统的。所以本项目采用python轻量级web框架flask来实现前后端数据的交互。5.6系统测试系统测试的目的是发现系统中存在的问题, 以便今后改进系统, 为用户提供体验性更好的系统。为了测试基于知识图谱的医疗问答系统的实际效果,本项目对医疗问答系统的功能进行测试。测试的方法:模拟用户的实际操作,在交互界面输入与医疗相关的自然语言问题,对比预期结果和实际

49、结果的出入。此次系统测试准备100条医疗相关的测试语料。部分测试语料如下表5.5所示。表5.5 部分测试语料测试案例预期结果流感通常会和啥病一起出现流感一般发生在冬季,春季也有但很少见,要注意及时的预防。小儿咳嗽如何预防帮助还在养成良好的卫生习惯。流行性感冒引起的发烧可以用什么药酚咖片支配眼睑闭合的神经是哪个?面神经在本次测试中,大部分测试案例的测试结果都符合预期结果。第六章 总结与展望6.1论文工作总结知识图谱在医学领域的应用有助于提高医疗智能化的水平,目前医学知识图谱主要应用于临床决策支持系统、医疗智能语义搜索引擎、医疗问答系统和医学知识科普等方面,医学知识推理人工智能技术的发展和应用,提高了医学知识图谱的构建效率和知识推理的准确率Error! Reference source not found.。即使是拥有丰富医学知识的医生面对相同的疾病,也要通过参考患者的身体情况来给出不同的诊断结果,再根据诊断结果向患者提供不同的治疗方案。人工智能有得天独厚的优势在挖掘医药信息方面。互联网通过各种各样的渠道中收集数据,处理大量重

温馨提示

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

最新文档

评论

0/150

提交评论