当前位置: 首页 > news >正文

从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。

在这里插入图片描述

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实战掌握技能,助力用户更好利用 CSDN 平台,自主完成项目设计升级,提升自身的硬实力。

在这里插入图片描述

  1. 专栏订阅:项目大全提升自身的硬实力

  2. [专栏详细介绍:项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域)

从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。

  • 项目效果

以下两张图是系统实际运行效果:

1.项目运行方式

运行环境:Python3
数据库:neo4j
预训练词向量:https://github.com/Embedding/Chinese-Word-Vectors或https://pan.baidu.com/s/14JP1gD7hcmsWdSpTvA3vKA

1、搭建知识图谱:python build_grapy.py。大概几个小时,耐心等待。
2、启动问答测试:python kbqa_test.py

部分代码展示:

from entity_extractor import EntityExtractor
from search_answer import AnswerSearchingclass KBQA:def __init__(self):self.extractor = EntityExtractor()self.searcher = AnswerSearching()def qa_main(self, input_str):answer = "对不起,您的问题我不知道,我今后会努力改进的。"entities = self.extractor.extractor(input_str)if not entities:return answersqls = self.searcher.question_parser(entities)final_answer = self.searcher.searching(sqls)if not final_answer:return answerelse:return '\n'.join(final_answer)if __name__ == "__main__":handler = KBQA()while True:question = input("用户:")if not question:breakanswer = handler.qa_main(question)print("小豪:", answer)print("*"*50)

2.医疗知识图谱

数据源:39健康网。包括15项信息,其中7类实体,约3.7万实体,21万实体关系。

本系统的知识图谱结构如下:

1.1 知识图谱实体类型

实体类型中文含义实体数量举例
Disease疾病14336乙肝,癫痫
Alias别名8877小儿褐黄病综合征,广疮
Symptom症状5622手足烦热,四肢麻木
Part发病部位82手部,上肢
Department所属科室82感染科,外科
Complication并发症3201落枕,流感
Drug药品4625西黄胶囊,司帕沙星
Total总计36825

1.2 知识图谱实体关系类型

实体关系类型中文含义关系数量举例
ALIAS_IS别名是52578癫痫 别名是 羊角风
HAS_SYMPTOM症状有62105乙肝 症状有 肝功能异常
PART_IS发病部位是26660乙肝 发病部位是 肝
DEPARTMENT_IS所属科室是33867乙肝 所属科室是 传染科
HAS_COMPLICATION并发症有25183乙肝 并发症有 肝硬化
HAS_DRUG可用药品35914乙肝 可用药品 恩替卡韦分散片
TOTAL总计210018约210018对关系

1.3 知识图谱疾病属性

疾病属性中文含义举例
age发病人群老人,小孩
insurance是否医保医保
infection是否传染有传染性
checklist检查项目肝功能检查
treatment治疗方法药物治疗、心理治疗
period治愈周期一周
rate治愈率0.1%
money费用1000-2000元

3.问题意图识别

基于特征词分类的方法来识别用户查询意图

意图类型中文含义举例
query_disease查询疾病肝肿大是什么病
query_symptom查询症状慢性乙肝有什么表现
query_cureway查询治疗方案肚子一直痛怎么办
query_checklist查询检查项目乙肝需要做哪些检查
query_department查询所属科室乙肝去哪个科
query_rate查询治愈率乙肝能治好吗
query_period查询治愈周期乙肝多久能治好
disease_describe查询疾病所以属性慢性咽炎

4.总结

1、本项目构建简单,通过本项目能了解KBQA的工作流程。

2、本次通过手工标记210条意图分类训练数据,并采用朴素贝叶斯算法训练得到意图分类模型。其最佳测试效果的F1值达到了96.68%。选用NB的原因是通过与SVM训练效果比较后决定的。

3、优化点:

  • 训练数据还是太少,且对问题进行标注时易受主观意见影响。意图类别还是太少,本系统得到分类模型只能预测出上面设定的7类意图。
  • 对于问题句子中有多个意图的情况只能预测出一类,今后有时间再训练多标签模型吧。。
  • 知识图谱太小了,对于许多问题都检索不出答案。今后可以爬取其它的健康网站数据或者利用命名实体识别和关系抽取技术从医学文献中抽取出实体与关系,以此来扩充知识图谱。
  • 在本项目中采用了预训练的词向量来找近似词。由于该词向量特别大,加载非常耗时,因此影响了整个系统的效率。这个可能是因为电脑配置太低的原因吧。
  • 没有实现推理的功能,后续将采用多轮对话的方式来理解用户的查询意图。同时将对检索出的结果进行排序,可靠度高的排在前面。

项目码源见文章顶部or文末

https://download.csdn.net/download/sinat_39620217/88000952

http://www.lryc.cn/news/97527.html

相关文章:

  • 编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)
  • 技术笔记2023076 rBoot学习7
  • 收藏这6个抠图工具,一键抠图不用愁!
  • 四,Eureka 第四章
  • k8s常见的资源对象使用
  • JavaScript 简单实现观察者模式和发布订阅模式
  • 高通WLAN框架学习(37)-- TDLS(Tunneled Direct Link Setup)通道直接链路建立
  • 高算力AI模组前沿应用:基于ARM架构的SoC阵列式服务器
  • 老年公寓人员定位管理系统:提升安全与关怀的智能解决方案
  • 每日一题之两个字符串的删除操作
  • nacos安装与基础配置
  • GitHub Copilot:让开发编程变得像说话一样简单
  • 并发编程中锁的优化
  • 笔试题:统计字符串中某字符串在其出现的字符个数
  • Java NIO Files类读取文件流方式详解
  • Mybatis快速入门,Mybatis的核心配置文件
  • go语言中defer执行顺序
  • webpack xxx is not a constructor
  • 安装支持vs2019的MFC(解决MSBuild 错误 MSB8041、MSB8042)
  • 校园电气安全风险分析及预防措施 安科瑞 许敏
  • 机器学习之十大经典算法
  • 系统架构设计师 11:未来信息综合技术
  • Docker 数据管理[文件互访] 端口映射[暴露端口提供服务] 容器互联[指定容器名防止IP变动]
  • 【stable diffusion】保姆级入门课程04-Stable diffusion(SD)图生图-局部重绘的用法
  • 制作Java8环境Docker镜像
  • 抖音SEO源码开发指南:介绍如何开发抖音SEO源码的基本步骤和要点。
  • 【SDOF振荡器的非线性-非弹性多轴时间响应分析】用于SDOF振荡器非线性非弹性时程分析的鲁棒性分析研究(Matlab代码实现)
  • VMPWN的入门系列-1
  • 将标签中某一个类别添加到另一个标签中
  • 将指定图片控件中的图片闪烁