信息抽取里程碑式突破!终于要大规模落地了??

2023-10-14 04:50

本文主要是介绍信息抽取里程碑式突破!终于要大规模落地了??,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0359a789aaf18733a4bc8ddc1be4d047.png

文 | 卖萌酱

大家好,我是卖萌酱。

AI领域常见的工作突破有三类:

  1. 屠爆了学术界榜单,成为该领域学术层面的新SOTA

  2. 实现了大一统,用一个架构实现对该领域诸多子任务的统一建模,刷新建模认知

  3. 将NB的学术界新SOTA变成一件人人可傻瓜式使用的开源工具利器,带领该领域大规模落地开花

要单独实现其中的任何一点,都是一件很有挑战的事情。如果我说,在信息抽取领域,不久前的一个工作同时做到了这三种突破呢?

c32d872fb7ab6ed26835bea3daf8cd46.png

这次,卖萌酱倒着讲。

先讲第三点——

一个刷新认知的信息抽取开源工具

信息抽取是一个行业应用价值很高的技术,却因为任务难度大,落地成本居高不下。

像金融、政务、法律、医疗等行业,有大量的文档信息需要人工处理,比如政务人员处理市民投诉,工作人员需要从中快速提取出被投诉方、事件发生地点、时间、投诉原因等结构化信息,非常费时费力。若信息抽取技术能低成本、高性能的实现落地,可以大大提升诸多行业的生产效率,节约人力成本。

如今这个想法,迎来了史无前例的可能性。

话不多说,直接上代码,上效果!

实体抽取

from pprint import pprint
from paddlenlp import Taskflow
schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction
ie = Taskflow('information_extraction', schema=schema)
pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) # Better print results using pprint
>>> 
[{'时间': [{'end': 6, 'probability': 0.9857378532924486, 'start': 0, 'text': '2月8日上午'}],'赛事名称': [{'end': 23,'probability': 0.8503089953268272,'start': 6,'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],'选手': [{'end': 31,'probability': 0.8981548639781138,'start': 28,'text': '谷爱凌'}]}]

仅用三行代码就实现了精准实体抽取?

再来试试更困难的事件抽取任务:

事件抽取

schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']} # Define the schema for event extraction
ie.set_schema(schema) # Reset schema
ie('中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。')
>>> 
[{'地震触发词': [{'end': 58,'probability': 0.9987181623528585,'start': 56,'text': '地震','relations': {'地震强度': [{'end': 56,'probability': 0.9962985320905915,'start': 52,'text': '3.5级'}],'时间': [{'end': 22,'probability': 0.9882578028575182,'start': 11,'text': '5月16日06时08分'}],'震中位置': [{'end': 50,'probability': 0.8551417444021787,'start': 23,'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)'}],'震源深度': [{'end': 67,'probability': 0.999158304648045,'start': 63,'text': '10千米'}]}}]
}]

同样易用而精准!

需要留意的是,这还是开放域信息抽取的API接口,也就是说,给定任意要抽取的实体、关系、事件等类型(schema),模型均能从文本中抽取出对应的目标。

例如在第一个示例中,我们希望从文本中抽取出时间、选手和赛事名称这么三种实体,将其作为schema参数传给Taskflow后,模型就可以做到从文本中完成这三类实体的精准抽取。

为了避免精挑细选showcase的嫌疑,卖萌酱接连yy了若干实体类型去暴力测试,发现这个API竟然均能应对自如!

感兴趣的小伙伴可以通过以下传送门自行安装体验:

Github链接:
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

这波操作放在2022年还是让人感觉有点梦幻了。要知道,市面上的信息抽取工具大多只能做特定领域的封闭域(有限预定义的schema)抽取,效果还很难保证,更不必说打造成三行代码即可完成调用的开放域工具了。

这不禁让人好奇,这个开源工具的背后是怎么做到的呢?

卖萌酱找PaddleNLP内部人士了解到,关键有二:

  1. 一个发表在ACL2022,屠遍信息抽取榜单的大一统信息抽取诸多子任务的技术UIE

  2. 首个知识增强语言模型——ERNIE 3.0

关于第一点,本文的下一章会做重点阐述,在此稍留作悬念。

关于第二点,我们知道,知识对于信息抽取任务至关重要,而ERNIE 3.0不仅参数量大,还吸纳了千万级别实体的知识图谱,可以说是中文NLP方面最有“知识量”的SOTA底座。在ERNIE 3.0的基础上,如果再构造一个面向开放域信息抽取的二阶段SOTA预训练上层建筑呢?

强强联合,便是这个工具带来梦幻体验的密码。

a876903f93d9651e0908f2385aa60e88.png

需要注意的是,这个包含强大知识储备的NLP基座和梦幻的信息抽取架构均集成到了PaddleNLP中,PaddleNLP却又不止是一个SOTA收纳箱,其还提供了非常易用的模型压缩部署方案、大模型加速技术、产业场景应用范例,做了扎实的易用性优化和性能优化。一句话总结,打造中文NLP应用的神器。

值得关注的是,UIE不仅具备惊艳的zero-shot开放域信息抽取能力,还有强大的小样本定制训练能力。

作者在互联网、医疗、金融三个行业关系、事件抽取任务上测试了小样本定制训练效果:

3564f13019b8cf1b951f818306c3e3bd.png

在金融场景,仅仅加了5条训练样本,uie-base模型F1值提升了25个点。

也就是说,即使工具在某些case或某些场景下表现欠佳,人工标几个样本,丢给模型后就会有大幅的表现提升。这个强大的Few-Shot能力则是工具在大量长尾场景落地的最后一公里保障。

对PaddleNLP内置的黑科技细节和玩法感兴趣的小伙伴,可以扫码报名进群,获取PaddleNLP官方近期组织的直播链接,进群还有更多福利哦~

加入PaddleNLP技术交流群ce17a343856c620e71e1458cd6530ba7.png

入群福利:

  1. 获取直播课程链接

  2. 获取PaddleNLP团队整理的10G重磅NLP学习大礼包

49e481b8ba92b98210a78f1115ad5915.png

挖掘该工具更多的潜力和惊喜,请进传送门:
https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

接下来还有第2点——

一个大一统信息抽取诸多子任务的架构

信息抽取领域的任务繁多,从大的任务类型上,可分为实体抽取、关系抽取、事件抽取、评价维度抽取、观点词抽取、情感倾向抽取等,而若要具体到每个任务类型下的抽取domain和schema定义,则更是无穷无尽了。

因此,以往信息抽取的落地是非常困难、成本高昂的,公司不仅要为每个细分的任务类型和domain标数据、开发模型、专人维护,而且部署起来也非常费力且消耗大量机器资源。

此外,各个子任务也不是完全割裂的,传统的子任务专用设计使得任务之间的通用知识难以共享,一座座“信息孤岛”的力量总是有限的,甚至有偏的。

但现在不是了。由中科院软件所和百度共同提出的一个大一统诸多任务的开放域信息抽取技术UIE,发表在ACL 2022的SOTA技术,直接上图:

794eedfff01528e3fd152856eebe7ab8.png

简单来说,UIE借鉴近年来火热的Prompt概念,将希望抽取的Schema信息转换成“线索词”(Schema-based Prompt)作为模型输入的前缀(SSI),使得模型理论上能够适应不同领域和任务的Schema信息,并按需抽取出线索词指向的内容,生成结构化语言表述的抽取结果(SEL)从而实现开放域环境下的通用信息抽取。

例如上图中,假如我们希望从一段文本中抽取出“人名”的实体和“工作于”的关系,便可以构造[spot] person [asso] work for的前缀,连接要抽取的目标文本[text] ,作为整体输入到UIE中。

那么这里关键的UIE模型是如何训练得到的呢?

UIE作者在预训练模型MLM loss的基础上又巧妙的构造了2个任务/loss:

  • 文本-结构预训练:给定一个<文本,结构>对,基于抽取出的schema通过随机采样spots和asso的方式来构造schema负例,将schema负例与原始的schema(正例)拼接得到meta-schema,最后再拼接上文本,来预测结构。作者表示这样可以避免模型在预训练阶段暴力记忆三元组,得到通用的文本-结构的映射能力ca3993927c6523456fd0fd5771927620.png

  • 结构生成预训练:这个任务是为了训练decoder的结构输出能力,将输出结构SEL作为decoder的优化目标,来学到严谨的SEL规则db15bd81833c419adc697e5775a3f637.png

通过2个loss的联合预训练,便得到了强大的UIE模型。

值得注意的是,尽管原论文使用了T5模型作为backbone,基于生成架构,实际上为了发挥模型在中文任务上的最大潜力,且让模型的推理效率变得可接受(毕竟生成任务还是太重了),在本文第一章提到的PaddleNLP信息抽取方案中,使用了强大的ERNIE 3.0模型+抽取式(阅读理解)架构。因此在中文任务上效果更佳,推理速度更快。

20502302787fa9d7244f9349a9b09113.png

对更多细节感兴趣的小伙伴,可以看原论文或在文末扫码海报预约UIE讲解直播~

论文链接:  
https://arxiv.org/pdf/2203.12277.pdf

最后讲第1点——

不小心,刷了13个SOTA

UIE在各类IE任务的数据集上表现怎么样呢?

首先是常规设定下,4类抽取任务,13个经典测试集与SOTA的对比:

a882a5d9ffcbf49f2feca65e0295e9d9.png

表格右数第二列是未经过UIE预训练的结果(基于T5+SEL直接微调),右数第一列是UIE预训练后微调的结果,可以看出SEL+强大生成模型就可以在信息抽取的统一建模方面取得很强的效果,而经过UIE预训练后则进一步提升了模型表现。

我们知道,模型经过微调,其实会弱化不同预训练策略带来的模型差异。因此UIE预训练的价值在小样本方面得到了更加酣畅淋漓的体现:

6b31fd84af30192036dde50236852187.png

经过UIE预训练后,模型的小样本学习能力得到了极大的提升,这便是UIE工具具备强大定制化能力,进而实现中长尾行业落地的关键。

最后,百度高工会在5.18-5.19日针对信息抽取行业痛点,对UIE和PaddleNLP的玩法和潜力进行深入讲解,通过以下海报扫码预约,进群还有更多福利哦~

加入PaddleNLP技术交流群f9071205a7b84da94725071f54869109.png

入群福利:

  1. 获取直播课程链接。

    34530e6b1880445d0c9eb38f6f546e21.png

  2. 获取PaddleNLP团队整理的10G重磅NLP学习大礼包

21f7982e9f7f830657989de4ba2d8693.png

这篇关于信息抽取里程碑式突破!终于要大规模落地了??的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208264

相关文章

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

Linux命令(11):系统信息查看命令

系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv

【小迪安全笔记 V2022 】信息打点9~11

第9天 信息打点-CDN绕过篇&漏洞回链8接口探针&全网扫指&反向件 知识点: 0、CDN知识-工作原理及阻碍 1、CDN配置-域名&区域&类型 2、CDN绕过-靠谱十余种技战法 3、CDN绑定-HOSTS绑定指向访问 CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

终于解决了excel操作及cspreadsheet.h问题

困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。 首先, 出现暴多错误。解决UNICODE问题,全部添加L。 [1] +++++++++++++++++++ 其次, 出现问题: error   C2664:   &apos;SQLGetInstalledDriversW &apos;

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。 实现过程概述: 模块与功能: re 模块:用于从 OCR 识别出的文本中提取所需的信息。 日期模块:计算年龄。 pandas:处理和操作表格数据。 PaddleOCR:百度的

企业大模型落地的“最后一公里”攻略

一、大模型落地的行业现状与前景 大模型在多个行业展现出强大的应用潜力。在金融行业,沉淀了大量高质量数据,各金融平台用户数以亿计,交易数据浩如烟海。利用大模型分析处理这些数据,金融机构可以预测用户行为偏好,更高效、准确评估客户风险,实时监测交易和市场波动,及时制定策略。IDC 调研显示,超半数的金融机构计划在 2023 年投资生成式人工智能技术。 在科技领域,商汤人工智能大装置为大模型企业提

linux上查看java最耗时的线程信息

找到JAVA进程pid ps -ef|grep java或则jps -mlv 找进行下耗时的线程TID 使用top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid top -Hp 10906 查看最耗时的 TID即线程id printf "%x\n" [tid] 转成16进制 java中的线程类相关信息 jstack 线程ID 可以查看某个线程的堆栈情况,特别对于h