当前位置: 首页 > 科技观察

信息抽取里程碑式突破!NLP即将迎来大规模落地?

时间:2023-03-18 21:20:27 科技观察

人工智能领域的突破通常分为三类:打破学术界的榜单,成为该领域学术层面的新SOTA并实现大一统,用单一架构实现多子统一建模-领域任务,刷新构建模块化认知将NB在学术界的新SOTA变成了一个开源工具,每个人都可以像傻瓜一样使用。带领这个领域大规模开花,并单独实现其中任何一个,都是一件非常具有挑战性的事情。如果我说在信息抽取领域,不久前的一项工作同时实现了这三个突破呢?这次我们先倒着说。先说第三点——刷新认知的开源信息抽取工具。信息抽取是业界应用价值较高的技术,但由于任务难度大,实施成本居高不下。在金融、政务、法律、医疗等行业,有大量的文档信息需要人工处理。例如,政府官员在处理市民投诉时,工作人员需要快速提取受访者、事发地点、时间、投诉原因等结构化信息,这是非常费时费力的。如果能够低成本、高性能地实施信息抽取技术,可以大大提高很多行业的生产效率,节省人力成本。现在这个想法迎来了前所未有的可能性。话不多说,直接上代码,上效果!#从pprint中提取实体importpprintfrompaddenlpimportTaskflowschema=['time','player','eventname']#定义实体提取的模式ie=Taskflow('information_extraction',schema=schema)pprint(ie("FebruaryOn8日上午,北京冬奥会女子自由式滑雪决赛,中国选手谷爱玲以188.25分获得金牌!”))#Betterprintresultsusingpprint>>>[{'time':[{'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':'谷爱玲'}]}]只用三行代码就能实现精准实体提取?让我们尝试一个更困难的事件提取任务:#Eventextractionschema={'Earthquaketriggerword':['Earthquakeintensity','Time','Epicenterposition','Epicenterdepth']}#Definetheschemaforeventextractionie.set_schema(schema)#resetschemaie('中国地震台网官方确定,5月16日06时08分,云南省临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10公里.')>>>[{'地震触发词':[{'end':58,'probability':0.9987181623528585,'start':56,'text':'earthquake','relations':{'地震烈度':[{'end':56,'probability':0.9962985320905915,'start':52,'text':'level3.5'}],'time':[{'end':22,'probability':0.9882578028575182,'start':11,'text':'May16,06:08'}],'Epicenter':[{'end':50,'probability':0.8551417444021787,'start':23,'text':'云南省临沧市凤庆县(北纬24.34度,东经99.98度)'}],'focaldepth':[{'end':67,'probability':0.999158304648045,'start':63,'text':'10km'}]}}]}]也易于使用且准确!感兴趣的小伙伴可以通过以下入口自行安装体验。欢迎大家提前打码链接,推荐访问Github点个Starhttps://github.com/PaddlePaddle/PaddleNLP当然,我们自己测试的时候可能会觉得三行代码就可以了用于任意DIY提取。这是不是有点夸张了?不,这个接口其实是给大家展示了一个通用的开放域信息抽取范式,即开放域信息抽取的API接口,即给定任意类型的待抽取实体、关系、事件等(schema),“提示”模型从文本中提取相应的目标。比如第一个例子,我们希望从文本中提取时间、玩家、事件名称这三个实体,作为schema参数传递给Taskflow,然后使用“提示”模型准确提取这三个文本中的实体类型。这样,可以自由响应任何信息提取需求。2022年这波操作感觉还是有点梦幻。要知道,市面上的信息抽取工具大多只能针对特定领域做闭域(有限的预定义schema)抽取,效果还是难以保证,更不用说一个可以在三行代码中调用的开放域工具。.这不禁让人疑惑,这个开源工具是怎么做到的?从PaddleNLP内部了解到,有两个关键点:一个是发表于ACL2022的技术,是在信息抽取列表中有很多子任务的大型统一信息抽取,另一个是UIE的第一个知识增强型语言模型——ERNIE3.0。关于第一点,本文下一章将着重讲解,这里留作悬念。关于第二点,我们知道知识对于信息抽取任务至关重要,而ERNIE3.0不仅拥有大量的参数,还吸收了数千万实体的知识图谱,可以说是最“知识渊博”的SO??TA在中国NLP基地。在ERNIE3.0的基础上,如果我们构建一个用于开放域信息抽取的两阶段SOTA预训练上层结构呢?强大的组合是这款工具带来梦幻般体验的密码。需要说明的是,PaddleNLP集成了这个具有强大知识储备的NLP库和奇葩的信息抽取架构,但PaddleNLP不仅仅是一个SOTA存储盒,它还提供了一个非常好用的模型压缩部署方案,大模型加速技术和行业场景应用实例在易用性和性能方面进行了扎实的优化。一句话概括,打造中国NLP应用的神器。值得注意的是,UIE不仅拥有惊人的零样本开放域信息抽取能力,还拥有强大的小样本定制训练能力。作者测试了小样本定制训练在互联网、医疗、金融行业关系和事件抽取任务上的效果:在金融场景下,只增加了5个训练样本,uie-base模型的F1值提高了25分。换句话说,即使该工具在某些情况或场景下表现不佳,手动标记一些样本并将其丢入模型中也会大大提高性能。这种强大的Few-Shot能力是该工具落地大量长尾场景的最后一公里保障。探索这个工具更多的潜力和惊喜,请进入传送门:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie然后就是第二点——一个大的统一信息提取很多子-任务结构信息抽取领域的任务很多,从大的任务类型上可以分为实体抽取、关系抽取、事件抽取、评价维度抽取、观点词抽取、情感抽取等。类型下的域和模式定义的抽取更是层出不穷。因此,过去信息抽取的实施难度很大,成本也很高。公司不仅要为每个细分的任务类型和领域做数据标注、模型开发、人员维护,而且部署起来非常费力,机器资源消耗也很大。此外,每个子任务也没有完全分开。传统的特定于子任务的设计使得任务之间难以共享共同知识。每个“信息孤岛”的力量总是有限的,甚至是有偏见的。但现在不是了。UIE是中科院软件所与百度联合提出的一种开放域信息抽取技术,将多项任务统一起来,作为SOTA技术发表在ACL2022上。将Schema信息转化为“基于模式的提示”(Schema-basedPrompt)作为模型输入的前缀,使得模型理论上可以适配不同领域和任务的Schema信息,提取出所指向的结果按需提取线索词,从而实现开放领域的上下文通用信息抽取。比如上图中,如果我们想从一段文本中提取“人名”和“工作于”实体之间的关系,我们可以构造[spot]人[asso]workfor和的前缀连接待提取的目标文本[text],整体进入UIE。那么这里关键的UIE模型是怎么训练出来的呢?基于预训练模型MLMloss,UIE作者巧妙构造了两个tasks/loss:samplespotsandassotoconstructschemanegativeexamples,拼接schema负例和原始schema(正例)得到meta-schema,最后拼接文本预测结构。作者表示,这样可以防止模型在预训练阶段暴力记忆三元组,获得通用的文本结构映射能力。结构生成预训练$L_{record}$:该任务是训练解码器的结构输出能力,输出结构SEL作为解码器的优化目标,学习严格的SEL规则。通过两个loss的联合预训练,得到一个强大的UIE模型。值得注意的是,虽然原论文以T5模型为骨干,但它是基于生成架构的。实际上,为了最大限度地发挥模型在中文任务上的潜力,让模型的推理效率可以接受(毕竟生成任务还是太重),在本文第一章提到的PaddleNLP信息抽取方案中文章,强大的ERNIE3.0模型+提取(阅读理解)架构。因此在中文任务上效果更好,推理速度更快。有兴趣了解更多细节的可以阅读原论文或扫描文末海报预约UIE直播讲解~论文链接:https://arxiv.org/pdf/2203.12277.pdf最后,第一点——不小心,13SOTAUIE在各种IE任务的数据集上表现如何?首先是常规设置下4类抽取任务、13个经典测试集和SOTA的对比:表格右数第二列是没有UIE预训练的结果(基于T5+SEL直接微调),右起第一列是UIE预训练后fine-tuning的结果。可以看出,SEL+强大的生成模型在信息抽取的统一建模方面取得了很强的效果,并且经过UIE预训练后模型性能进一步提升。我们知道,微调模型实际上会弱化不同预训练策略带来的模型差异。因此,UIE预训练的价值在小样本上得到了更鲜明的体现:UIE预训练后,模型的小样本学习能力得到了极大的提升,这意味着UIE工具具有很强的定制能力,进而实现中长尾产业落地的关键。