前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。

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

原创
作者头像
汀丶人工智能
发布2023-07-27 21:55:54
4020
发布2023-07-27 21:55:54
举报
文章被收录于专栏:NLP/KGNLP/KG

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

  • 项目效果

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

1.项目运行方式

运行环境:Python3

数据库:neo4j

预训练词向量:https://github.com/Embedding/Chinese-Word-Vectorshttps://pan.baidu.com/s/14JP1gD7hcmsWdSpTvA3vKA

1、搭建知识图谱:python build_grapy.py。大概几个小时,耐心等待。

2、启动问答测试:python kbqa_test.py

部分代码展示:

代码语言:txt
复制
from entity_extractor import EntityExtractor
from search_answer import AnswerSearching


class 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 answer
        sqls = self.searcher.question_parser(entities)
        final_answer = self.searcher.searching(sqls)
        if not final_answer:
            return answer
        else:
            return '\n'.join(final_answer)


if __name__ == "__main__":
    handler = KBQA()
    while True:
        question = input("用户:")
        if not question:
            break
        answer = 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类意图。
  • 对于问题句子中有多个意图的情况只能预测出一类,今后有时间再训练多标签模型吧。。
  • 知识图谱太小了,对于许多问题都检索不出答案。今后可以爬取其它的健康网站数据或者利用命名实体识别和关系抽取技术从医学文献中抽取出实体与关系,以此来扩充知识图谱。
  • 在本项目中采用了预训练的词向量来找近似词。由于该词向量特别大,加载非常耗时,因此影响了整个系统的效率。这个可能是因为电脑配置太低的原因吧。
  • 没有实现推理的功能,后续将采用多轮对话的方式来理解用户的查询意图。同时将对检索出的结果进行排序,可靠度高的排在前面。

项目链接跳转

文章码源链接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。
  • 1.项目运行方式
  • 2.医疗知识图谱
  • 3.问题意图识别
  • 4.总结
  • 项目链接跳转
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com