One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用
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,还有以下两点:
- 它会保留之前的对话信息;
- 它会在与用户的交互中轻松实现纠正。
对于第一点,我在介绍清楚了任务范式之后,接下来的抽取,就不再需要每次描述一遍我的schema了:
可以看到,我给一句话的输入,它直接就给我返回输出结果了。
并且,我觉得Place和target论元它抽取的不太对,好像是对我的例子理解的有问题,因为我只给了它一个例子,在那个例子中,所有的角色都能找到相应的论元。所以我又告诉它,如果哪个角色没有论元的话,你给我保留为空就行:
然后它就很聪明的学会了:
接下来,再来一个例子检验一下:
效果已经很不错了,但是这个opened fire,我认为不是instrument,所以我再跟模型强调一下:
到这里,模型所能够输出的效果,已经比我之前有监督训练的模型更好了,让我忍不住自我怀疑,之前到底训练了个什么东西,在大样本预训练模型面前竟然如此不堪一击。
3. 结论
事件抽取作为信息抽取中比较难的任务,已经很轻松的被chat GPT拿下了,我相信不仅是我,很多从业者,包括这两年在三大顶会上发表过很多文章的大佬,或多或少都会有一些自我怀疑。这也给我们提了个醒,仅仅依靠范式迁移做的所谓创新,其实并没有什么实际价值,从应用层面上已经被大预料大模型吊打,而从模型结构的改进而言,似乎也没有什么征兆显示短期内有什么结构可以取代transformer。
并不是说chatGPT已经是一个非常成熟的应用,马上就要颠覆这个颠覆那个,但是不可否认的是,对于信息抽取这样高度结构化的“简单”任务,大模型是很容易handle的。在prompt的范式下,输入的目标文本中的每个token可以与用户的其他描述性的输入发生更多的交互,而在大模型足够多参数加持下,这一优势似乎会被放大很多。
但是从模型给出的结果可以看出,它除了把我想要的答案给出了之外,还给了一些解释,其实这些解释我是不想要的。那么对于应用来讲,可能需要做一些restructure的工作,或许将来某一天,等大模型更成熟一些,这类restructure的工作也可以省略了。
One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用相关推荐
- 【NLP】如何利用BERT来做基于阅读理解的信息抽取
信息抽取 (Information Extraction: IE)是把文本里包含的信息进行结构化处理,变成计算机能够处理的结构,实体抽取.关系抽取.事件抽取等都属于信息抽取的范畴.在NLP领域,信息抽 ...
- NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等
NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...
- 深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等
[深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...
- 文本信息事件信息抽取的方法
事件抽取(EE)是信息抽取研究中的一个重要而富有挑战性的课题.事件作为一种特殊的信息形式,是指在特定时间.特定地点发生的涉及一个或多个参与者的特定事件,通常可以描述为状态的变化.事件提取任务旨在将此类 ...
- 有关信息抽取的文章列表(1)
转自:http://blog.csdn.net/ictextr9/article/details/3727257 这里总结了近几年来,一些知名会议上有关信息抽取的文章,不断更新中. [1] Ru ...
- 网上信息抽取技术纵览
网上信息抽取技术纵览 (Information Extraction from World Wide Web-A Survey) Line Eikvil 原著 (1999.7) 陈鸿标 译 (2003 ...
- 百分点认知智能实验室:基于不完全标注样本集的信息抽取实践
编者按 信息抽取是从文本数据中抽取特定信息的一种技术,命名实体识别(Named Entity Recognition, NER)是信息抽取的基础任务之一,其目标是抽取文本中具有基本语义的实体单元,在知 ...
- 【CIPS 2016】(8-10章)信息抽取、情感分析自动文摘 (研究进展、现状趋势)
CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...
- 面向知识图谱的信息抽取
面向知识图谱的信息抽取 人工智能技术与咨询 点击蓝字 · 关注我们 来源:< 数据挖掘,> ,作者赵海霞等 关键词: 知识图谱:信息抽取:实体抽取:关系抽取:开放域 摘要: 摘要: 随着大 ...
最新文章
- 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速
- python3 判断进程是否存在
- python菜鸟工具-Python3 教程
- 解决:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘ip‘ at row 1
- java嵌套对象,java – 从嵌套流中收集一组对象
- rspec 测试页面元素_如何使用RSpec对Go应用进行黑盒测试
- L1-017. 到底有多二-PAT团体程序设计天梯赛GPLT
- Skype for Business 2015全新部署_07.前端安装01
- (简历来自拉勾)H5前端工程师:
- 手机H5-调用百度地图导航
- 互联网公司无线接入平台怎么样
- 程序员无处安放的青春
- OPenGL 基本知识(根据自己理解整理)
- mysql表关联查询都有什么方式_所有关联表查询方式
- python代码计算字数_如何用python计算文件的字数
- 鼠标测试cps软件,人最多鼠标cps是多少?
- (前端)html与css css 18、清除浮动,溢出隐藏
- JavaBean(1)——学习记录
- Java虚拟机—JVM
- [pysyft-006]联邦学习pysyft从入门到精通--使用protocol
热门文章
- for循环输出1949(包括)-2019(包括)年的之间的所有猪年
- Python字节转换(Bytes conversion)
- PHP 的8种数据类型
- 会员卡券领取 小程序_微信小程序会员卡开发跳坑
- Au:分析与统计面板
- 刺激战场电脑版android,逍遥安卓模拟器像端游操控玩《绝地求生刺激战场》电脑版...
- 微信小程序 理发店美容店预约会员管理系统Android hbuilderx App毕业设计
- python 遍历数组的3种方法及常用的代码
- 王一茗: “大数据能力提升项目”与我的成长之路 | 提升之路系列(三)
- Python基础教程索引