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

  1. 知识图谱的构建

1.1数据的收集

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

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

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

【KBQA】医疗知识图谱的问答系统实现_第1张图片

1.2 知识抽取

1.2.1 Schema定义

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

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

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

【KBQA】医疗知识图谱的问答系统实现_第2张图片

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

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

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

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

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

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

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

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

实体

属性

关系

问题

答案

药品

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

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

氨氯地平片有什么作用?

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

疾病

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

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

高血压怎么预防?

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

1.2.2 知识抽取数据标准工具

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

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

  • DeepKE:浙江大学知识引擎实验室开发的中文关系抽取开源工具,可以从文本中抽取出实体之间的语义关系。

  • DiaKG:用于构建糖尿病知识图谱的高质量中文数据集,包含了大量经过人工智能专家和医学专家标注的实体和关系语料。

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

【KBQA】医疗知识图谱的问答系统实现_第3张图片

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

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

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

  • DeepKE:浙江大学知识引擎实验室开发的中文关系抽取开源工具,可以从文本中抽取出实体之间的语义关系。

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

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

STOA模型的主要特点有:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.3 知识存储

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

【KBQA】医疗知识图谱的问答系统实现_第4张图片

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

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

  • Neo4j:一个流行的图数据库,支持Cypher查询语言和多种编程语言接口。

  • 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字节的数组中。在搜索时,所有索引的向量都被顺序解码并与查询向量进行比较

结论

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

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

  • 基于爬虫技术和规则匹配方法构建了一个包含7种类型和11种关系的医疗知识图谱,并使用该图谱进行医患对话

  • 基于神经机器翻译(NMT)的方法,将自然语言问题直接翻译为SPARQL查询语句,并在知识图谱中执行查询

  • 基于向量表示和三元组形式对问题进行结构化,并使用相似度计算和排序算法在知识图谱中检索答案

  • 基于结构化数据和Neo4j数据库构建了一个包含36825个实体和210018个关系的医疗知识图谱,并使用该图谱进行中文医学问答

参考文献

  • https://zhuanlan.zhihu.com/p/258838308

  • https://zhuanlan.zhihu.com/p/427606678

  • https://zhuanlan.zhihu.com/p/41119169

  • https://zhuanlan.zhihu.com/p/165450925

  • https://zhuanlan.zhihu.com/p/379202949

  • https://zhuanlan.zhihu.com/p/268625650

  • https://zhuanlan.zhihu.com/p/424733768

  • https://zhuanlan.zhihu.com/p/69362160

  • https://zhuanlan.zhihu.com/p/400058707

  • https://zhuanlan.zhihu.com/p/258838308

  • https://zhuanlan.zhihu.com/p/59401605

  • https://zhuanlan.zhihu.com/p/346406587

  • https://zhuanlan.zhihu.com/p/165963264

  • https://aclanthology.org/2021.naacl-main.334/

  • https://blog.csdn.net/qq_41135504/article/details/108776333

  • https://zhuanlan.zhihu.com/p/388907117

  • https://github.com/facebookresearch/faiss

你可能感兴趣的:(自然语言处理(NLP),NLP,知识图谱,对话系统,关系抽取,命名实体识别)