Advertisement

大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统_bert+lstm(1)

阅读量:
img
img
img

不仅专为小白设计的零基础资料库非常实用,还为资深玩家提供了系统性深入的学习课程,并包含超过95%的大数据知识点内容;真正地形成了一个完整的知识体系。

鉴于文件数量较多,在此仅对部分目录进行了截图展示。该套资源涵盖了大厂面经、学习笔记、源码讲义等实用内容,并包括实战项目和讲解视频等丰富资源,并承诺后续将持续更新。

有朋友需要这份系统化资料的朋友可以通过以下链接访问该资源

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编写而成。其主要包含模型M、视图V以及控制器C三个核心组件的功能模块。

  1. 构建模型时所涉及的对象间关系的映射结构
  2. 专为普通用户打造的直观且功能全面的用户界面
  3. 专业的且视觉上具有吸引力的设计方案
  4. 易于使用的工具配合专业的模板生成语言
  5. 高效稳定的缓存解决方案

在Django中,在接收用户输入的部分由框架自行处理的基础上

层次
模型(Model),即数据存取层
模板(Template),即表现层
视图(View),即业务逻辑层

该系统模型主要负责管理与数据交互的各项操作,并确保数据的有效性和完整性: 包括实现存取操作、制定数据验证标准以及明确各数据元素间的关联关系等各项功能。

呈现层(Template),即表现层 负责处理与表现相关的决策: 如何在页面或其他类型的文档中进行展示。

视图(View),即是业务逻辑层获取模型及获取相应的模板的相关操作流程。连接模型与模板的纽带。

在 Django 中, 视图的功能专注于输出特定的数据集合而不处理用户的输入内容. 而 django 模板则仅负责呈现预设的数据集合以满足用户的显示需求. 或者说, django 将传统 MVC 架构中的视图功能分离为两部分: django 视图表负责确定"展现哪些数据", django 模板则决定了"如何展现 django 视图表指定的数据内容". 这种分离使 django 的模板系统具备高度的灵活性与可定制性, 在实际应用中可以根据具体需求进行灵活替换, 从而使得 django 的模板系统不仅能够实现原有功能, 更可以根据具体需求进行扩展与优化.

Django的核心目标是便捷且迅速地构建数据库驱动的应用程序。 Django 强调代码复用性,并支持多种组件通过插件的方式无缝集成到框架中;它提供了丰富的第三方插件库,并允许开发者便捷地构建自定义工具包;这一特点增强了其高度可扩展性;同时遵循快速开发原则以及DRY(避免重复)原则

对象关系映射技术(ORM, object-relational mapping):通过Python类结构化数据模型,并利用ORM技术将数据模型与关系型数据库关联起来。该技术提供了一个非常易于使用的数据库API接口,并且在Django框架中可以直接使用原始SQL语句操作。

2.URL 分配:通过正则表达式进行URL匹配,在不影响现有框架的前提下允许自定义任何类型的URL配置,并保持与你选择相似的灵活性

  1. 模板系统:采用Django的模板引擎,能够将设计、内容以及Python代码进行分离,并且具备继承性特性。

  2. 表单处理:你可以较为便捷地创建不同类型的表单模板。能够较为容易地基于预先设定好的模板自动生成所需的表单形式。

5.Cache系统:被内存缓存框架使用以实现高度并行的数据访问 -- 以可调节的粒度进行数据处理

6.会话(session),用户登录与权限检查,快速开发用户会话功能。

7.国际化:内置国际化系统,方便开发出多种语言的网站。

  1. 自动化的管理界面:无需为你创建繁琐的人力资源管理系统或更新维护相关内容。Django内置了管理员后台(类似于内容管理系统),方便进行系统维护。
在这里插入图片描述
Neo4j数据库

Neo4j数据库则是一种轻量级且性能卓越的图形数据库系统,在某些情况下也被直接称为图片引擎。它能够按照面向对象的方式处理数据,并且这一技术由于其开源性质使其具备广泛的应用基础。目前拥有超过一亿个节点的数据集,在实际应用中已经能够满足大多数用户的需求需求。作为一个高性能的NOSQL图形数据库系统来说,在存储数据时并不像传统表那样存放在磁盘上而是以网络的形式存在这使得它具备完全事务性的特点同时也能作为Java持久化引擎使用这一特性使它成为一个功能强大且灵活多样的工具平台对于程序员而言工作环境更加开放而不再是受限于传统的严格静态表结构但是他们依然能享受到完全事务性、企业级数据库服务带来的各种优势

Bootstrap4框架

Bootstrap是一套广泛应用于前端开发的开源框架,在构建响应式网站方面具有显著优势。作为 Bootstrap 系列中的核心更新版次(第4代), Bootstrap 4在用户体验优化和功能增强方面进行了全面升级,并引入了多项创新特性与改进方案。本指南将详细解析 Bootstrap 4 的架构设计与性能优化特性,并深入探讨其在现代前端开发中的应用价值与技术优势

响应式设计是一种网页布局技术: Bootstrap 4是实现这一技术的一个流行框架。它能够适应不同设备屏幕尺寸并展示良好的用户体验,并且支持多种终端类型如 desktop computers, tablets, 和 mobile devices。

Bootstrap的网格系统为其核心组件之一, 它赋予开发者创建灵活布局的能力. 该系统采用十二列设计, 支持轻松构建多列布局, 以适应不同尺寸屏幕的需求.

移动优先原则: Bootstrap 4遵循移动优先原则作为其设计理念基础。从而使得设计师与开发者在进行网站设计与开发时最先关注并考虑到不同设备的显示效果与操作体验。这一设计理念能够有效提升网站在各种移动端设备上的良好显示效果与用户体验。

CSS preprocessors are supported. Bootstrap 4 is the default CSS preprocessor for SASS (Syntactically Awesome Stylesheets), enabling developers to create highly customizable and functional styles with ease.

组件: Bootstrap 4提供了丰富的内置用户界面(UI)组件。这些包括常见的导航栏、表单元素、按钮元素、MODAL components以及滚动展示区域等。方便集成到项目中即可节省开发时间。

组件:Bootstrap 4提供了丰富的内置用户界面(UI)组件。这些包括常见的导航栏、表单元素、按钮元素、MODAL components以及滚动展示区域等。方便集成到项目中即可节省开发时间。

采用 Bootstrap 4 的升级版本后, 表格和表单不仅在外观上更加现代化, 而且在功能实现上也更为便捷, 用户能够更方便地进行样式调整

新的插件功能: Bootstrap 4新增了一种名为Popper.js的新插件功能, 其主要职责是专门负责处理弹出窗口以及提供工具提示等交互式组件的功能。

重新设计的文档:Bootstrap 4的文档经过重构后变得更加直观易懂,并附带了大量实例和详细说明。这使得开发人员更容易上手和深入理解文档。

定制主题: Bootstrap 4支持开发人员借助Sass变量和mixin进行主题的灵活配置,并且能够满足项目特有的具体要求。

Bootstrap 4对广泛采用的主流浏览器平台具有良好的兼容性,并且在响应式设计中的表现同样出色。

总体来说,Bootstrap 4是一个既具有强大功能又具备高度灵活性的前端框架,在各类Web开发项目中均有广泛的应用。由于其广泛的使用范围以及强大的社区支持系统(社区驱动),开发者能够迅速创建出美观且响应式的作品。

Echarts简介

作为一款基于JavaScript的开源可视化库工具,
ECharts专注于以直观且交互丰富的图表展示效果,
为开发者提供便捷的数据可视化解决方案。
该库由百度前端开发团队开发与维护,
并提供了灵活配置选项与多样化的图表类型,
能够满足多种数据可视化场景的需求。

在本系统中,
ECharts扮演着重要的数据可视化角色。
它通过丰富多样的图表类型,
包括折线图、柱状图、饼图以及地图等多种形式,
满足不同类型的数据显示需求。
用户可以通过这些互动式的图表来深入探索数据并获取有价值的信息。
此外,
ECharts还提供了灵活配置选项与丰富的交互功能,
使其能够根据具体需求定制化地展示数据效果。
例如,
该库支持地图可视化的功能,
允许用户将地理位置信息融入图表中进行展示,
从而更直观地了解不同地区的具体情况。

除了基础的功能外,
ECharts还具备强大的扩展能力与可插件支持系统。
这使得开发者可以根据特定需求添加更多定制化功能。
例如,
该库支持数据动画效果展示以及渐变颜色等视觉效果的变化模式,
从而增强了图表的表现力与吸引力。
这些特性使得ECharts不仅是一个强大的基础工具,
同时也是一直充满活力的功能扩展平台。

综上所述,
ECharts作为本系统的核心数据可视化引擎之一,
通过其多样化的图表类型与灵活配置选项的强大功能组合,
为系统的数据分析提供了高效便捷的方式。
借助ECharts的应用体验者能够轻松实现从简单到复杂的复杂数据显示需求解决过程;
无论是基础的数据趋势分析还是复杂的地理分布研究都能够得到有效的支持与呈现

Navicat Premium 15是一款拥有强大功能并得到广泛应用的高级数据库管理系统。该软件提供了完整的集成开发环境,在MySQL、Oracle、SQL Server、PostgreSQL等多种主流数据库系统中均可使用。 Navicat Premium 15凭借其直观且友好的操作界面以及丰富的实用功能,在提升数据管理和操作效率方面表现突出,并且能够显著提升操作便捷性。

Navicat Premium 15在本系统中被用作一款功能强大的数据库管理工具。它集成了直观的用户界面以及全面的功能模块,并为用户提供便利的操作 MYSQL 数据库的能力。在本系统中开发人员也受益于便捷的开发与调试界面,并显著提升了系统的开发效率

Layui简介

Layui 是一套遵循传统 HTML/CSS/JavaScript 开发模式的开源免费 Web UI 组件库。它基于自身构建的轻量级模块化设计原则进行开发,并支持传统的模块化构建方式。与主流前端框架不同的是,Layui 主要面向后端开发者,在无需使用构建工具的情况下即可通过浏览器直接操作并展示所需页面元素。该框架采用分而治之的设计理念,在功能划分上注重职责明确性和接口标准化。这种设计理念使得开发者可以根据实际需求选择性地引入所需组件模块组合而成功能模块集,并通过灵活的方式控制项目规模和加载速度。其内置了丰富的常用组件类型包括但不限于按钮、表单、表格、导航菜单、弹出窗口、进度条等,并保证了组件界面风格的一致性和定制灵活性以满足不同项目的具体需求。由于其 API 设计非常注重操作简便性与易用性,在不需要深入理解前端复杂技术的前提下即可快速完成基本功能开发工作,并且提供了详尽的技术文档以及大量实践示例帮助开发者更好地理解和掌握框架使用方法。同时 Layui 在扩展性方面也表现突出支持开发者根据具体项目需求自定义模块插件并将其整合进整体框架系统中实现特定功能的深度定制开发能力

Python语言介绍

目前广泛使用的脚本编程语言是Python,并以其程序设计简单直观著称,并且语法易于理解和学习。编写Python程序的过程与学习一种日常交流的语言相仿,在编写代码时遵循类似的逻辑和习惯能够显著提升开发效率。此外,在Python生态系统中提供了丰富的模块库资源可供调用,在Web开发领域尤其受到青睐,并主要采用Django框架和Flask框架等技术实现功能模块构建。同时该语言具备良好的跨平台特性,在不同操作系统环境下均能稳定运行并提供一致的服务体验。

MySQL数据库

本次采用了MySQL数据库作为核心选型方案。 MySQL现已成为广泛使用的标准SQL数据库管理工具。 MySQL通过SQL层和存储引擎层实现了对数据信息的全面解析与高效存储。 该系统支持多线程设计以显著提升数据传输效率,并兼容多种开发语言可在不同操作系统平台上实现无缝兼容运行 MySQL在内存占用方面表现优异 其提供高度安全的数据存储机制 并具备开放源代码特性 可以为用户提供灵活的数据可视化功能 从而进一步提升数据组织逻辑性保障数据完整性

深度学习

深度学习是一种机器学习的方法,其中模型通过多层神经网络学习从输入数据中提取高层次抽象特征。深度学习模型通常包含多个层次,这些层次构成了深层结构,这也是“深度”学习一词的由来。深度学习是针对机器训练和学习的一个全新的研究方向,希望能够通过该学习方式来实现人工智能的目标。深度学习是对样本数据的学习,在对样本数据中所存在的逻辑关系、数据实体等进行解释和记录,让计算机可以通过广泛的内容学习来具备一定的分析能力、判断和识别能力,深度学习在搜索引擎、机器学习、自然语言等多个方面都形成非常好的应用效果,能够通过该学习方式来解决人工智能领域遇到的一些困难。
BERT是一种基于Transformer 架构的预训练语言模型,能够捕捉双向上下文信息。BERT 模型在大规模语料上进行预训练,然后可以通过微调来适应特定任务,BERT 可用于处理输入文本,提取丰富的语义信息。它可以用于文本的编码和表征学习,以便更好地理解医学问答中的问题和回答。LSTM 是一种递归神经网络(RNN)的变体,专门设计用于处理序列数据。它通过使用门控机制来捕捉长期依赖关系,适用于处理时间序列和自然语言等序列数据。 LSTM 可以用于处理医学文本中的序列信息,例如病历、症状描述等。它有助于保留文本中的上下文信息,提高模型对长文本的理解能力。CRF 是一种用于标注序列数据的统计建模方法。在序列标注任务中,CRF 能够考虑标签之间的依赖关系,从而更好地捕捉序列结构。 在医学文本中,CRF 可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。
在医疗数据中,CRF可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。意图识别可以看做是一个分类问题,针对于垂直产品的特点,定义不同的查询意图类别。通过该系统设计一个强大的问答模块,能够接受用户输入的自然语言问题,并基于BERT、LSTM、CRF等算法模型生成准确的、语义一致的回答。

六、核心理论

贪心算法

贪心算法(亦称贪婪算法)被称为一种解决优化问题的技术,在每一次决策中都采取当前看似最佳的选择。它的核心思想是未从全局最优角度出发,并且只得出基于局部信息的最佳解决方案。这种方法并不适用于所有能够找到全局最优点的问题。然而,在许多情况下——尤其是在涉及复杂决策过程或大规模数据处理时——它能够达到或接近全局最优点,并广泛应用于多个领域

贪心算法(Greedy algorithm)是一种为某些求最优解问题提供更为简便快捷的设计方法。采用该方法设计算法的特点是逐步推进的方式,在每一步中基于当前状态依据某个优化标准做出最优选择,并不考虑全局情况以减少计算复杂度和时间开销。这种方法通过自顶向下的迭代过程做出一系列贪心选择不断简化问题规模直至获得最终解的过程。尽管每次贪心选择都能保证局部最优解的获得但最终所得的整体解并不一定达到全局最优效果因此该方法不具备回溯机制。

该贪心算法通过改进的方式实现了分阶段处理的过程。它的核心在于根据问题的要求确定一种衡量标准。随后会按照这一标准所需的顺序对这些输入进行排列,并依次将每个输入加入到当前构造的部分最优解中。若将某一项元素与当前构建的部分最优解合并后无法形成有效的整体解决方案,则放弃将其加入当前部分最优解中。这一分阶段处理策略被称为贪心算法(Greedy Algorithm)。

当我们面对一个问题时, 通常会涉及多种衡量指标. 初步看来, 这些指标看似都很有道理, 但事实并非如此. 其实, 大部分基于这种衡量方法应用贪心策略所得出的结果往往只是局部最优而非全局最优. 因此, 确定能够导出全局最优解决方案的关键在于选择恰当的衡量指标.

Aho-Corasick算法

该算法在多模式匹配领域被视为经典的解决方案

  1. 创建Goto表:可实现转移至另一状态
  2. 建立Failture指针:若某状态出现失误,则需转达至特定位置
  3. 实现匹配:可达成匹配某一字符串

我们开发了一个基于Aho-Corasick字符串搜索算法的决策树结构,并将其应用于快速实现过滤功能的关键信息处理。

复制代码
    '''构造actree,加速过滤'''
    def build\_actree(self, wordlist):
    actree = ahocorasick.Automaton() # 初始化trie树,ahocorasick 库 ac自动化 自动过滤违禁数据
    for index, word in enumerate(wordlist):
        actree.add_word(word, (index, word))   # 向trie树中添加单词
    actree.make_automaton()   # 将trie树转化为Aho-Corasick自动机
    return actree

该算法的主要用途是在输入文本中高效检测和过滤多个关键词。其显著优势在于能够同时匹配多个关键词而不必反复扫描整个输入文本

BERT(Bidirectional Encoder Representations from Transformers)

BERT 作为一种基于 Transformer 架构的语言模型,在经过大规模文本数据的无监督预训练后,在多种自然语言处理任务中展现了卓越的效果。该模型通过双层关注机制捕获复杂的上下文关系,并且可以在并行计算的基础上有效地捕捉长距离依赖关系。总体来说,BERT 代表了深度学习技术在自然语言处理领域的重要突破。

长短时记忆网络(Long Short-Term Memory,LSTM)

长短时记忆网络(Long Short-Term Memory, LSTM)是特定于深度学习框架中的高级循环神经网络(Recurrent Neural Network, RNN)模型。该架构特别擅长应对传统RNN模型中常见的梯度消失与梯度爆炸问题,并能更有效地捕获长期依赖关系。作为RNN的一种变体形式,在处理序列数据时展现出独特优势。该模型通过门控机制来调节信息流动方向与速度,并能有效管理时间序列数据中的复杂关联性。在医学自然语言处理领域中,LSTM架构被广泛应用于病历分析与症状描述等场景,其显著提升了对临床文本语义的理解能力

条件随机场(Conditional Random Field,CRF)

CRF是一种判别式概率图模型,用于建模标签序列的联合概率分布。在序列标注任务中,CRF可以捕捉标签之间的依赖关系,特别是相邻标签之间的依赖。这对于诸如命名实体识别、词性标注等序列标注任务非常重要。为了更好地捕捉标签之间的关系,CRF经常被用作深度学习模型的输出层。具体来说,深度学习模型可以学习输入序列的表示,然后使用CRF层对这些表示进行解码,考虑标签之间的依赖关系,从而生成最终的标签序列。
这种结合CRF和深度学习的方法在自然语言处理任务中广泛应用,包括命名实体识别、词性标注、分块等。通过结合深度学习的表示学习和CRF的序列建模能力,模型在序列标注任务上取得了更好的性能。在医学文本中,CRF 可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。

img
img

丰富的网络学习资源存在多样性与广度之优势。然而,在知识体系不够完善的情况下,在遇到技术问题时往往停留在表面理解层面,并未进行深入探究和持续学习,则难以实现实质性的技术进步。

希望获取系统化资料的朋友,请直接点击此链接访问

一个人的步伐可能很快, 但是一群人则能够走得更加从容!尽管你可能已经是IT行业的资深从业者, 或者只是出于对这个领域的热爱而加入我们, 都欢迎加入我们的圈子(提供技术交流机会的技术分享区, 分享学习资源的学习空间, 提供职场吐槽出口的吐槽区, 以及为大厂内推准备的各种资源的大厂内推部分享),让我们共同进步吧!

099)]

互联网上有大量学习资料 available, 但如果没有形成系统化的知识架构, 遇到问题时往往停留在表面理解而非深入探究, 这样就难以实现真正的技术进步了。

想要一套系统化资料的同好们,请点击这里下载

单兵作战效率高, 但团队协作才能事半功倍!无论你是IT行业的资深从业者还是新兴爱好者, 都诚挚邀请您加入我们的技术社区(技术交流、学习资源、职场吐槽、大厂内推、面试辅导), 让我们共同进步吧!

全部评论 (0)

还没有任何评论哟~