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) ,去生成一段代码,其中代码里的内容是事件的论元。


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

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

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

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

2. 实验

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

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

于是我先问它知不知道事件抽取相关的概念:

回答的挺不错的,然后进一步引导,因为我马上要给schema了,就先让它解释一下schema:

接下来就是主要部分了,以ACE2005中的事件模式为例。我先告诉它,schema是什么,然后给它一个例子,告诉它,我给你这样一句话,你应该给我输出什么,最后把输入文本告诉它,让它给出相应的输出:

这个模型可以接收的输入挺长的,可以放心给。其实我给的这一场段话,都可以理解为所谓的“prompt”。

这是模型给出的回答,可以看到效果是相当不错的,也就是说,我们完全可以利用chatGPT实现one-shot的事件抽取,这是一件相当可怕的事情,对之前的信息抽取研究简直就是降维打击。

应用在信息抽取中,这个模型可怕的地方,不仅在于one-shot,还有以下两点:

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

对于第一点,我在介绍清楚了任务范式之后,接下来的抽取,就不再需要每次描述一遍我的schema了:

可以看到,我给一句话的输入,它直接就给我返回输出结果了。

并且,我觉得Place和target论元它抽取的不太对,好像是对我的例子理解的有问题,因为我只给了它一个例子,在那个例子中,所有的角色都能找到相应的论元。所以我又告诉它,如果哪个角色没有论元的话,你给我保留为空就行:

然后它就很聪明的学会了:

接下来,再来一个例子检验一下:

效果已经很不错了,但是这个opened fire,我认为不是instrument,所以我再跟模型强调一下:

到这里,模型所能够输出的效果,已经比我之前有监督训练的模型更好了,让我忍不住自我怀疑,之前到底训练了个什么东西,在大样本预训练模型面前竟然如此不堪一击。

3. 结论

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

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

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

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

  1. 【NLP】如何利用BERT来做基于阅读理解的信息抽取

    信息抽取 (Information Extraction: IE)是把文本里包含的信息进行结构化处理,变成计算机能够处理的结构,实体抽取.关系抽取.事件抽取等都属于信息抽取的范畴.在NLP领域,信息抽 ...

  2. NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...

  3. 深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  4. 文本信息事件信息抽取的方法

    事件抽取(EE)是信息抽取研究中的一个重要而富有挑战性的课题.事件作为一种特殊的信息形式,是指在特定时间.特定地点发生的涉及一个或多个参与者的特定事件,通常可以描述为状态的变化.事件提取任务旨在将此类 ...

  5. 有关信息抽取的文章列表(1)

    转自:http://blog.csdn.net/ictextr9/article/details/3727257 这里总结了近几年来,一些知名会议上有关信息抽取的文章,不断更新中. [1]    Ru ...

  6. 网上信息抽取技术纵览

    网上信息抽取技术纵览 (Information Extraction from World Wide Web-A Survey) Line Eikvil 原著 (1999.7) 陈鸿标 译 (2003 ...

  7. 百分点认知智能实验室:基于不完全标注样本集的信息抽取实践

    编者按 信息抽取是从文本数据中抽取特定信息的一种技术,命名实体识别(Named Entity Recognition, NER)是信息抽取的基础任务之一,其目标是抽取文本中具有基本语义的实体单元,在知 ...

  8. 【CIPS 2016】(8-10章)信息抽取、情感分析自动文摘 (研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...

  9. 面向知识图谱的信息抽取

    面向知识图谱的信息抽取 人工智能技术与咨询 点击蓝字 · 关注我们 来源:< 数据挖掘,> ,作者赵海霞等 关键词: 知识图谱:信息抽取:实体抽取:关系抽取:开放域 摘要: 摘要: 随着大 ...

最新文章

  1. 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速
  2. python3 判断进程是否存在
  3. python菜鸟工具-Python3 教程
  4. 解决:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘ip‘ at row 1
  5. java嵌套对象,java – 从嵌套流中收集一组对象
  6. rspec 测试页面元素_如何使用RSpec对Go应用进行黑盒测试
  7. L1-017. 到底有多二-PAT团体程序设计天梯赛GPLT
  8. Skype for Business 2015全新部署_07.前端安装01
  9. (简历来自拉勾)H5前端工程师:
  10. 手机H5-调用百度地图导航
  11. 互联网公司无线接入平台怎么样
  12. 程序员无处安放的青春
  13. OPenGL 基本知识(根据自己理解整理)
  14. mysql表关联查询都有什么方式_所有关联表查询方式
  15. python代码计算字数_如何用python计算文件的字数
  16. 鼠标测试cps软件,人最多鼠标cps是多少?
  17. (前端)html与css css 18、清除浮动,溢出隐藏
  18. JavaBean(1)——学习记录
  19. Java虚拟机—JVM
  20. [pysyft-006]联邦学习pysyft从入门到精通--使用protocol

热门文章

  1. for循环输出1949(包括)-2019(包括)年的之间的所有猪年
  2. Python字节转换(Bytes conversion)
  3. PHP 的8种数据类型
  4. 会员卡券领取 小程序_微信小程序会员卡开发跳坑
  5. Au:分析与统计面板
  6. 刺激战场电脑版android,逍遥安卓模拟器像端游操控玩《绝地求生刺激战场》电脑版...
  7. 微信小程序 理发店美容店预约会员管理系统Android hbuilderx App毕业设计
  8. python 遍历数组的3种方法及常用的代码
  9. 王一茗: “大数据能力提升项目”与我的成长之路 | 提升之路系列(三)
  10. Python基础教程索引