大型语言模型在实体关系提取中的应用探索

        如今LLM(大语言模型)的问答与生成能力已被大家所熟知,很多用户已经亲身体会到了LLM为工作、生活带来的变革。其实,作为NLP(自然语言处理)的集大成者,LLM能为我们提供的能力不限于此。其基本胜任传统NLP技术所能承担的所有任务。如:分词、语义识别、命名实体识别、实体关系识别等。其中,命名实体识别、实体关系识别在NLP任务中属于难度较大的任务。传统的NLP方案,一般针对不同的业务领域都要进行专门的模型训练,从而提高识别率,但真实效果也往往不尽如人意。这也使得需要以这类技术为基础的业务,发展速度受到了一定的限制。

        一个比较常见的实体关系识别场景是构建行业知识图谱。在构建知识图谱时,需要从海量的行业知识文档中提取有效的实体及其实体关系,而后进行数据预处理、实体对齐等操作。在今年以OpenAI为代表的LLM席卷全球前,笔者尝试了很多开源技术来进行实体关系的识别,发现中文环境下,百度的Paddle所展示出的效果最好的。但其能够识别的文本篇幅及质量仍让人感到些许遗憾。直到LLM出现在笔者视野里,笔者开始尝试使用LLM来完成实体关系的识别结果令人感到兴奋。

        测试时,我们使用了如下的一段文字:

我抽取“####”后内容中的黑客组织及其账号,并输出为json格式

####

ATW 组织发布的“ATW-对华战争”帖

2021 年 10 月,ATW 组织开始频繁活动,不断在电报群组(https://t.me/s/ATW2022,Email:AgainstTheWest@riseup.net,备份 Email:apt49@riseup.net)、推特(@_AgainstTheWest,https://mobile.twitter.com/_AgainstTheWest)、Breadched(账号:AgainstTheWest)等境外社交平台开设新账号,扩大宣传途径,并表现出较明显的亲美西方政治倾向,多次声明“攻击目标是俄罗斯、白俄罗斯和中国、伊朗、朝鲜”、“愿意与美国、欧盟政府共享所有文件”、“愿受雇于相关机构”。

        文本中的第一句是我们给LLM输入的提示(Prompt)信息,要求其提取后续内容中的黑客组织及其账号,然后将结果以Json格式输出。而“####”后的内容为一小段文字,是LLM要处理的目标文本。下面让我们来看一看当把这段文字交给GPT,它的输出表现吧。

        以下是使用GPT 3.5(Old)时,其模型的结果输出:

{

   "组织名称": "ATW",

   "账号": [{

         "平台": "电报",

         "链接": "https://t.me/s/ATW2022"

      },{

         "平台": "Email",

         "地址": "AgainstTheWest@riseup.net"

      },{

         "平台": "备份Email",

         "地址": "apt49@riseup.net"

      },{

         "平台": "推特",

         "账号": "@_AgainstTheWest",

         "链接": "https://mobile.twitter.com/_AgainstTheWest"

      },{

         "平台": "Breadched",

         "账号": "AgainstTheWest"

      }]

}

当看到这个结果时,令人眼前一亮。其不但分析出了黑客组织及其相关账号,还为每个账号进行了平台划分。一定程度上超出了当时给其写提示时的期望输出。结果的条理性超过了一般人类的总结水平。而在这个基础上再使用程序进行自动化处理,构建知识图谱就变的方便很多了。

        笔者发现,GPT 3.5升级以后,同样的输入只能获得如下的输出了

{

  "黑客组织": "ATW",

  "账号信息": {

    "电报群组": "https://t.me/s/ATW2022",

    "电子邮箱": "AgainstTheWest@riseup.net",

    "备用电子邮箱": "apt49@riseup.net",

    "推特账号": "@_AgainstTheWest",

    "推特链接": "https://mobile.twitter.com/_AgainstTheWest",

    "Breadched账号": "AgainstTheWest"

  }

}

这里的输出省去了对平台的扩展整理,但更加符合输入的提示。虽无惊喜,但更加稳定。为了获得类似升级前的效果,我们修改提示的描述如下:

我抽取“####”后内容中的黑客组织及其账号与账号平台,并输出为json格式

可以获得如下输出:

{

  "黑客组织": "ATW",

  "账号": [

    {"平台": "电报群组", "用户名/链接": "https://t.me/s/ATW2022"},

    {"平台": "Email", "用户名/链接": "AgainstTheWest@riseup.net"},

    {"平台": "备份 Email", "用户名/链接": "apt49@riseup.net"},

    {"平台": "推特", "用户名/链接": "@_AgainstTheWest, https://mobile.twitter.com/_AgainstTheWest"},

    {"平台": "Breadched", "用户名/链接": "AgainstTheWest"}

  ]

}

        从输出的信息可以看到,我们希望获得的要素信息基本都被识别出来了,只是在输出格式上有一定差别。我们可以通过编写处理程序解析这个Json数据,获取有效的实体关系信息。但这种方式的灵活度稍差,需要根据LLM的输出结果不断进行调整适配。一种更好的办法是,在提示中给出Json格式的输出样例,以确保LLM按照指定的格式输出结果,方便后续的程序统一处理,更加简单、方便。(注:以上两种GPT 3.5版本的实验是通过TheB.AI网站完成的。如果使用OpenAI提供的ChatGPT,由于其在获得提示后更倾向于输出Python脚本,所以在提示的最后需额外加入”不需要给出代码”,以确保其能够正常输出Json结构的数据。)

        从目前的实验结果看,使用LLM进行实体关系的识别,较之前的技术,有了很大程度的提升。这种提升能大幅促进知识图谱等应用系统的构建效率及准确性。但在使用LLM的这种技术时,需要注意,不同的LLM在相同的提示和输入下,返回的信息会有不同。使用者需要选取合适的LLM并尝试不同的Prompt,确保LLM的结果符合预期。

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

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

相关文章

[开题报告]基于SpringBoot的艾滋病科普平台的设计与实现

1.选题背景 艾滋病(艾滋病毒感染与免疫缺陷综合征)是一种严重的传染病,对人类的健康和社会稳定造成了极大的影响。全球范围内,艾滋病已经成为公共卫生领域的重大挑战之一。尽管在科学研究和医疗技术方面取得了一定进展&#xff0…

设置随机种子保证网络可复现性

原文链接:https://zhuanlan.zhihu.com/p/141063432 为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样?固定随机数种子是非常重要的。但是如果你使用的是PyTorch等…

MySQL 8创建数据库、数据表、插入数据并且查询数据

我使用的数据库是MySQL 8。 创建数据库 create database Bookbought; -- 创建数据库Bookbought use Bookbought; -- 使用数据库Bookbought创建数据表 创建用户表bookuser。 create table ## 往allbook里边插入数据(id INT PRIMARY KEY AUTO_INCREMENT, -- id 为 主键userna…

CCKS2023-面向上市公司主营业务的实体链接评测-亚军方案

赛题分析 大赛地址 https://tianchi.aliyun.com/competition/entrance/532097/information 任务描述 本次任务主要针对上市公司的主营业务进行产品实体链接。需要获得主营业务中的产品实体,将该实体链接到产品数据库中的某一个标准产品实体。产品数据库将发布在竞赛…

机器学习决策树ID3算法

1、先去计算总的信息量 2、根据不同指标分别计算对应的信息增益 3、根据算出的信息增益来选择信息增益最大的作为根结点 4、天气中选择一个继续上述过程 5、决策树划分结束

MySQL索引优化实战二

分页查询优化 很多时候我们业务中实现分页功能时可能会用如下SQL来实现: select * from employees LIMIT 10000,10表示从表中中区从10001行开始的10行记录,看似只查了10条记录,但是这条SQL是先读取10010条记录,然后抛弃前10000条…

Spring事务管理介绍

文章目录 Spring事务管理1 Spring事务简介【重点】问题导入1.1 Spring事务作用1.2 需求和分析1.3 代码实现【前置工作】环境准备【第一步】在业务层接口上添加Spring事务管理【第二步】设置事务管理器(将事务管理器添加到IOC容器中)【第三步】开启注解式事务驱动【第四步】运行…

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黄金正弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.参考…

STM32的HAL库串口编程

STM32的串口轮询 1. 一天的努力2. 问题3. 中断接收4. 还没有结束1. 一天的努力 今天努力了一天,用STM32CubeIDE为STM32F103C8T6进行编程。遇到了串口麻烦。发送数据非常正常。接收数据碰到了问题,在这里写下来供初学者共勉。 2. 问题 轮询读取。在主程序中添加下面的代码:…

分享一些Git的常用命令

常用命令 命令名称作git config —global user.name 用户名设置用户签名git config —global user.email 邮箱设置用户签名git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m “日志信息” 文件名提交到本地库git reflog查看历史记录git r…

gcc栈帧随机化介绍

一、简介 在GCC中,栈帧随机化是一种控制流保护机制,用于防止攻击者利用栈溢出漏洞执行代码注入攻击。栈帧随机化通过在每次程序执行时随机化生成的函数栈帧布局,使得攻击者无法准确预测栈帧的结构,从而对栈进行攻击的难度大大增加…

开启gitlab中远程连接pgsql

1、修改gitlab.rb vim /etc/gitlab/gitlab.rb 配置为: postgresql[enable] true postgresql[listen_address] 0.0.0.0 postgresql[port] 5432 postgresql[data_dir] "/var/opt/gitlab/postgresql/data" 2、gitlab-ctl reconfigure 等待报错 3、修…

go语言笔记(1)

https://studygolang.com/pkgdoc 一、go程序开发注意事项 1)源文件"go"为扩展名 2)执行入口为main()方法 3)严格区分大小写 4)每个预计不需要分号 5)一行写一条 6)go语言定义的变量或者import的包没有用到,代码编…

Nginx配置反向代理与负载均衡

Nginx配置反向代理与负载均衡 一、代理服务1.正向代理2.反向代理 二、实战场景-反向代理1.修改nginx配置 -> nginx.conf文件2.修改前端路径 三、实战场景-负载均衡1.热备2.轮询3.加权轮询4.ip_hash ​ Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,…

10 分钟解释 StyleGAN

一、说明 G在过去的几年里,生成对抗网络一直是生成内容的首选机器学习技术。看似神奇地将随机输入转换为高度详细的输出,它们已在生成图像、生成音乐甚至生成药物方面找到了应用。 StyleGAN是一种真正推动 GAN 最先进技术向前发展的 GAN 类型。当Karras …

命令模式-C++实现

命令模式是一种行为型设计模式,它将请求封装成一个对象,从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦,发送者不需要知道接收者的信息,只需要通过命令对象来与它进行交互。 命令模式有…

力扣题:字符串的反转-11.23

力扣题-11.23 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:557. 反转字符串中的单词 III 解题思想:先读取单词,然后将单词进行翻转即可 class Solution(object):def reverseWords(self, s):""":type s…

2024年AMC8美国初中数学竞赛最后一个月复习指南(附资料)

还有一个半月的时间,2024年AMC8(大家默认都直接叫这个比赛的英文名,而不叫中文名美国数学竞赛或美国初中数学竞赛了)就要开始了。 有志于在2024年AMC8的比赛中拿到奖项的孩子已经在“磨拳霍霍”了。那么最后一个半月的时间该如何…

LeetCode刷题---反转链表

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏:http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述…

Linux 进程状态

操作系统学科的进程状态 新建态:刚刚创建的进程, 操作系统还未把它加入可执行进程组, 它通常是进程控制块已经创建但还未加载到内存中的新进程。就绪态:进程做好了准备,只要有机会就开始执行。阻塞态:进程在…