One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用

chatgpt/2023/9/23 2:58:03

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用

  • 0. 前言
  • 1. 灵感
  • 2. 实验
  • 3. 结论

0. 前言

近期,OpenAI发布的chat GPT可谓是各种刷屏,很多人都在关注这种模式是否可以应用于搜索引擎,这给做搜索的朋友们带来了很大的危机感。然而,我尝试用它做信息抽取,也得到了让我感到非常害怕的结果。本文就结合一个简单的例子,来聊一聊chat GPT在信息抽取上的使用。

1. 灵感

事情的起因是Blender Lab的一篇论文,《CODE4STRUCT: Code Generation for Few-Shot Structured Prediction from Natural Language》,做的是事件论元抽取(EAE,Event Argument Extraction),我看到这个题目的时候,第一反应就是应该跟UIE的前身Text2Event (Lu et al., 2021)比较相似,果然在大概读了一下这篇论文之后,发现论文对比的工作主要就是这三个:

  • DEGREE (Hsu et al., 2022)
  • BART-Gen (Li et al., 2021)
  • Text2Event (Lu et al., 2021)

其中,后两者我都读过论文,也实验过,第一个DEGREE暂时还没有了解。另外值得一提的是本文的作者也是BART-Gen的作者。

说回这篇论文,目的就是通过一个生成式的模型,实现从非结构化的文本,到“伪结构化”的文本,然后再解码出事件,主要创新点在于,没有直接用template+text组合的范式作为输入文本,而是把输入写到了代码的注释里,借助OpenAI的CODEX (Chen et al., 2021) ,去生成一段代码,其中代码里的内容是事件的论元。

code4struct
从图中可以看出,code4structure的输入会非常长,包括了schema的定义,给出的例子,以及写在注释里的原文。

整篇论文浏览下来,发现作者似乎并没有提出创新性的模型,只是在任务范式上进行了转换,在模型上完全是调用了Codex的API。在之前的博客《(杂谈)世界上本没什么prompt,有的只是加权平均——关于NLP中embedding的一点思考》中,我们探索了prompt在做什么,其本质是prompt中提供了若干“锚点”,以学习其他token的表征。所以这篇文章做的工作,在我看来是显而易见能够收到这样一个结果的,因为这个模型已经训练的足够强大。

那么说回这个Codex,我之前对它完全没有了解,去查了一下发现也是openAI做出来的,其模型也是采用的GPT-3,训练样本主要是GitHub里的一些开源项目。

那么问题来了,如果Codex可以用来做事件抽取,那chatGPT应该也没有问题吧?

2. 实验

带着这个想法,我从同事那里借来了一个openAI的账号,chat GPT能不能完成任务。

在这里我没有直奔主题,直接输入文本让它抽取,因为之前看到有人介绍这个模型是会考虑之前交互的所有内容的,包括你的问题和它给出的答案,所以最好是一步步的引导它。

于是我先问它知不知道事件抽取相关的概念:
eae
回答的挺不错的,然后进一步引导,因为我马上要给schema了,就先让它解释一下schema:
schema
接下来就是主要部分了,以ACE2005中的事件模式为例。我先告诉它,schema是什么,然后给它一个例子,告诉它,我给你这样一句话,你应该给我输出什么,最后把输入文本告诉它,让它给出相应的输出:
example
这个模型可以接收的输入挺长的,可以放心给。其实我给的这一场段话,都可以理解为所谓的“prompt”。

这是模型给出的回答,可以看到效果是相当不错的,也就是说,我们完全可以利用chatGPT实现one-shot的事件抽取,这是一件相当可怕的事情,对之前的信息抽取研究简直就是降维打击。
output
应用在信息抽取中,这个模型可怕的地方,不仅在于one-shot,还有以下两点:

  1. 它会保留之前的对话信息;
  2. 它会在与用户的交互中轻松实现纠正。

对于第一点,我在介绍清楚了任务范式之后,接下来的抽取,就不再需要每次描述一遍我的schema了:
inputt
可以看到,我给一句话的输入,它直接就给我返回输出结果了。

并且,我觉得Place和target论元它抽取的不太对,好像是对我的例子理解的有问题,因为我只给了它一个例子,在那个例子中,所有的角色都能找到相应的论元。所以我又告诉它,如果哪个角色没有论元的话,你给我保留为空就行:
矫正
然后它就很聪明的学会了:
o
接下来,再来一个例子检验一下:
example3
效果已经很不错了,但是这个opened fire,我认为不是instrument,所以我再跟模型强调一下:
矫正3
到这里,模型所能够输出的效果,已经比我之前有监督训练的模型更好了,让我忍不住自我怀疑,之前到底训练了个什么东西,在大样本预训练模型面前竟然如此不堪一击。

3. 结论

事件抽取作为信息抽取中比较难的任务,已经很轻松的被chat GPT拿下了,我相信不仅是我,很多从业者,包括这两年在三大顶会上发表过很多文章的大佬,或多或少都会有一些自我怀疑。这也给我们提了个醒,仅仅依靠范式迁移做的所谓创新,其实并没有什么实际价值,从应用层面上已经被大预料大模型吊打,而从模型结构的改进而言,似乎也没有什么征兆显示短期内有什么结构可以取代transformer。

并不是说chatGPT已经是一个非常成熟的应用,马上就要颠覆这个颠覆那个,但是不可否认的是,对于信息抽取这样高度结构化的“简单”任务,大模型是很容易handle的。在prompt的范式下,输入的目标文本中的每个token可以与用户的其他描述性的输入发生更多的交互,而在大模型足够多参数加持下,这一优势似乎会被放大很多。

但是从模型给出的结果可以看出,它除了把我想要的答案给出了之外,还给了一些解释,其实这些解释我是不想要的。那么对于应用来讲,可能需要做一些restructure的工作,或许将来某一天,等大模型更成熟一些,这类restructure的工作也可以省略了。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计JAVA政府项目管理平台

[附源码]计算机毕业设计JAVA政府项目管理平台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

Davids实操笔记:docker安装使用小米SQL分析工具Soar

文章目录docker安装使用小米SQL分析工具Soar背景介绍官网简介功能特点线路图开始安装使用Soar访问SOAR-WEBSOAR配置SQL分析总结docker安装使用小米SQL分析工具Soar 关注可以查看更多粉丝专享blog~ 背景 做后端开发难免和数据库打交道,有时候回碰到很多特别复杂同时…

信息收集之网站镜像克隆

前言 一个成功的渗透测试人员,在进行一次成功的渗透测试之前,必须能够获得尽可能多的信息。有时候复制组织的整个网站进行离线评估更有效。这可以使用自动化工具设定搜索条件,或者仅对当前站点改变的敏感信息进行镜像复制。当离线时&#xff…

嵌入式系统之-小米路由器3G v1

嵌入式系统之-小米路由器3G v1 相关汇总:嵌入式系统系列目录 第一篇 嵌入式系统之-小米路由器3G V1 第二篇 … 未完待续,欢迎收藏关注。 目录嵌入式系统之-小米路由器3G v1前言一、开箱和拆机二、硬件配置三、开启ssh3.1 升级到开发版ROM3.1.1 下载ROMa…

MacOS Ventura 13.1Beta(22C5033e) OpenCore 0.8.6 winPE双引导分区镜像

01 镜像特点 2022年10月15日重新针对macos 13 Ventura进行优化。 系统缩减为两引导分区,去掉clover支持。 系统为二引导分区:opencore分区/hgws定制winpe分区/ 备注:此镜像仅适用与16g优盘以及16g以上 md5: d8bc72314ba79252…

搞安全方向需要哪些技术基础和技能?

本人简要叙述安全领域对人才的要求。 总体要求 有扎实的计算机理论基础,熟悉常用的数据结构与算法。了解常见Linux以及安卓平台的常见安全漏洞类型以及典型的防护方案,了解基本安全检测原理。 Android安全 熟悉Android自动化漏洞扫描工具熟悉apk反编…

通过Dockerfile创建docker镜像

创建镜像三种方法 Docker镜像创建方法有三种,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 通过Dockerfile创建镜像 这里主要记录下基于Dockerfile创建方法,Dockerfile是由一组指令组成的文件,其中每条指令对应Linux中…

小米总参php面试题_《2018 年小米高级 PHP 工程师面试题(模拟考试卷)》答案解析...

1、通过哪一个函数,可以把错误转换为异常处理?A:set_error_handlerB:error_reportingC:error2exceptionD:catch正确答案:A答案分析:set_error_handler() 可指定一个回调函数&#xf…
推荐文章