网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- [BERT(Bidirectional Encoder Representations from Transformers)](#BERTBidirectional_Encoder_Representations_from_Transformers_185)
- [长短时记忆网络(Long Short-Term Memory,LSTM)](#Long_ShortTerm_MemoryLSTM_188)
- [条件随机场(Conditional Random Field,CRF)](#Conditional_Random_FieldCRF_191)
- [命名实体识别](#_194)
- [实体对齐](#_197)
- [语义知识库问答](#_199)
+ [七、系统实现](#_201)
+ [八、结语](#_239)
大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统
一、项目概述
知识图谱是将知识连接起来形成的一个网络。由节点和边组成,节点是实体,边是两个实体的关系,节点和边都可以有属性。知识图谱除了可以查询实体的属性外,还可以很方便的从一个实体通过遍历关系的方式找到相关的实体及属性信息。
BERT是一种基于Transformer 架构的预训练语言模型,能够捕捉双向上下文信息。BERT 模型在大规模语料上进行预训练,然后可以通过微调来适应特定任务,BERT 可用于处理输入文本,提取丰富的语义信息。它可以用于文本的编码和表征学习,以便更好地理解医学问答中的问题和回答。LSTM 是一种递归神经网络(RNN)的变体,专门设计用于处理序列数据。它通过使用门控机制来捕捉长期依赖关系,适用于处理时间序列和自然语言等序列数据。 LSTM 可以用于处理医学文本中的序列信息,例如病历、症状描述等。它有助于保留文本中的上下文信息,提高模型对长文本的理解能力。CRF 是一种用于标注序列数据的统计建模方法。在序列标注任务中,CRF 能够考虑标签之间的依赖关系,从而更好地捕捉序列结构。 在医学文本中,CRF 可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。
基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统通过构建医疗领域的知识图谱来实现计算机的深度学习,并且能够实现自动问答的功能。本次的内容研究主要是通过以Python技术来对医疗相关内容进行数据的爬取,通过爬取足量的数据来进行知识图谱的的搭建,基于Python语言通过echarts、Neo4j来实现知识图谱的可视化。通过智慧问答的方式构建出以BERT+LSTM+CRF的深度学习识别模型,从而完成对医疗问句主体的识别,构建出数据集以及实现文本的训练。通过Django来进行web网页的开发,通过面向用户的网页端开发使用来满足用户医疗问答的需要。
二、系统实现基本流程
- 配置好所需要的环境(jdk1.8,neo4j,pycharm,python等)
- 爬取所需要的医学数据,获取所需基本的医疗数据。
- 对医疗数据进行数据清洗处理。
- 关系抽取定义与实体识别等。
- 基于BERT+LSTM+CRF深度学习知识图谱建模。
- 数据可视化、深度学习问答、问句分析可视化、知识图谱可视化等。
- 知识问句分析管理、系统用户管理等功能完善做出一个完整的基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统。
三、项目工具所用的版本号
Neo4j版本:Neo4j Desktop1.5.6或者neo4j-community-3.1.0都可以;
neo4j里面医疗系统数据库版本:3.1.0;
Pycharm版本:2021.2.1;
JDK版本:jdk1.8.0_211;
MongoDB版本:MongoDB-windows-x86_64-5.0.14;
Django版本:3.2.8
四、所需要软件的安装和使用
(一)安装JAVA
1.下载java安装包:
官网下载链接:https://www.oracle.com/java/technologies/javase-downloads.html
配置的话这里不再过多描述,之前写过详细的JDK配置,可以看一下
附链接:
JDK的环境配置(超级详细教程)
neo4j数据库所用的是neo4j-community-3.1.0版本,目录参数信息如下:
五、开发技术简介
Django技术介绍
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。Django 框架的核心组件有:
- 用于创建模型的对象关系映射
- 为最终用户设计的完美管理界面
- 一流的 URL 设计
- 设计者友好的模板语言
- 缓存系统。
在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
层次 |
---|
模型(Model),即数据存取层 |
模板(Template),即表现层 |
视图(View),即业务逻辑层 |
模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层 存取模型及调取恰当模板的相关逻辑。模型与模板之间的桥梁。
Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。
1.对象关系映射 (ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。
2.URL 分派:使用正则表达式匹配URL,你可以设计任意的URL,没有框架的特定限定。像你喜欢的一样灵活
3.模版系统:使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。
4.表单处理:你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单。
5.Cache系统:可以挂在内存缓冲或其它的框架实现超级缓冲 -- 实现你所需要的粒度。
6.会话(session),用户登录与权限检查,快速开发用户会话功能。
7.国际化:内置国际化系统,方便开发出多种语言的网站。
8.自动化的管理界面:不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMIN site,类似于内容管理系统。
Neo4j数据库
Neo4j数据库是一个轻量级的、高性能的图形数据库,该数据库也被称之为是图片引擎,能够同面向对象的方式来进行数据的处理。该技术能够通过嵌入式的开发实现java持久化引擎的应用。该技术也是开源的技术,截止目前已经有一亿多个节点,其可以满足绝大多数的用户需求。作为一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
Bootstrap4框架
Bootstrap是一个流行的开源前端框架,用于快速开发响应式和移动优先的网站。Bootstrap 4是Bootstrap框架的第四个主要版本,它引入了许多新的特性和改进。Bootstrap 4框架的详细介绍及优势:
响应式设计: Bootstrap 4是一个响应式设计的框架,可以确保网站在各种设备上都能够良好显示,包括桌面、平板和手机。
网格系统: Bootstrap的网格系统是其核心组件之一,它允许开发人员创建灵活的布局。网格系统基于12列,可以轻松地创建多列布局,适应不同屏幕大小。
移动优先: Bootstrap 4采用移动优先的设计理念,使得在设计和开发时首先考虑移动设备的体验。这有助于确保网站在小屏幕上的良好表现。
CSS预处理器支持: Bootstrap 4使用Sass(Syntactically Awesome Stylesheets)作为其默认的CSS预处理器,使得定制样式变得更加灵活和方便。
组件: Bootstrap 4提供了许多内置的UI组件,如导航栏、表单、按钮、模态框、轮播等,可以在项目中轻松使用这些组件,减少开发时间。
升级的表格和表单: Bootstrap 4引入了一些改进,使得表格和表单的样式更加现代化和易于定制。
新的插件系统: Bootstrap 4引入了一种称为Popper.js的新的插件系统,用于处理弹出框和工具提示等交互式组件。
重新设计的文档: Bootstrap 4的文档经过重新设计,更加清晰易读,提供了丰富的示例和文档说明,方便开发人员使用和学习。
定制主题: Bootstrap 4允许开发人员通过使用Sass变量和mixin来轻松定制主题,以满足项目的特定需求。
浏览器支持: Bootstrap 4支持所有主流的现代浏览器,并提供了对Flexbox布局的良好支持。
总体而言,Bootstrap 4是一个功能强大且灵活的前端框架,适用于各种Web开发项目。它的广泛应用和强大的社区支持使得开发人员能够快速构建美观、响应式的网站。
Echarts简介
ECharts是一款基于JavaScript的开源可视化库,专注于提供直观、交互丰富的图表展示效果。它由百度前端开发团队开发和维护,具有灵活的配置项和丰富的图表类型,适用于各种数据可视化场景。
在本系统中,ECharts在可视化分析方面发挥着重要作用。首先,ECharts提供了丰富多样的图表类型,包括折线图、柱状图、饼图、地图等,可以满足系统对不同类型的数据进行展示的需求。通过使用ECharts,系统能够以直观、易懂的方式展示数据、历史数据。用户可以通过交互式的图表进行数据的探索和分析,从中获取有价值的信息。其次,ECharts提供了丰富的配置项和交互功能,使得系统能够灵活地定制图表展示效果和用户交互体验。此外,ECharts还提供了丰富的扩展能力和插件支持,使得系统能够根据需要定制和扩展特定的功能。例如,ECharts提供了地图可视化的支持,可以将数据以地理位置为基础展示在地图上,使用户能够直观地了解不同地区的情况。同时,ECharts还支持数据的动画效果、数据的渐变展示等,增加了图表的可视化效果和吸引力。
总之,ECharts作为一款功能强大的可视化库,在本系统中扮演着重要的角色。它通过丰富的图表类型和配置项,使系统能够以直观、交互丰富的方式展示数据。同时,ECharts的扩展能力和插件支持为系统的定制和功能扩展提供了便利。通过ECharts的应用,本系统能够提供直观、灵活的数据可视化分析功能,帮助用户更好地理解和利用数据。
Navicat Premium 15简介
Navicat Premium 15是一款功能强大且广泛使用的数据库管理工具。它提供了一个集成的开发环境,适用于不同类型的数据库,如MySQL、Oracle、SQL Server、PostgreSQL等。Navicat Premium 15具有直观的用户界面和丰富的功能,使数据库管理变得更加高效和便捷。
Navicat Premium 15作为一款强大的数据库管理工具,在本系统中发挥着重要的作用。它提供了直观的界面和丰富的功能,使用户能够方便地管理和操作MYSQL数据库。同时,它还为系统开发人员提供了便捷的开发和调试环境,加快了系统的开发进程。
Layui简介
Layui 是一套开源免费的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,它更多是面向于后端开发者,即无需涉足各类构建工具,只需面向浏览器本身,便可将页面所需呈现的元素与交互信手拈来。Layui采用模块化的设计理念,将各个功能划分为独立的模块,每个模块都有清晰的责任和接口。这种设计使得开发者可以根据需要选择性地引入和使用不同的模块,从而减小项目体积,提高加载速度。此外,提供了大量常用的界面组件,包括但不限于按钮、表单、表格、导航、弹层、进度条等。这些组件风格简洁、统一,可以方便地进行定制和扩展,满足不同项目的需求。Layui的API设计简单易用,使得开发者无需深入研究复杂的前端技术,即可快速上手。它提供了丰富的文档和示例,方便开发者查阅和学习。在扩展性方面, Layui具有良好的扩展性,开发者可以根据项目需要编写自定义的模块或插件,并集成到Layui框架中,实现特定功能的定制化开发。
Python语言介绍
Python语言是现在最为常用的一款脚本语言技术,该语言的特点在于编程过程简单,语法平易近人。该语言的编程过程如同在进行一项语言的学习,通过符合人们日常生活使用语言的习惯来进行编程开发可以有效的提升系统编程的效率,并且在整个系统的开发过程中,该技术也能有着非常多的框架和类库可提供使用,包括django框架、flask框架等,都是Python在web端开发所经常使用的开发框架。该语言继承了C语言的编程特点,并且有着很好的跨平台使用特点,实现了一次编译,多处运行的效果。
MySQL数据库
本次的数据库选择了MySQL,该数据库是当下最为常用的一款标准SQL语言下的数据库管理工具。该数据库能够通过SQL layer以及storage engine layer来快速的对数据信息进行完整的解析与存储,通过多线程的数据服务来加快数据传输的效率,并且该数据库也支持多种开发语言,能够在不同的操作平台中均实现凯苏运行。该数据库对于硬盘内存的占用非常低,可以实现安全的数据存储,整个数据库具备了开源的特点,可以为用户的数据存储服务提供个性化的图表编辑,通过数据库表格的方式来进一步的提高数据存储的逻辑性,确保数据关系准确。
深度学习
深度学习是一种机器学习的方法,其中模型通过多层神经网络学习从输入数据中提取高层次抽象特征。深度学习模型通常包含多个层次,这些层次构成了深层结构,这也是“深度”学习一词的由来。深度学习是针对机器训练和学习的一个全新的研究方向,希望能够通过该学习方式来实现人工智能的目标。深度学习是对样本数据的学习,在对样本数据中所存在的逻辑关系、数据实体等进行解释和记录,让计算机可以通过广泛的内容学习来具备一定的分析能力、判断和识别能力,深度学习在搜索引擎、机器学习、自然语言等多个方面都形成非常好的应用效果,能够通过该学习方式来解决人工智能领域遇到的一些困难。
BERT是一种基于Transformer 架构的预训练语言模型,能够捕捉双向上下文信息。BERT 模型在大规模语料上进行预训练,然后可以通过微调来适应特定任务,BERT 可用于处理输入文本,提取丰富的语义信息。它可以用于文本的编码和表征学习,以便更好地理解医学问答中的问题和回答。LSTM 是一种递归神经网络(RNN)的变体,专门设计用于处理序列数据。它通过使用门控机制来捕捉长期依赖关系,适用于处理时间序列和自然语言等序列数据。 LSTM 可以用于处理医学文本中的序列信息,例如病历、症状描述等。它有助于保留文本中的上下文信息,提高模型对长文本的理解能力。CRF 是一种用于标注序列数据的统计建模方法。在序列标注任务中,CRF 能够考虑标签之间的依赖关系,从而更好地捕捉序列结构。 在医学文本中,CRF 可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。
在医疗数据中,CRF可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。意图识别可以看做是一个分类问题,针对于垂直产品的特点,定义不同的查询意图类别。通过该系统设计一个强大的问答模块,能够接受用户输入的自然语言问题,并基于BERT、LSTM、CRF等算法模型生成准确的、语义一致的回答。
六、核心理论
贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。
贪婪算法(Greedy algorithm)是一种对某些求最优解问题的更简单、更迅速的设计技术。用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。
贪婪算法是一种改进了的分级处理方法。其核心是根据题意选取一种量度标准。然后将这多个输入排成这种量度标准所要求的顺序,按这种顺序一次输入一个量。如果这个输入和当前已构成在这种量度意义下的部分最佳解加在一起不能产生一个可行解,则不把此输入加到这部分解中。这种能够得到某种量度意义下最优解的分级处理方法称为贪婪算法。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
715078504770)]
[外链图片转存中…(img-ykpb3cxL-1715078504770)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新