论文浅尝 | SAC-KG:利用大语言模型作为领域知识图谱熟练的自动化构造器(ACL2024)...

news2024/12/12 14:16:12

6bf10e4c3f82eb1fd871cbb1db06a4f4.png

笔记整理:杜超超,天津大学硕士,研究方向为自然语言处理、大语言模型

论文链接:https://aclanthology.org/2024.acl-long.238/

发表会议:ACL 2024

1. 动机

知识图谱(KG)在各个专业领域的知识密集型任务中都发挥着关键作用,因此,获取准确、可靠的高质量知识就尤为重要。但是现在构建知识图谱的方法严重依赖于人工干预才能获取合格的KG,这不利于KG在现实场景中的应用。因此,我们提出了一个通用的构建KG的框架,SAC-KG:利用大语言模型作为领域知识图谱熟练的自动化生成器,该框架能够有效利用LLM作为领域专家来生成专业且准取的多层级KG。

SAC-KG由三部分组成,生成器、验证器和修剪器,给定一个实体,生成器从原始语料库中生成关系和尾部,从而构建一个单层的KG。然后,验证器和修剪器协同工作,通过纠正生成错误并确定新生成的尾部是否需要对下一层级KG进行迭代来保证准确性。在实验中,SAC-KG能够构建百万节点以上规模的领域KG,与现有的构建KG的方法相比,准确率提升20%以上。

2. 贡献

本文的主要贡献有:

(1)提出了一个专业化、自动化、能够生成高质量KG的通用框架;

(2)生成器消除了在构建KG过程中,上下文噪声对LLM的影响;

(3)验证器和修改器消除了LLM的幻觉现象;

3. 方法

总体框架如图1所示,SAC-KG由生成器、验证器和修剪器组成,并将这三部分融合到一个统一的框架中,以此自动化构建领域KG。给定一个实体,SAC-KG不断地生成一个单层级实体诱导的KG。在每一次迭代中,被指定为“增长”的实体集(修剪器中的绿色节点)构成了生成器下一级生成过程的输入。

c8186abe080b4a9e4dae46dc2659471a.png

图1 总体框架图

3.1 生成器

生成器使用域语料检索器从原始语料库中检索最相关的上下文,并使用开放知识检索器从开源百科全书中检索最相关的三元组。生成器采用上下文学习,是一个无参数、无监督、全自动的学习器。

为了克服LLM的幻觉现象,我们提出了一个领域语料库检索器。该检索器首先将领域语料库分割成句子,然后根据实体的实现频率对相关句子进行排序,最后按照与给定实体的相关性对它们进行降序排序,并将它们连接成一个固定长度的文本作为LLM的输入。

当输入仅包含领域特定语料时,LLM的输出可能难以控制,甚至三元组的格式会错误。为了克服这个问题,我们提出了一个开放知识图谱检索器,它采用上下文学习并从DBpedia中检索与实体最相关的三元组作为示例。这些示例会刺激模型输出正确的内容格式。表1是领域KG在同一领域语料库上的准确率、召回率、领域特异性指标的评估。

eeb19b434d52ba6efe8f799daa313626.png

表1:领域KG的评估

3.2 验证器

为了进一步提升KG的质量,我们引入了验证器,它负责识别和过滤LLM生成的错误的三元组。验证器是基于规则且无参数的,执行效率高。

验证器由两个步骤组成,错误检测和错误纠正。对于错误检测,我们使用RuleHub中的开放KG挖掘出的现有标准来识别并输出错误类型。流程包括数量检查、格式检查以及冲突检查。数量检查是指三元组数量小于阈值2,则被归类于数量不足;格式检查是包括1)头实体与预定义实体不匹配2)头实体与尾实体相同;冲突检查是指事实冲突,例如一个人的年龄不能是负数。

对于错误纠正,首先使用错误检测步骤确定错误类型并提供相应的提示,然后重新提示LLM重新生成灰姑娘纠正后的输出。

3.3 修剪器

经过验证器后,可以得到所有正确的三元组,然后继续生成下一层级三元组。但是,并非所有三元组都需要这样的迭代生成,例如,三元组(大米,最佳生长温度,20~25摄氏度)是一个正确的三元组,而它的尾实体不需要生成为下一层级三元组的头实体。

为了增强这种可控性,我们提出了修剪器,这是一个经过调优的二分类模型,它的输入是每个正三元组的尾实体,输出为“growing”或“pruned”,表示是继续生成还是停止生成。表2是在第一个三层构造的 KG 中对SAC-KG进行剪枝研究,每次迭代都意味着生成KG的附加层,符号“-”表示在第 1 次迭代中,之前没有应用过剪枝器。

30e7363f61a483177a26549d2e572430.png

表2 剪枝研究

为了训练修剪器,我们从DBpedia收集训练数据,并选择头部实体的子集来代表“增长”类别。我们还收集了尾部实体的等效子集,排除与头实体列表重叠的实体,以构成“修剪”类别。然后,我们在微调期间使用这些实体文本作为输入,并将相应的标签“增长”或“修剪”作为输出目标。

最后,利用领域语料库,我们可以为输入实体生成单级KG,随后将其合并到生成的KG的新级别中,因此,SAC-KG会使用实体生成多个三元组并继续迭代,创建一个以生成的三元组的头实体为根的KG子树。此过程类似于树一层一层的增量增长,类似于从浅到深检索和访问领域知识。此外,SAC-KG是一种无监督方法,可以应用于任何具有大量非结构化文本语料库的领域,而无需标记数据。SAC-KG的工作流示例如图2。

ffd347b146496276ee079d7e00ab3cc9.png

图2 SAC-KG工作流示例

4. 实验

实验包括五部分:(i)为了评估SAC-KG的有效性,我们将SAC-KG与现有的领域KG构建任务的最新方法进行比较。(ii)为了对构建的KG进行更全面的评估,我们对GPT4与人类进行了一致性评估。(iii)为了对SAC-KG提供更多的见解,我们对每个组件进行了消融研究。(iv)为了分析构建的KG,我们对构建的领域KG进行了案例研究。(v)为了进一步证明SAC-KG的有效性,我们在现有的开源 OlE 基准上评估了SAC-KG。

4.1 准确率

为了评估准确率,我们通过手动和自动两种方式进行评估,后者在本质上更具可扩展性。我们使用GPT-4作为自动判断。具体来说,我们将提取的三元组及其对应的文本作为GPT-4的输入,以评估每个三元组的正确性。

4.2 召回率

由于无法访问每个领域文本的基本事实三元组,因此无法估计召回率。因此,我们报告每个领域文本的已验证三元组的平均数量。也就是说,我们报告召回率而不提供分母。我们用召回次数来指代这个指标。

4.3 参数设置

对于生成器的参数设置,我们将LLM的温度值设置为0.1,最大序列长度为2000个标记。对于修剪器,我们使用有效地微调T5模型。我们用2个时期训练模型并使用64的批处理大小。我们将学习率设置为0.001。

4.4 实验结果

图3展示了 0lE6、PIVE、SAC-KG水稻专家案例可视化结果。绿色标记的实体表示正确的三元组,黄色标记的实体表示错误的三元组。表3是GPT 4评估和人类评估的统计指标。表4是OlE2016、WEB、NYT 和 PENN 数据集上的F1分数和AUC结果。

239b45dfaf63f20cfce2807b8de9ea95.png

图3水稻领域示例

12c6b2a6fdc23cb49de59ece1692434e.png

表3 GPT-4和人工评估结果

f62cb1e4ad8a665531f5e8ed375e321e.png

表4  F1和AUC得分

5. 总结

本文提出了一种新型的自动领域知识图谱构建框架SAC-KG,该框架可直接从领域语料库中高效地构建知识图谱。SAC-KG将LLM用作领域专家,并迭代地采用实体诱导树搜索算法来构建多层级知识图谱。具体而言,我们提出了生成器、验证器和修改器,以形成具有自动化、精确性和可控性的通用知识图谱构建框架。SAC-KG以89.32%的精度构建了超过一百万个节点的领域知识图谱,实现了超过 20% 的精度指标提升。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

c954807d01c9dcabee1191faf882b1b4.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

Python机器视觉的学习

一、二值化 1.1 二值化图 二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。 1.2 阈值法 阈值法(Thresholding)是一种图像分割技术,旨在根据像素的灰度值或颜色值将图像分成不同的区域。该方法…

Elasticsearch高性能实践

前言 本方案主要从运维层面分析es是实际生产使用过程中的参数优化,深入理解es各个名词及含义,深入分析es的使用过程中应注意的点,详细解释参数设置的原因以及目的,主要包括系统层面,参数层面。除此之外,优…

笔记本外接显示屏没声音

1、笔记本正常有声音,但是外接显示屏后没有声音了怎么回事呢?原来外接显示屏后笔记本的声音输出会自动选择显示屏的音频输出,但是显示屏可能没有声音输出所以导致笔记本没有声音。 2、解决办法:打开笔记本设置,选择声…

JavaWeb学习(4)(四大域、HttpSession原理(面试)、SessionAPI、Session实现验证码功能)

目录 一、web四大域。 (1)基本介绍。 (2)RequestScope。(请求域) (3)SessionScope。(会话域) (4)ApplicationScope。(应用域) (5)PageScope。(页面域) 二、Ht…

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 (1)什么是正则表达式 (2)它的结构及使用 示例: 1.字符 . (←这里有个小点哦) 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d (3)补充&#xff…

力扣打卡12:复原IP地址

链接:93. 复原 IP 地址 - 力扣(LeetCode) 这道题需要对字符串进行操作,我选择了三层循环,其实还可以递归。 我在循环时进行了剪枝,比如一些情况直接跳出循环。 我的代码: class Solution { p…

说下JVM中一次完整的GC流程?

大家好,我是锋哥。今天分享关于【说下JVM中一次完整的GC流程?】面试题。希望对大家有帮助; 说下JVM中一次完整的GC流程? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中,垃圾回收(GC&am…

vs配置c++标准

在 vcxproj 文件中添加 <LanguageStandard>stdcpp17</LanguageStandard> 和在 Visual Studio 属性页面中设置 “C语言标准” 为 “ISO C17 标准 (/std:c17)” 是完全等价的。 它们的对应关系是&#xff1a; VS属性页面中的设置&#xff1a; 项目 -> 属性 ->…

TcpServer 服务器优化之后,加了多线程,对心跳包进行优化

TcpServer 服务器优化之后&#xff0c;加了多线程&#xff0c;对心跳包进行优化 TcpServer.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <vector> #include <map> #…

风控大讲堂|游戏黑产情报挖掘与治理

您的产品有没有遇到过被薅羊毛了&#xff1f;网络游戏行业的繁荣&#xff0c;催生了一批围绕游戏而生的职业玩家&#xff0c;他们利用多开、修改器等手段&#xff0c;疯狂薅游戏资源&#xff0c;破坏游戏经济平衡&#xff0c;给游戏公司带来了难以估量的巨大损失。那么针对此类…

最近邻搜索 - 经典树型结构 M-Tree

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 最近邻搜索的目标是从 N N N 个对象中&#xff0c;快速找到距离查询点最近的对象。根据需求的不同&#xff0c;该任务又分…

Jmeter进阶篇(30)深入探索 JMeter 监听器

前言 在性能测试领域里,Apache JMeter 是一款经典而强大的工具,而其中的监听器(Listeners)组件更是发挥着不可或缺的关键作用。 监听器就像敏锐的观察者,默默记录测试执行过程中的各种数据,作为系统性能分析的数据依据。 本文将带你全方位走进 JMeter 监听器的奇妙世界,…

uni-app 个人课程表页面

uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码&#xff0c;只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中&#xff0c;编写页面结构&#xff1a; <template><view><u-navbar title"个人中心"><view class&q…

ElementEye,网页分析器

介绍 我们经常使用Python写爬虫&#xff0c;爬到网页数据之后&#xff0c;就需要用beautifulSoup进行解析。因为写爬虫并不是我的主营工作&#xff0c;大多数只是用来分析一下想要的数据而已&#xff0c;所以经常会忘记beautifulSoup的用法。 同时&#xff0c;我们总是分析页面…

【Compose multiplatform教程】01 创建你的多平台项目 <官网搬运>

这是 “创建带有共享逻辑和用户界面的 Compose 多平台应用” 教程的第一部分。 第一步&#xff1a;创建你的多平台项目 第二步&#xff1a;探究可组合代码 第三步&#xff1a;修改项目 第四步&#xff1a;创建你自己的应用程序 在这里&#xff0c;你将学习如何使用 Kotlin 多平…

使用OpenTK展示3D点云图像(C#)

最近在研究3D显示&#xff0c;找到一款在winform上展示3D点云的控件&#xff0c;并且实现了点线面的展示&#xff0c;及光照渲染纹理贴图等功能&#xff0c;如下面几张图所展示。 一些基础知识可以在LearnOpenTK - OpenTK 这个网站上学习到。 我这边使用的是openTK3.3.3版本&a…

李宏毅机器学习-批次 (batch)和动量(momentum)

一.batch&#xff08;批次&#xff09; 在计算微分时&#xff0c;不是对所有的数据算出来的Loss值做微分&#xff0c;而是将所有的数据分成一个一个的batch。一个batch是一个B&#xff0c;在更新参数时&#xff0c;拿B的资料计算Loss&#xff0c;计算gradient&#xff0c;再更新…

洗鞋小程序(源码+文档+部署+讲解)

本文将深入解析“洗鞋小程序”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 为洗鞋提供服务&#xff0c;包含小程序和管理端。 本项目名称为洗鞋小程序&#xff0c;是一个基于小程序的在线洗鞋平台。该系统提供下单、订单管…

【数据结构】二叉树的性质和存储结构

性质 在二叉树的第i层上至多有2^{i-1}个结点,至少有1个结点 深度为k的二叉树至多有2^{k-1}个结点&#xff08;k≥1&#xff09;&#xff0c;至少有k个结点 对任何一棵二叉树T&#xff0c;如果其叶子数为n0&#xff0c;度为2的结点数为n2&#xff0c;则n0n21 具有n个结点的完…

交换排序(Swap Sort)详解

交换排序Swap Sort详解 冒泡排序冒泡算法代码实现冒泡分析 快速排序快排算法代码实现快排分析 交换类排序主要是通过两两比较待排元素的关键字&#xff0c;若发现与排序要求相逆&#xff0c;则交换之。在这类排序方法中最常见的是起泡排序&#xff08;冒泡排序&#xff09;和快…