【KBQA】医疗知识图谱的问答系统实现

2023-11-16

  1. 知识图谱的构建

1.1数据的收集

  • 初探医疗知识图谱:这篇文章概述了医疗知识图谱的定义、特点和应用,以及构建医疗知识图谱的数据源和步骤。文章指出,目前医疗知识图谱构建的数据源可以分为三个部分:权威的医学文献、临床数据和互联网信息。

  • 医学知识图谱构建关键技术及研究进展:这篇文章对医学知识图谱构建的关键技术及应用进行了全面的梳理,包括本体构建、实体抽取、关系抽取、属性抽取、实体链接、知识融合等。文章还介绍了一些公共数据集和开源工具,以及一些典型的应用案例。

  • 医学知识图谱构建技术与研究进展:这篇文章也介绍了从非结构化数据中自动提取实体、关系和属性的方法,以及如何利用已有的本体或标准化资源进行实体链接和消歧。文章还分析了目前存在的问题和挑战,以及未来可能的发展方向。

1.2 知识抽取

1.2.1 Schema定义

医疗知识图谱是一种揭示医学实体之间关系的语义网络,可以用于支持医疗领域的智能应用,例如问答、诊断、推荐等。

医疗知识图谱构建中Schema定义是指对医学领域内的概念类型、属性和关系进行抽象和规范,形成一个领域本体,用于指导知识图谱的数据获取、存储和查询。

Schema定义是知识图谱构建的重要步骤,需要综合考虑业务场景、数据资源、术语标准化和概念通用性等因素。

医疗知识图谱问答系统Schema定义是指在构建医疗知识图谱的基础上,设计一种用于表示和查询医疗领域问题和答案的数据结构。

一般来说,一个医疗知识图谱问答系统Schema包括以下几个部分:

  • 实体:指代医疗领域中的具体概念或对象,如药品、疾病、症状等。

  • 属性:指代实体的特征或描述,如药品的成分、剂型、适应症等。

  • 关系:指代实体之间的联系或影响,如疾病与药物的治疗关系、食物的忌吃关系等。

  • 问题:指代用户对医疗领域的信息需求,如“高血压应该吃什么药?”、“感冒有哪些常见的症状?”等。

  • 答案:指代针对问题的回复或解释,如“高血压可以服用降压药物,如氨氯地平片、硝苯地平片等。”、“感冒常见的症状有发热、咳嗽、流鼻涕等。”等。

一个医疗知识图谱问答系统Schema定义的例子如下:

实体

属性

关系

问题

答案

药品

成分、剂型、适应症、禁忌证、不良反应等

治愈(与)(disease)、相互作用(与)(drug)、替代(与)(drug)等

氨氯地平片有什么作用?

氨氯地平片是一种降压药物,主要成分是氨氯地平。它可以扩张血管,降低心脏负担,从而降低血压。2

疾病

名称、别名、发生部位、临床表现、诊断方法、治愈率等

导致(由)(symptom)、引起(由)(cause)、治愈(由)(drug)、预防(由)(food)、忌吃(由)(food) 等

高血压怎么预防?

高血压是一种常见的慢性非传染性疾

1.2.2 知识抽取数据标准工具

医疗知识图谱问答系统知识抽取标注工具是指用于从医疗文本中自动或半自动地识别出实体、属性和关系,并将其标注为知识图谱的构建元素的软件工具。

目前,有一些开源的中文命名实体识别和关系抽取工具,可以用于辅助医疗知识图谱问答系统的知识抽取标注过程,例如:

1.2.3 医疗实体关系抽取及SOTA模型

医疗知识图谱问答系统实体关系抽取是指从医疗文本中识别出实体对,并标注它们之间的语义关系,从而构建知识图谱的三元组。

实体关系抽取是知识图谱构建的核心步骤之一,可以提升数据的整合能力,便于下游的知识推理任务。

目前,有一些开源的中文关系抽取工具,可以用于辅助医疗知识图谱问答系统的实体关系抽取过程,例如:

  • OpenRE:清华大学自然语言处理与社会人文计算实验室开发的开放式关系抽取框架,可以从任意领域和语言的文本中抽取出未预定义的关系类型。

STOA模型是一种基于预训练语言模型和自注意力机制的实体关系抽取模型,可以同时抽取多个实体对和多种关系。

STOA模型的主要特点有:

  • 使用BERT作为编码器,利用其强大的表征能力来捕捉文本中的语义信息。

  • 使用自注意力机制来计算每个实体对之间的相关性得分,从而选择最相关的实体对进行关系分类。

  • 使用多任务学习框架,将实体对选择和关系分类作为两个子任务,并共享编码器参数,提高模型效率和泛化能力。

1.2.4 医疗实体名称归一化与实体对齐

医疗实体名称归一是指将医学领域中的不同表达方式或同义词归为一个标准名称,例如“高血压”和“高血压症”都归为“高血压”。这样可以减少数据的冗余和歧义,提高知识图谱的质量。

医疗实体对齐是指判断多源异构数据中的实体是否指向真实世界同一对象的过程,例如判断两个知识图谱中的“阿司匹林”是否表示同一种药物。如果是,则在这些实体之间构建对齐关系,同时对实体包含的信息进行融合和聚集。这样可以增加知识图谱的覆盖度和完整性。

医疗实体名称归一和实体对齐都是知识图谱构建中的重要技术,需要利用多种信息,如关系三元组、属性三元组、摘要等,以及各种算法,如基于规则、基于特征、基于嵌入等。

医疗知识图谱问答系统实体名称归一化是指将不同来源或表达方式的实体名称统一为标准的实体名称,以消除歧义和冗余。

医疗知识图谱问答系统实体对齐是指在多个异源异构的知识图谱中发现完全等价的实体,即发现指代相同真实世界物体的两个实体。

这两个任务都是知识图谱构建和融合的重要步骤,可以提高知识图谱的质量和覆盖度,便于下游的知识检索和问答任务。

目前,有一些开源的中文实体名称归一化和实体对齐工具,可以用于辅助医疗知识图谱问答系统的这些过程,例如:

  • MedSyn:基于深度学习和规则匹配的中文医学术语归一化工具。

  • KGEA:基于知识表示学习和神经网络模型的跨语言跨领域知识图谱对齐框架。

医疗知识图谱问答系统实体关系抽取是指从医疗文本中识别出实体对,并标注它们之间的语义关系,从而构建知识图谱中的三元组。

1.3 知识存储

医疗知识图谱问答系统知识存储是指将医疗领域的实体、关系和属性等知识以图结构的形式存储在数据库中,以便于进行知识检索和问答。

一般来说,医疗知识图谱问答系统需要设计一个适合产品化的Schema,即定义好实体类型、关系类型和属性类型,并根据不同的医学信息标准来组织知识。

目前,有一些开源的数据库可以用于存储和管理医疗知识图谱,例如:

  • OrientDB:一个多模型数据库,支持图、文档、对象等数据模型,并提供SQL-like查询语言和RESTful API。

  • ArangoDB:一个分布式原生多模型数据库,支持图、文档、键值等数据模型,并提供AQL查询语言和GraphQL API。

2. 语义解析阶段(NLU)

2.1 意图识别

中文医疗意图识别是一种自然语言处理任务,目的是从医患对话中识别出患者或医生的意图,例如询问症状、建议治疗方案、预约检查等。

根据我搜索到的信息,目前中文医疗意图识别的sota模型是基于BERT的模型,例如Lex-BERT和CCL2021智能对话诊疗评测冠军方案。这些模型利用了预训练语言模型和实体类型信息来提高意图识别的准确性和鲁棒性。

医疗知识图谱问答系统意图识别是指根据用户的自然语言问题,识别出用户的查询意图,例如定义、病因、治疗方法等,并根据不同的意图构造相应的查询语句,在医疗知识图谱中搜索答案

意图识别是知识图谱问答系统的一个重要组成部分,它可以提高问答系统的准确性和效率

2.2 槽位填充

  • 基于医疗知识图谱的问答系统:这篇文章介绍了如何构建一个基于医疗知识图谱的问答系统,包括知识图谱的构建、意图识别、实体链接、查询生成和结果返回等步骤。

2.2.1 语义槽设计

医疗知识图谱问答系统语义槽设计是指根据用户的问题,抽取出相关的实体和属性,作为查询知识图谱的条件。

语义槽设计是知识图谱问答系统的一个重要组成部分,它可以提高问答系统的灵活性和鲁棒性。

2.2.2实体链指

实体识别:首先要识别出文本中表示医疗实体的词语,如疾病、药物、器官等。这一步可以采用基于规则或基于机器学习的方法,如字典匹配、条件随机场、双向循环神经网络等。

候选实体生成:然后要从知识库中找出与文本中识别出的实体词语相对应的候选实体。这一步可以采用基于字符串相似度或基于语义相似度的方法,如编辑距离、Jaccard系数、余弦相似度等。

实体消歧:接着要从候选实体中选择出最合适的一个作为文本中实体词语所指代的真正实体。这一步可以采用基于特征或基于深度学习的方法,如支持向量机、随机森林、注意力机制等。

NIL判断:最后要判断文本中是否存在没有对应知识库中实体的指称项,即NIL指称项,并给出其类别。这一步可以采用基于规则或基于问答的方法,如正则表达式、模板匹配、BERT等。

医疗实体链指是指将自然语言文本中的医疗实体与知识库中的标准化概念进行对应的任务这是一个具有挑战性和重要性的任务,因为不同的数据源可能使用不同的术语来表示相同或相似的医疗实体

目前,最新的(SOTA)模型是SapBERT,它是一个基于自监督对齐预训练(Self-Alignment Pretraining)的双向编码器表示模型(Biomedical Entity Representations)。它可以同时处理多种类型的医疗实体,并且在六个公开的医疗实体链指基准数据集上取得了最佳效果

3. 知识计算模块

3.1图数据库操作(Ctpher)

医疗知识图谱问答系统图数据库操作是指使用图数据库(如neo4j)来存储和查询医疗知识图谱中的实体和关系。

图数据库操作是知识图谱问答系统的一个重要组成部分,它可以提高问答系统的速度和效果。

3.2 问题检索

医疗知识图谱问答系统问题检索是指根据用户的问题,从知识图谱中查找相关的答案。

问题检索是知识图谱问答系统的一个重要组成部分,它可以提高问答系统的准确性和可靠性。

3.2.1 文本倒排索引

医疗知识图谱问答系统文本倒排索引是指使用文本倒排索引的技术,来提高从知识图谱中检索相关答案的效率

文本倒排索引是一种存储某个单词(或词组)在一组文档中的存储位置的映射,提供了可以根据内容来查找文档的方式它可以将用户的问题分解为关键词,然后根据关键词匹配相应的文档,从而缩小搜索范围

3.2.2 文本向量化表示

文本向量化表示是指将文本用向量或矩阵的形式表示,也可以理解为对文本的数值化处理。它可以将单词映射到另一个空间,生成一个在新空间上的表达。文本向量化是自然语言处理中必不可少的步骤,可以根据不同的粒度分为字、词、句子或篇章几个层次

3.2.3 faiss向量索引

Faiss是一个用于高效相似度搜索和密集向量聚类的库。它包含了在任意大小的向量集合中搜索的算法,甚至可以处理那些可能不适合在RAM中存储的向量集合。它还包含了用于评估和参数调优的支持代码Faiss是用C++编写的,完全支持Python/numpy接口

Faiss有多种类型的索引,其中一种是Flat索引,它只是将向量编码成固定大小的代码,并将它们存储在一个ntotal * code_size字节的数组中。在搜索时,所有索引的向量都被顺序解码并与查询向量进行比较

结论

医疗知识图谱问答系统是指利用医疗领域的知识图谱来回答自然语言问题的系统。这是一个复杂的任务,需要将自然语言问题转换为结构化的查询语言,并在知识图谱中寻找合适的答案

目前,有许多关于医疗知识图谱问答系统的研究,例如:

参考文献

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【KBQA】医疗知识图谱的问答系统实现 的相关文章

随机推荐

  • java+内存分配及变量存储位置的区别

    Java内存分配与管理是Java的核心技术之一 之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识 今天我们再次深入Java核心 详细介绍一下Java在内存分配方面的知识 一般Java在内存分配时会涉及到以下区域 寄
  • Mysql常用的三种数据库引擎比较

    点击上方蓝字 快速关注 ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法 它在设计之时就考虑到数据库被查询的次数要远大于更新的次数 因此 ISAM执行读取操作的速度很快 而且不占用大量的内存和存储资源 ISAM的两个主要不足
  • ReplicaSet和ReplicationController区别

    ReplicaSet是新一代的ReplicationController ReplicaSet的pod标签选择器的表达能力更强 例如ReplicaSet能同时匹配两种标签 env dev和env pro ReplicationControl
  • ajax请求二进制数据

    var url var xhr new XMLHttpRequest xhr open GET url true 也可以使用POST方式 根据接口 xhr responseType blob 返回类型blob 定义请求完成的处理函数 请求前
  • 使用不同的渲染

    11
  • ubuntu更新源报错--软件包管理器apt在验证密钥时使用了旧的方式

    目录 一 解决报错一 二 解决报错二 一 解决报错一 1 报错原信息 Key is stored in Legacy trusted gpg keyring etc apt trusted gpg see the DEPRECATION S
  • 如何编辑加密的PDF

    在不知道密码的情况下如何编辑打印pdf呢 1使用WPS打开加密的pdf 2点击打印 神奇的事情 明明没有打印权限 选择打印为PDF 3获得一个新的有权限的PDF
  • vue3项目(六)---detail

    1 详情页 页面准备和路由配置 点击新鲜好物里的商品后 会跳转到详情页 并且会携带参数过去 1 先准备静态页面 在views下新建一个Detail组件 2 配置路由 src router index js import Detail fro
  • Python入门学习(三)核心语法(1)

    3 1Python序列详解 索引和引片 3 1Python序列详解 索引和引片 3 1 1 索引 list1 1 2 3 4 元素值 1 2 3 4 正索引 0 1 2 3 负索引 4 3 2 1 print list的第一个元素是 lis
  • 第一章_RabbitMQ简介

    MQ是什么 MQ Message Quene 翻译为 消息队列 通过典型的 生产者和消费者模型 生产者不断向消息队列中生产消息 消费者不断的从队列中获取消息 因为消息的生产和消费都是异步的 而且只关心消息的发送和接收 没有业务逻辑的侵入 轻
  • 出现找不到msvcp140.dll无法继续执行代码要怎么解决?

    出现找不到msvcp140 dll无法继续执行代码要怎么解决 当你尝试在Windows系统上运行某些程序或游戏时 可能会遇到 找不到msvcp140 dll无法继续执行代码 的错误提示 这个错误通常表示你的系统缺少了msvcp140 dll
  • centos7密码破解

    centos7密码破解 首先准备一台centos7系统 密码知道不知道都可以 1 先打开centos 然后进入选择系统的那一栏 然后点击任意键停住 按住e进入单用户模式 已经进入单用户模式 2 在Linux16最后面加上 目录rd brea
  • python操作Neo4j进行同名实体合并

    python操作Neo4j进行同名实体合并 使用python操作neo4j 3 5 4版本 时 防止已有节点重复创建 使用NodeMatcher函数 from py2neo import Graph Node Relationship No
  • 华为OD机试-计算网络信号

    华为OD机试 计算网络信号 网络信号经过传递会逐层衰减 且遇到阻隔物无法直接穿透 在此情况下需要计算某个位置的网络信号值 注意 网络信号可以绕过阻隔物 array m n 的二维数组代表网格地图 array i j 0代表i行j列是空旷位置
  • LeNet5的深入解析

    论文 Gradient based learning applied to document recognition 参考 http blog csdn net strint article details 44163869 LeNet5
  • Docker 使用国内镜像仓库

    Docker 使用国内镜像仓库 1 问题描述 2 总结 1 问题描述 由于某些原因 导致Docker镜像在国内下载速度特别慢 所以为了沉浸式开发 最好切换为国内源 这里以163 的镜像仓库举例 首先修改 etc docker daemon
  • 抓取得物数据出现验证码的解析思路

    原创来自本人的公众号 阿嚏个技术 公众号文章地址 得物采集数据出现geetest验证码的解析方式 本文仅提供反爬技术的分析思路 勿做商业用途 如有侵权 请联系删除 之前写过一篇爬得物数据的文章 毒 得物 APP历史购买数据抓取 阅读数还是挺
  • thrust快速入门指南(并行算法库,类似C++的STL)

    thrust快速入门指南 文章目录 thrust快速入门指南 Introduction Prerequisites Simple Example Vectors Thrust Namespace Iterators and Static D
  • Django安装提示错误

    使用sudo pip install 的时候出现下面一段代码 The directory Users XX Library Caches pip or its parent directory is not owned by the cur
  • 【KBQA】医疗知识图谱的问答系统实现

    知识图谱的构建 1 1数据的收集 初探医疗知识图谱 这篇文章概述了医疗知识图谱的定义 特点和应用 以及构建医疗知识图谱的数据源和步骤 文章指出 目前医疗知识图谱构建的数据源可以分为三个部分 权威的医学文献 临床数据和互联网信息 医学知识图谱