大语言模型无代码构建知识图谱(1)--提示工程准备

        2023年3月15日,ChatGPT4.0的横空出世,将人们对大语言模型的关注推到了风口浪尖。由于其在智能问答、翻译以及文本生成等工作任务上的卓越表现,业界一度出现了不再需要发展知识图谱相关技术的观点,知识图谱相关概念严重受挫。无可置疑的是,大语言模型的确在智能问答等功能上与知识图谱存在交集,并且表现令人惊讶。但由于大语言模型不可避免的“幻觉”问题,使其存在无法给出准确、全面回答的情况,故而无法适应用户全面的场景需求。而知识图谱存储着大量结构化的信息,可以表达复杂的知识关系,能够满足用户准确、有效的检索需求。由此看来,二者各有所长,不是简单的替代关系,更有甚者二者可以彼此促进。众所周知,知识图谱的构建过程是相当昂贵的,开发者需要从海量的文档中抽取、对齐各类知识,工作量巨大,准确度要求也高。由于大语言模型拥有很强的泛化能力,因此其能有效抽取、识别特定领域文档中的实体、属性以及关系知识,可大大降低知识图谱的构建成本。

    下面我们将通过一个示例,介绍如何使用大语言模型在无代码的情况下,辅助构建知识图谱。

案例设计

    在该案例中,我们使用如下内容进行知识提取。

刘彻之母王娡在怀孕时,汉景帝刘启尚为太子。王娡梦见太阳进入她的怀中,醒来告诉刘启后,刘启认为这是高贵的征兆。刘彻还未出生,他的祖父汉文帝刘恒就驾崩了。刘启继位,是为景帝,不久刘彻出生。刘彻是汉景帝第十子,亦是王娡唯一的儿子。 [3]

汉景帝前元四年(前153年)四月二十三日,汉景帝立栗姬所生的长子刘荣为皇太子,刘彻亦同时被封为胶东王。 [4]刘彻的姑母馆陶公主刘嫖向栗姬为其女陈氏提亲,被栗姬拒绝,而王娡却许诺让刘彻娶陈氏,因此刘嫖不断向景帝诋毁栗姬而赞誉王娡,栗姬亦曾出言不逊而触怒景帝,天平遂逐渐向王娡母子倾斜。前元六年(前151年)薄皇后被废黜后,王娡暗中指使大行令奏请立栗姬为皇后,使景帝对栗姬的不满达到极点,于是处死大行令、疏远栗姬,在前元七年(前150年)正月废刘荣为临江王。四月十七日,景帝立王娡为皇后;二十五日,立时年七岁的刘彻为皇太子。 [5-6]

刘彻成为储君后,景帝拜卫绾为太子太傅、王臧为太子少傅,让他们辅导刘彻。 [119-120]汉景帝后元三年(前141年)正月十七日,刘彻行冠礼。十天后,景帝驾崩,刘彻继位。 [7]

    该信息取自百度百科关于汉武帝刘彻的一个片段。我们设计提取该段信息中的以下三类知识:

  • 人物及头衔,获取文本中的人物信息作为知识的主体
  • 人物关系,包括:源人物、关系、目的人物三部分信息
  • 人物相关的事件,包括:人物、时间、事件描述三部分信息

提示工程准备

        笔者选定阿里的通义千问模型作为我们的大语言模型,用它提供的Web对话界面来进行提示工程。Web对话界面给出的答案可能会与其API接口有所差异,但对提示工程的影响整体不大。提示工程的尝试过程笔者在此就不展示了。下面可以看一下大模型的知识抽取能力,很大程度上超出了笔者的预期。

人物及头衔抽取

提示

请帮我分析####后文字中的人物及头衔。并将结果输出为json格式

####

文本片段

应答

Json

[

  {

    "人物": "刘彻",

    "头衔": [

      "汉景帝第十子",

      "胶东王",

      "皇太子",

      "皇帝"

    ]

  },

  {

    "人物": "王娡",

    "头衔": [

      "刘彻之母",

      "皇后"

    ]

  },

  {

    "人物": "刘启(汉景帝)",

    "头衔": [

      "太子",

      "皇帝"

    ]

  },

  {

    "人物": "汉文帝刘恒",

    "头衔": [

      "祖父(刘彻的祖父)",

      "皇帝"

    ]

  },

  {

    "人物": "刘荣",

    "头衔": [

      "皇太子",

      "临江王"

    ]

  },

  {

    "人物": "馆陶公主刘嫖",

    "头衔": [

      "刘彻的姑母",

      "公主"

    ]

  },

  {

    "人物": "栗姬",

    "头衔": [

      "刘荣之母"

    ]

  },

  {

    "人物": "薄皇后",

    "头衔": [

      "皇后"

    ]

  },

  {

    "人物": "大行令",

    "头衔": [

      "官员"

    ]

  },

  {

    "人物": "卫绾",

    "头衔": [

      "太子太傅"

    ]

  },

  {

    "人物": "王臧",

    "头衔": [

      "太子少傅"

    ]

  }

]

解读

信息抽取的非常全面,数据组织的也很好。只是有些头衔抽取的不准确,比如“刘彻之母”等信息,这个信息理解为关系可能更好。存在一个人有多个头衔的情况,这个是合理的。因为人的头衔是随时间变化的,笔者在这里做实验构建的模型忽略了时间情况,把人物曾经有的头衔都汇聚来存储了。如果知识库这部分信息需要做的更准确,可以考虑将改信息与时间绑定并单独存储。

人物关系抽取

提示

请帮我分析####后文字中的人物关系,并按照关系方向输出数据,如:父子关系时,父亲在前,儿子在后。以json格式输出,格式如下:{"src":"源名称","relation":"关系","dst":"目的名称"}

####

文本片段

应答

Json

[

  {"src": "王娡", "relation": "母亲", "dst": "刘彻"},

  {"src": "刘启(汉景帝)", "relation": "父亲", "dst": "刘彻"},

  {"src": "刘恒(汉文帝)", "relation": "祖父", "dst": "刘彻"},

  {"src": "栗姬", "relation": "原太子生母", "dst": "刘荣"},

  {"src": "刘嫖(馆陶公主)", "relation": "姑母", "dst": "刘彻"},

  {"src": "陈氏", "relation": "未婚妻(后成为皇后)", "dst": "刘彻"},

  {"src": "薄皇后", "relation": "前皇后", "dst": "汉景帝"},

  {"src": "卫绾", "relation": "太子太傅", "dst": "刘彻"},

  {"src": "王臧", "relation": "太子少傅", "dst": "刘彻"}

]

解读

信息抽取的很好,关系方向也是笔者所期望的。看到这里,笔者都没啥意愿去核查抽取的是否准确了。其中的关系信息可以根据需要再进一步转换,统一表达。

人物相关事件抽取

提示

请帮我分析####后文字中的事件及事件相关的人物和时间,并将结果输出为json格式

####

文本片段

应答

Json

[

  {

    "事件": "王娡怀孕并梦见太阳进入怀中",

    "时间": "(未明确)",

    "人物": ["王娡", "刘启(汉景帝)"]

  },

  {

    "事件": "汉文帝刘恒驾崩",

    "时间": "(刘彻出生前)",

    "人物": ["汉文帝刘恒"]

  },

  {

    "事件": "刘启继位为景帝",

    "时间": "(刘彻出生前)",

    "人物": ["刘启(汉景帝)"]

  },

  {

    "事件": "刘彻出生",

    "时间": "(刘启继位后不久)",

    "人物": ["刘彻", "王娡"]

  },

  {

    "事件": "刘荣被立为皇太子,刘彻被封为胶东王",

    "时间": "前153年四月二十三日",

    "人物": ["刘荣", "刘彻", "汉景帝刘启"]

  },

  {

    "事件": "馆陶公主刘嫖向栗姬提亲遭拒及王娡许诺刘彻娶陈氏",

    "时间": "(在刘荣被立为太子之后)",

    "人物": ["馆陶公主刘嫖", "栗姬", "王娡", "刘彻", "陈氏"]

  },

  {

    "事件": "薄皇后被废黜",

    "时间": "前151年",

    "人物": ["薄皇后", "汉景帝刘启"]

  },

  {

    "事件": "大行令受王娡指使奏请立栗姬为皇后,后被处死",

    "时间": "前150年前期",

    "人物": ["大行令", "王娡", "栗姬", "汉景帝刘启"]

  },

  {

    "事件": "刘荣被废为临江王",

    "时间": "前150年正月",

    "人物": ["刘荣", "汉景帝刘启"]

  },

  {

    "事件": "王娡被立为皇后",

    "时间": "前150年四月十七日",

    "人物": ["王娡", "汉景帝刘启"]

  },

  {

    "事件": "刘彻被立为皇太子",

    "时间": "前150年四月二十五日",

    "人物": ["刘彻", "汉景帝刘启"]

  },

  {

    "事件": "卫绾、王臧分别被任命为太子太傅和太子少傅",

    "时间": "(刘彻成为储君后,具体时间未给出)",

    "人物": ["刘彻", "卫绾", "王臧", "汉景帝刘启"]

  },

  {

    "事件": "刘彻行冠礼",

    "时间": "前141年正月十七日",

    "人物": ["刘彻"]

  },

  {

    "事件": "汉景帝刘启驾崩,刘彻继位",

    "时间": "前141年正月二十七日后十天",

    "人物": ["汉景帝刘启", "刘彻"]

  }

]

解读

信息抽取的相当全面了。如果以他的输出作为标准答案的话,估计想很多人在回答这个问题时,分数超不过50分。其中的时间信息并非我们标准意义上的时间格式,需要进行二次的处理转换才能实现时间格式的标准化。这个有一定的难度,本次实验我们就不演示如何转换了。事件相关人物

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

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

相关文章

VC++中使用OpenCV进行形状和轮廓检测

VC中使用OpenCV进行形状和轮廓检测 在VC中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。如下面的图像中Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同的形状,并且根据轮廓进行检测呢&#…

制作linux运行包

从源码制作 syslinux:https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz busybox:https://busybox.net/downloads/busybox-1.26.0.tar.bz2 kernel:https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.5.7.tar.gz 遇到问题&…

初识React,基础(1), 安装react,jsx文件,类组件和函数组件,css样式

第一部分:初识react react: 用于构建用户界面的 JavaScript 库全局安装,win r, 命令: npm install create-react-app -g3. 创建一个react应用, 这里我在vscode 里面创建, 创建之后,运行 create-react-app my-appcd my-app npm start 第二部分: redact 组件定义以及使用 rea…

当 OpenTelemetry 遇上阿里云 Prometheus

作者:逸陵 背景 在云原生可观测蓬勃发展的当下,想必大家对 OpenTelemetry & Prometheus 并不是太陌生。OpenTelemetry 是 CNCF(Cloud Native Computing Foundation)旗下的开源项目,它的目标是在云原生时代成为应…

【Unity学习笔记】New Input System 部分源码和测试用例补充

转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/135630016 作者:CSDN|Ringleader| 主要参考: Unity官方Input System手册与API【Unity学习笔记】Unity TestRunner使用【Unity学习笔记】第十二 New Inp…

MySQL的执行流程

一、MySQL的执行流程 MySQL架构分为Server层、存储引擎,其中Server层又分为连接器、查询缓存、分析器、优化器执行器五个部分。当客户端发送请求后依次需要经过 处理请求、查询缓存、语法解析、查询优化、存储引擎部分。 1. 连接器 负责维持和管理连接&#xff…

【差分数组】【图论】【分类讨论】【整除以2】100213按距离统计房屋对数目

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及知识点 差分数组 图论 分类讨论 整除以2 LeetCode100213按距离统计房屋对数目 给你三个 正整数 n 、x 和 y 。 在城市中&#xff0c;存在编号从 1 到 n 的房屋&#xff0c;由 n 条街道相连。对所有 1 < i < n…

Apache-iotdb物联网数据库的安装及使用

一、简介 >Apache IoTDB (Database for Internet of Things) is an IoT native database with high performance for data management and analysis, deployable on the edge and the cloud. Due to its light-weight architecture, high performance and rich feature set…

爬虫工作量由小到大的思维转变---<第三十七章 Scrapy redis里面的key >

前言: 终于找到机会,开始把scrapy-redis细致地给大伙通一通了! 为什么非要细致讲scrapy-redis呢? 1.市面上关于scrapy-redis的教程,都比较笼统; demo级别好写,但是一旦上了项目,就问题百出!2.scrapy-redis里面的思路,其实跟单个爬虫或者集合式爬虫他的思路有点不一样; 正文…

Java代码审计Shiro反序列化CB1链source入口sink执行gadget链

目录 0x00 前言 0x01 CC链&CB链简介 1. Commons Collections链是什么&#xff1f; 2. Commons BeanUtils链是什么&#xff1f; 0x02 测试Commons BeanUtils1链 0x03 Shiro550 - Commons BeanUtils1链 - 跟踪分析&#xff08;无依赖&#xff09; 1. 前置知识 2. Co…

Node开发基础

1. 概述 1.1 为什么要学习服务器端开发基础 能够和后端程序员更加紧密的配合 网站业务逻辑前置&#xff0c;学习前端技术需要后端技术支撑 扩宽知识视野&#xff0c;能够站在更高的角度审视整个项目 1.2 服务器端开发要做的事情 实现网站的业务逻辑 ---网站登录部分&#…

矩阵重叠问题判断

创作背景 看到一道题目有感而发想写一篇题解&#xff0c;涉及的是一种逆向思维 桌面窗体重叠 - 洛谷https://www.luogu.com.cn/problem/U399827题目来源于《信息学奥赛课课通》 大致就是给一个长方形的左上顶点坐标&#xff08;x1,y1&#xff09;和右下顶点坐标&#xff08;x…

【设计模式】适配器和桥接器模式有什么区别?

今天我探讨一下适配器模式和桥接模式&#xff0c;这两种模式往往容易被混淆&#xff0c;我们希望通过比较他们的区别和联系&#xff0c;能够让大家有更清晰的认识。 适配器模式&#xff1a;连接不兼容接口 当你有一个类的接口不兼容你的系统&#xff0c;而你又不希望修改这个…

mini-spring-Bean含参实例化(三)

上一节&#xff0c;bean是在AbstractAutowireCapableBeanFactory.doCreateBean方法中用beanClass.newInstance()来实例化&#xff0c;仅适用于bean有无参构造函数的情况。 本节考虑含参的bean的实例化 考虑两个问题 一、串流程从哪合理的把构造函数的入参信息传递到实例化操作里…

各行业领域向chatgpt高质量提问的方式

一、技术/业务/事项咨询&#xff1a; ChatGPT可以回答关于技术领域以及工作生活等各方面的问题&#xff0c;包括最佳实践、开发工具、编程语言选择等&#xff0c;咨询标准方案等。 常见问法&#xff1a; 我准备做***&#xff0c;【目前的选择有***】&#xff0c;请告诉我选哪…

sql注入基础

一、SQL注入攻击的根源可以归结为两个主要因素: 程序命令和用户数据之间缺乏有效的隔离措施,以及对用户输入数据的信任。 程序命令和用户数据之间缺乏隔离:在一个应用程序中,程序命令(如SQL语句)和用户数据(即用户输入)应该被严格分离,以避免恶意用户利用输入数据来改…

云服务器定价_云服务器价格_云主机计费模式_腾讯云

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第六天-Qt UDP编程(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd1688 提取码&#xff1a;1688 在Qt中提供了QUdpSocket 类来进行UDP数据报&#xff08;datagrams&#xff09;的发送和接收。这里我们还要了解一个名词Socket&#xff0c;也就是常说的“套接字”。 Qt 网络…

2024.1.18力扣每日一题——拿出最少数目的魔法豆

2024.1.18 题目来源我的题解方法一 排序前缀和方法二 优化版本 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2171 我的题解 方法一 排序前缀和 结果与原始顺序无关&#xff0c;因此先进行排序&#xff0c;然后计算前缀和。 有官方题解证明&#xff1a;最终在 拿出最少…