如何将任何文本语料转换为知识图谱?

转自:吴建明利驰软件

几个月前,基于知识的问答系统(Knowledge Base Question Answering,KBQA)还是个新概念。

现在,随着大型语言模型(LLMs)的发展,带有检索增强生成(RAG)的KBQA对我们来说变得越来越容易了。

知识图谱(Knowledge Graph)是用来表示现实世界中的实体及其关系的一种数据结构。

它通过节点(表示实体)和边(表示实体间的关系)来构建一个连通的网络。

知识图谱的主要目的是将分散的数据组织成有结构的信息,使得机器能够理解和处理这些信息,从而在搜索、问答、推荐等应用中提供更智能的服务。

1、实体(Entity):知识图谱中的基本单元,代表现实世界中的对象,比如人、地点、事物等。

2、属性(Attribute):描述实体的特征,比如人的姓名、年龄,地点的名称、坐标等。

3、关系(Relation):表示实体之间的连接,比如“Tom 是 Mary 的朋友”这类描述实体间的关系。

Mary had a little lamb,

You’ve heard this tale before;

But did you know she passed her plate,

And had a little more!

绘制成KG,如下:

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
 

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

知识图谱在很多方面都很有用。

1、可以运行图算法并计算任何节点的中心性,以了解一个概念(节点)在整个工作体系中的重要性。

2、可以分析连接和断开的概念集合,或者计算概念群体,以深入理解主题内容。

3、还能理解看似不相关的概念之间的联系。

举例来说,仅仅依靠简单的语义相似性搜索来找到与查询最相关的上下文并不总是有效的,尤其是当查询没有提供足够的上下文来明确其真实意图,或者当上下文分散在大量文本中时。

比如,考虑这个查询:

告诉我《百年孤独》中何塞·阿尔卡迪奥·布恩迪亚的家谱。

这本书中记录了七代的何塞·阿尔卡迪奥·布恩迪亚,而且一半的人物都叫何塞·阿尔卡迪奥·布恩迪亚。

如果使用简单的 RAG 流程来回答这个查询,可能会非常具有挑战性,甚至可能无法实现。

另外,RAG 的另一个缺点是它无法引导你提出正确的问题。在很多情况下,提出正确的问题比获取答案更为关键。

图增强生成(Graph Augmented generation,GAG)在一定程度上可以解决 RAG 的这些缺点。

更好的是,我们可以灵活组合,构建一个图增强检索增强生成流水线,以融合两者的优点,达到事半功倍的效果。

项目地址:https://rahulnyk.github.io/knowledge_graph/

1、将文本语料库分割成块。为每个块分配一个 chunk_id。

2、针对每个文本块,使用大型语言模型提取概念及其语义关系。我们将这种关系赋予权重 W1。同一对概念之间可能存在多种关系。每种关系都是一对概念之间的边。

3、考虑到在同一文本块中出现的概念也会由于其上下文接近性而相关。我们将这种关系赋予权重 W2。请注意,同一对概念可能会在多个块中出现。

4、将相似的对组合起来,求其权重之和,并串联它们的关系。现在,对于任意不同的概念对之间只有一条边。该边具有一定的权重和一系列关系作为其名称。

5、它还计算每个节点的度数和节点的社区,分别用于调整图中节点的大小和着色。

使用 Mistral 7B Openorca 从文本块中提取概念。它可以很好地遵循系统提示指令。

Ollama 可以轻松在本地托管任何模型。Mistral 7B OpenOrca 版本已可与 Ollama 一起使用,开箱即用。

这是一个 Python 库,可以让处理图表变得超级简单

Pyvis 用于可视化的 Python 库。Pyvis 使用 python 生成 Javascript 图形可视化。

如果regenerate设置为True,则会重新生成数据框,并将它们以CSV格式写入,这样就无需再次计算。数据框分为两类:

dfne 是边的数据框(dataframe of edges)。

df 是块的数据框(dataframe of chunks)。

如果regenerate为False,则数据框将从输出目录读取,而不是重新计算。这意味着如果数据已经存在,程序将直接使用现有数据,无需再次处理。

文章的每个文本块运行此操作并将 json 转换为 Pandas 数据帧:

得到一个与原始数据框非常相似的数据框。

输出:(215,)

输出:./docs/index.html。

全部节点

选择需要查询的节点:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【视频教程】GEE遥感云大数据在林业中的应用与典型案例实践

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

初识爬虫1

学习路线:爬虫基础知识-requests模块-数据提取-selenium-反爬与反反爬-MongoDB数据库-scrapy-appium。 对应视频链接(百度网盘):正在整理中 爬虫基础知识: 1.爬虫的概念 总结:模拟浏览器,发送请求,获取…

基于SpringBoot的在线购物平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的在线购物平台&am…

基于SpringBoot+Vue的超市外卖管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生,或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢?可能有些人会说不是有sqlmap&#…

9月11号作业

头文件 #include <cmath> #include <QApplication> #include <QMainWindow> #include <QLabel> #include <QTimer> #include <QVBoxLayout> #include <QRandomGenerator> #include <QTimerEvent> #include <QTextT…

MySQL分页查询(DQL)

因DataGrip我的激活到期&#xff0c;也没太多精力去破解&#xff0c;最后换了Navicat&#xff0c;实际上操作是一样的&#xff0c;不变。 先看我的表数据&#xff0c;以我的数据作为例子 基本语法 select 字段列表 from 表名 起始索引&#xff0c;查询记录数。 1.查询第1页员…

多线程学习篇一:启动多线程的三种方式

1. 继承 Thread 类 Slf4j public class MyThread extends Thread {Overridepublic void run() {log.info("MyThread run ...");}public static void main(String[] args) {MyThread myThread new MyThread();myThread.start();} } 2. 实现 Runnable 接口 Slf4j pu…

基于微信小程序的宿舍报修系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宿…

linux 操作系统下cp命令介绍及案例应用

linux 操作系统下cp命令介绍及案例应用 cp命令是Linux操作系统中用于复制文件和目录的基本命令。它的功能强大&#xff0c;适用于各种文件管理任务 cp命令概述 基本语法:bashcp [options] <source> <destination> 功能: 复制单个文件或多个文件到指定位置。 递…

python基础知识(一)

目录 1.注释 2.关键字 3.标识符 4.常见命名方法 5.变量 6.常见的数据类型 1.注释 注释&#xff1a;在程序中&#xff0c;对代码进行解释说明的文字。 在Python中&#xff0c;注释分为两类&#xff1a; &#xff08;1&#xff09;单行注释&#xff1a;# # 注释文字内容…

降维打击 华为赢麻了

文&#xff5c;琥珀食酒社 作者 | 积溪 真是赢麻了 华为估计都懵了 这辈子还能打这么富裕的仗&#xff1f; 其实在苹果和华为的发布会召开之前 我就知道华为肯定会赢 但我没想到 苹果会这么拉胯 华为这是妥妥的降维打击啊 就说这苹果iPhone 16吧 屏幕是变大了、颜色…

AUTOSAR_EXP_ARAComAPI的5章笔记(3)

返回目录 5.3.4 Finding Services Proxy Class提供类(静态)方法来查找“连接”的服务实例。由于服务实例的可用性本质上是动态的(因为它有一个生命周期)&#xff0c;所以ara::com提供了如下两种不同的方法来实现“FindService ”: StartFindService是一个类方法&#xff0c;…

k8s环境搭建(续)

查看节点信息并做快照 kubectl get nodes 将components.yml文件上传到master主机 创建nginx&#xff0c;会在添加一个新的pod kubectl run nginx --imagesnginx:latest 查看nginx的pod信息 [rootk8s-master ~]# kubectl get po -Aowide|grep nginx 出现错误&#xff0c;查…

需求分析概述

为什么要进行需求分析呢&#xff1f; 笑话&#xff1a;富翁娶妻 某富翁想要娶老婆&#xff0c;有三个人选&#xff0c;富翁给了三个女孩各一千元&#xff0c;请 她们把房间装满。第一个女孩买了很多棉花&#xff0c;装满房间的1/2。第 二个女孩买了很多气球&#xff0c;装满…

网络视频流解码显示后花屏问题的分析

问题描述 rtp打包的ps视频流发送到客户端后显示花屏。 数据分析过程 1、用tcpdump抓包 tcpdump -i eth0 -vnn -w rtp.pcap 2、用wireshark提取rtp的payload 保存为record.h264文件 3、用vlc播放器播放 显示花屏 4、提取关键帧 用xxd命令将h264文件转为txt文件 xxd -p…

KEIL中编译51程序 算法计算异常的疑问

KEIL开发 51 单片机程序 算法处理过程中遇到的问题 ...... by 矜辰所致前言 因为产品的更新换代&#xff0c; 把所有温湿度传感器都换成 SHT40 &#xff0c;替换以前的 SHT21。在 STM32 系列产品上的替换都正常&#xff0c;但是在一块 51 内核的无线产品上面&#xff0c;数据…

STM32-HAL库开发快速入门

注:本文主要记录一下STM32CubeMX软件的使用流程,记录内容以STM32外设&#xff08;中断、I2C、USART、SPI等配置&#xff09;在STM32CubeMX中的设置为主&#xff0c;对驱动代码编写不做记录&#xff0c;所以阅读本文最好有标准库开发经验。除第2节外&#xff0c;使用的都是韦东山…

C++的流提取(>>)(输入) 流插入(<<)(输出)

什么是输入和输出流 流提取&#xff08;<<&#xff09;(输入) 理解&#xff1a;我们可以理解为&#xff0c;输入到io流里面&#xff0c;比如是cin&#xff0c;然后从输入流中读取数据 流插入&#xff08;<<&#xff09;&#xff08;输出&#xff09; 理解&#xff…

网络协议头分析

目录 数据的传输与封装过程 以太网完整帧 以太网头部 IP头 TCP头 数据的传输与封装过程 以太网完整帧 ● 对于网络层最大数据帧长度是1500字节 ● 对于链路层最大数据长度是1518字节&#xff08;150014CRC&#xff09;● 发送时候&#xff0c;IP层协议栈程序检测到发送数…