知识图谱(6)基于KG构建问答系统

news2024/11/24 22:37:21

问答系统概述

问答系统是人类从机器中获取数据与知识的主要形式,问答系统包括NLP的多种应用:语义理解,知识图谱,推理,文本生成。问答系统是检验机器智能的一种方式(图灵测试)。


图灵测试(英语:Turing test,又称“图灵判断”),是阿兰·图灵于1950年提出的一个关于判断机器是否能够思考的著名试验,测试某机器是否能表现出与人等价或无法区分的智能。如果一个人(代号C)使用测试对象皆理解的语言去询问两个他不能看见的对象任意一串问题。对象为:一个是正常思维的人(代号B)、一个是机器(代号A)。如果经过若干询问以后,C不能得出实质的区别来分辨A与B的不同,则此机器A通过图灵测试。


对于领域特定的QA,问答系统需要KG作为支撑,结构化的KG可以实现更精准,更高召回的回答。

问答系统中的技术

核心是将自然语言转为可以用于KG结构化查询的语句,比如:

  • 自然语言:有多少人住在北京
  • 查询语句:select value From KG where subject="北京" and predicate="人口"

这里有两个关键问题:

  • 实体链接:将自然语言中的文本与KG中的条目链接,具体操作是将文本中的实体映射到给定知识库中的实体(比如基于token的embedding相似度进行链接)
  • 关系理解:一般简单的项目都采用模板匹配关系,现在可以用深度学习模型分类关系,比如输入为自然语言,输出为关系的分类,但这有个潜在问题,分类空间太大,所以可能需要LLM的zero-shot能力

KG可以为问答系统带来结构化的领域知识,在查询时具有明确的可解释性,适合构建领域特定中的问答系统。

以肝病KG的QA系统为例:https://github.com/vivianLL/QASystemOnHepatopathyKG,首先构建KG,这里需要明确:

  • 构建方式:专家手动标注知识,或者自动从文本中提取知识
  • 存储方式:一般为neo4j
  • 有哪些实体,有哪些关系,实体有哪些属性

fig1

  • 来自:https://github.com/liuhuanyong/QASystemOnMedicalKG

对于数据,在medical.json中,包含一共8808条数据,其中某条数据为下面的格式,注意其他数据可以不局限于下面的这些格式:

{ "_id" : { "$oid" : "5bb57901831b973a137e6142" }, 
"name" : "腱鞘炎", 
"desc" : "腱鞘炎是临床上最常见到的手外科疾病之一,又称“键盘手”。主要是指肌腱在短期内活动频繁或用力过度或慢性寒冷刺激,导致腱鞘组织发生炎性反应、纤维变性,使腱鞘变厚,引起鞘管狭窄,肌腱在鞘管内活动受到限制,而炎性反应同时引起局部疼痛的一类疾病。腱鞘炎好发于30-50岁之间,女性多于男性,其比例为10:1。", 
"category" : [ "疾病百科", "外科", "骨外科" ], 
"prevent" : "1、在洗衣、做饭、编织毛衣、打扫卫生等家务劳动时,要注意手指、手腕的正确姿势,不要过度弯曲或后伸;提拿物品不要过重;手指、手腕用力不要过大。\n2、感觉身体关节疲劳时可以泡个热水澡,舒解一下紧绷的肌肉,或是在酸痛的部位进行热敷。\n3、冬天洗衣服时,最好用温水,下雪后扫雪,也要戴上棉手套,防止手部受寒。\n4、手腕关节做360度的旋转;或将手掌用力握拳再放松,来回多做几次;或将手指反压或手掌反压几下,都可以有效缓解手部的酸痛。\n5、对于长期伏案办公人员来说,应采用正确的工作姿势,尽量让双手平衡,手腕能触及实物,不要悬空。", 
"cause" : "可以是受伤、过份劳损(尤其见于手及手指)、骨关节炎、一些免疫疾病,甚至是感染也有可能引起。\n一些需要长期重复劳损关节的职业如打字员、器乐演奏家、货物搬运或需要长时间电脑操作的行业等,都会引发或加重此病。常见患处有手腕、手指、肩部等位置。\n女性及糖尿病患者会较易患上这病。病人会感到关节疼痛,晨僵,通常关节晨僵的感觉在起床后最为明显,而症状并不会随着活动频繁而明显缓解。受影响的关节肿胀,甚至弹响,关节活动障碍。", 
"symptom" : [ "手指小关节痛肿", "腕部肿胀压痛", "手腕在大拇指侧的疼痛", "扳机指的弹响", "结节", "腕关节扭挫伤", "拇指不明原因疼痛", "筋膜疼痛" ], 
"yibao_status" : "否", 
"get_prob" : "0.005%", 
"easy_get" : "好发于30-50岁之间", 
"get_way" : "无传染性", 
"acompany" : [ "肿胀" ], 
"cure_department" : [ "外科", "骨外科" ], 
"cure_way" : [ "支持性治疗", "康复治疗" ], 
"cure_lasttime" : "2-3月", 
"cured_prob" : "98%", 
"common_drug" : [ "布洛芬缓释胶囊", "依托芬那酯凝胶" ], 
"cost_money" : "根据不同医院,收费标准不一致,市三甲医院约(1000——5000元)", 
"check" : [ "斯比德试验", "屈肌紧张试验", "伸肌紧张试验", "雅加森试验" ], 
"do_eat" : [ "鸭蛋", "鸡蛋", "鸭翅", "鸡爪" ], 
"not_eat" : [ "杏仁", "腐竹", "白扁豆", "虾皮" ], 
"recommand_eat" : [ "羊肉煎包", "羊肉温补汤", "鸡肉冬菜饼", "鸡肉炒藕丝", "鸡肉蛋花汤", "草鱼豆腐", "竹筒蒸草鱼", "酱肉西兰花" ], 
"recommand_drug" : [ "布洛芬缓释混悬液", "Ⅰ", "布洛芬缓释胶囊", "双氯芬酸钠肠溶片", "伤痛酊", "复方七叶皂苷钠凝胶", "双氯芬酸二乙胺凝胶", "布洛芬片", "双氯芬酸钠缓释片", "阿西美辛缓释胶囊", "酮洛芬凝胶", "依托芬那酯凝胶" ], 
"drug_detail" : [ "正士布洛芬缓释胶囊(布洛芬缓释胶囊)", "澳托芬依托芬那酯凝胶(依托芬那酯凝胶)", "南国布洛芬片(布洛芬片)", "邦琪集团伤痛酊(伤痛酊)", "仕象(双氯芬酸二乙胺凝胶)", "天津金耀酮洛芬凝胶(酮洛芬凝胶)", "欧莱(复方七叶皂苷钠凝胶)", "四川中方布洛芬缓释混悬液(布洛芬缓释混悬液)", "常州制药布洛芬片(布洛芬片)", "石药布洛芬片(布洛芬片)", "山西云鹏布洛芬片(布洛芬片)", "柏赛罗布洛芬缓释胶囊(布洛芬缓释胶囊)", "珠海联邦布洛芬缓释胶囊(布洛芬缓释胶囊)", "北京红林布洛芬缓释胶囊(布洛芬缓释胶囊)", "太平布洛芬缓释胶囊(布洛芬缓释胶囊)", "白云峰双氯芬酸钠肠溶片(双氯芬酸钠肠溶片)", "江西南昌济生双氯芬酸钠肠溶(双氯芬酸钠肠溶片)", "欧意双氯芬酸钠肠溶片(双氯芬酸钠肠溶片)", "蜀中双氯芬酸钠肠溶片(双氯芬酸钠肠溶片)", "瑞培林双氯芬酸钠肠溶片(双氯芬酸钠肠溶片)", "中大双氯芬酸钠缓释片(Ⅰ)(双氯芬酸钠缓释片(Ⅰ))", "特适纳双氯芬酸钠缓释片(双氯芬酸钠缓释片)", "高顺松阿西美辛缓释胶囊(阿西美辛缓释胶囊)" ] }

实体类型如下:
fig2
KG中有以下关系:
fig3

KG中的实体有以下属性:
fig4
可以看到,上面例子中的数据"name" : "腱鞘炎"是一个疾病相关的实体。

KG是一个工程化的领域,而关于领域特定的问答,如果对自然语言的涉及很多,比如输入输出都以自然语言为主,还是建议使用LLM,领域知识往往是利用KG,由GPT的API生成具有领域知识的微调数据集,然后再用这些微调数据基于LoRA训练指定的LLM。

如果涉及到输入输出本身就是结构化条目,对自然语言的参与比较少,比如在药物不良反应推荐系统中,我们重点是构建准确的KG,其中包含药物,食物等实体,关系则是两者之间的不良反应,这种场景下,我们可以直接在KG上查询知识条目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 继承详解

目录 C 继承介绍 继承中的特点 public 继承 protected 继承 private 继承 在类里面不写是什么类型,默认是 private 的 如果继承时不显示声明是 private,protected,public 继承,则默认是 private 继承,在 struct …

【每日一题】递枕头

文章目录 Tag题目来源题目解读解题思路方法一:模拟方法二: O ( 1 ) O(1) O(1) 解法 写在最后 Tag 【模拟】【 O ( 1 ) O(1) O(1) 公式】【2023-09-26】 题目来源 2582. 递枕头 题目解读 编号从 1 到 n 的 n 个人站成一排传递枕头。最初,排…

知识工程---neo4j 5.12.0+GDS2.4.6安装

(已安装好neo4j community 5.12.0) 一. GDS下载 jar包下载地址:https://neo4j.com/graph-data-science-software/ 下载得到一个zip压缩包,解压后得到jar包。 二. GDS安装及配置 将解压得到的jar包放入neo4j安装目录下的plugi…

thinkphp5 如何模拟在apifox里面 post数据接收

tp5里面控制器写的方法想直接apifox里面请求接受 必须带上这个参数 header里面 X-Requested-With:XMLHttpRequest

ThreeJS-3D教学一:基础场景创建

Three.js 是一个开源的 JS 3D 图形库,用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上,并提供了丰富的功能和工具,使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API&#xff0…

DAMO-YOLO训练KITTI数据集

1.KITTI数据集准备 DAMO-YOLO支持COCO格式的数据集,在训练KITTI之前,需要将KITTI的标注转换为KITTI格式。KITTI的采取逐个文件标注的方式确定的,即一张图片对应一个label文件。下面是KITTI 3D目标检测训练集的第一个标注文件:000…

基于springboot的小说阅读网站设计与实现【附源码】

基于以下技术实现:springbootmybatisplusjsoupmysql 媛麻:可代xie lun文,ding制作网站 在这里插入图片描述

图像处理与计算机视觉--第四章-图像滤波与增强-第二部分

目录 1.图像噪声化处理与卷积平滑 2.图像傅里叶快速变换处理 3.图像腐蚀和膨胀处理 4 图像灰度调整处理 5.图像抖动处理算法 学习计算机视觉方向的几条经验: 1.学习计算机视觉一定不能操之过急,不然往往事倍功半! 2.静下心来,理解每一个…

前后端分离的计算机毕设之基于springboot+vue的课程设计选题管理系统(内含源码+文档+教程)

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

vue_Delete `␍`eslint(prettier/prettier)

Delete ␍eslint(prettier/prettier) 错误的解决方案 问题背景 在Windows笔记本上新拉完代码,在执行pre-commit时,出现如下错误: Delete ␍eslint(prettier/prettier)问题根源 罪魁祸首是git的一个配置属性:core.autocrlf 由于…

Kafka数据可靠性保证

1.生产者发送数据到Topic partition的可靠性保证 为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到)&#xff0c…

构建卓越语言模型应用的利器:LangChain | 开源日报 No.39

langchain-ai/langchain Stars: 61.3k License: MIT LangChain 是一个用于通过组合性构建 LLMs 应用程序的库。 LLMs 和 Prompts:包括 prompt 管理、prompt 优化、所有 LLM 的通用接口以及与 LLMs 一起使用的常见工具。Chains:超越单个 LLM 调用&…

nodejs+vue大学食堂订餐系统elementui

可以查看会员信息,录入新的会员信息,对会员的信息进行管理。 网站管理模块对整个网站中的信息进行管理,可以查看会员留在留言栏中的信息,设置网站中的参数等。用户管理模块主要实现用户添加、用户修改、用户删除等功能。 近年来&…

C++与数据结构面经(重中之重)

多线程 互斥锁 原子变量 自旋锁 C11新特性 智能指针 首先智能指针是一个类,超过类的作用域会进行析构,所以不用担心内存泄漏。Unique_ptr(独占指针):规定一个智能指针独占一块内存资源。当两个智能指针同时指向一块内存,编译报错。 不允…

华南理工大学电子与信息学院23年预推免复试面试经验贴

运气较好,复试分数90.24,电科学硕分数线84、信通83、专硕电子与信息74. 面试流程: 1:5min ppt的介绍。其中前2min用英语简要介绍基本信息,后3min可用英语也可用中文 介绍具体项目信息如大创、科研、竞赛等&#xff08…

ThrowableError in Arr.php line 380

欢迎关注我的公众号:夜说猫,每周新闻点评~ 前言 今天重装了宝塔之后重装php,遇到了一个问题,如下 ThrowableError in Arr.php line 380 Parse error: syntax error, unexpected 提示我语法错误。 报错原因 主要是thinkphp5.1…

【新版】系统架构设计师 - 软件架构的演化与维护

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 软件架构的演化与维护考点摘要软件架构演化和定义面向对象软件架构演化对象演化消息演化复合片段演化约束演化 软件架构演化方式静态演化动态演化 软件架构演化原则软件架构演化评估方法大型网站架…

JVM对象创建与内存分配机制

对象的创建 对象创建的主要流程: ​ 1.类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应…

如何在Python中捕获异常

1. 写在前面 本文主要介绍 Python 捕获异常的各种技术。首先,回顾 Python 的异常处理机制,然后深入研究并学习如何识别捕获的异常内容,以及忽略异常。 公众号: 滑翔的纸飞机 2. Python 异常处理机制 Python 代码在运行的过程中&…

5-1.(OOP)初步分析MCV架构模式

组成:模型(model)、视图(view)、控制器(controller) view:界面、显示数据 model:数据管理、负责在数据库中存取数据以及数据合法性验证 controller:负责转…