NLP信息抽取大总结:三大任务(带Prompt模板)

信息抽取大总结

    • 1.NLP的信息抽取的本质?
    • 2.信息抽取三大任务?
    • 3.开放域VS限定域
    • 4.信息抽取三大范式?
      • 范式一:基于自定义规则抽取(2018年前)
      • 范式二:基于Bert+下游任务建模抽取(2018年后)
      • 范式三:基于大模型+Promt抽取(2022年后)
    • 附1:Prompt信息抽取模板
      • (1)实体抽取
      • (2)关系抽取
      • (3)事件抽取
      • (4)三元组抽取
    • 附2:中文大模型抽取哪家强?
    • 附3:专用于信息抽取的模型

2024.11.27

I hear and I forget; I see and I know; I do and I understand

1.NLP的信息抽取的本质?

针对NLP领域的信息抽取,即是从原始文本数据中自动提取出结构化的信息,本质相当于是对原始数据进行了一次信息加工,把我们不关注的信息进行了剔除或把我们关注的信息进行提炼。

抽取后的信息就相当于一篇论文的摘要和关键词。

2.信息抽取三大任务?

信息抽取是一个较大的范畴,可以细分为很多任务,但我们通常关注以下三类:

请添加图片描述

  • 实体抽取

    实体抽取的总结可以查看我的另外一篇文章:

    https://blog.csdn.net/xiangxiang613/article/details/143922862

  • 关系抽取

    待总结

  • 事件抽取

    待总结

    这些任务在建模时可以独立建模(每种任务一个模型)或者统一建模(一个模型能同时处理多种任务,如上图的UIE)。

3.开放域VS限定域

  • 开放域信息抽取,就是不限定实体和关系的类型,给定文本,抽取其包含的所有SPO三元组〈主,谓,宾〉,或者叫RDF三元组,这个通常就弱化了schema的设计(不需要设计);在大模型构建知识图谱时代,这个是趋势。
  • 限定域信息抽取,就是限定抽取的实体和关系类型(此时可以画出清晰的schema),此时适合清晰的业务场景,具备推理价值。

4.信息抽取三大范式?

下面更侧重与实体抽取和关系抽取任务的处理,因为在知识抽取过程中更关注这两类。

范式一:基于自定义规则抽取(2018年前)

典型的,使用自定义词典+分词工具+词性标注完成实体抽取;基于依存句法分析+自定义关系创建规则完成关系抽取。这是在深度学习时代前常用的方法,优点是简单好理解,上手快,不需要标注数据和训练模型,只需要写规则;但规则的最大缺点就是不灵活,覆盖率低。

范式二:基于Bert+下游任务建模抽取(2018年后)

请添加图片描述

Bert的诞生重塑了NLP的任务构建范式,几乎所有的NLP任务都被转换为BERT的下游任务进行微调。在信息抽取领域,此时需要完成一定量的下游任务样本数据集标注(通常还伴随着标注规范的指定),针对一份数据集,会同时标注实体和实体间的关系。

一个样本标注完的数据,大概包含下面这些信息:

(人工标注的过程其实就是人在做信息抽取的过程)

{"sentences": ["维护V3^对蓄电池进行充电处理^由于蓄电池电量不足^无法启动↓↓充电处理*蓄电池↓蓄电池*电量不足↓[整车]无法启动"],"ner": [[[6, 8, "PART"], [11, 14, "METHOD"], [18, 20, "PART"], [21, 24, "STATUE"], [26, 29, "STATUE"], [32, 39, "SOLUTION"], [41, 48, "TROUBLE"], [50, 57, "TROUBLE"]]],"relations": [[]],"doc_key": "RID_2014010129978096","predicted_ner": [[[6, 8, "PART"], [11, 14, "METHOD"], [18, 20, "PART"], [21, 24, "STATUE"], [26, 29, "STATUE"], [32, 39, "SOLUTION"], [41, 48, "TROUBLE"], [50, 57, "TROUBLE"]]],"predicted_relations": [[]],"sections": [[[0, 3], [5, 14], [16, 24], [26, 29]]],"dtc": [[]],"part_no": [["00-000"]],"part_name": [["无零件"]],"relations_inside": [[[11, 14, 6, 8, "METH"], [18, 20, 21, 24, "TROU"]]],"combined_ner_to_rel": [{"充电处理*蓄电池": 0, "蓄电池*电量不足": 1}]
}

基于标注完成的数据,可以分别训练实体抽取模型和关系抽取模型(pipeline方式),也可以同时训练实体-关系抽取模型(joint方式),此处不展开,后面再关系抽取总结的文章中再谈。

无论是那种方式,都会采用bert来作为底层的文本编码器,实现文本向量生成,区别在于bert向量生成后的下游任务建模方式不同

在Bert时代,信息抽取任务通常是被当成一个序列标注型任务进行处理的,答案是存在于文本之中的。

即使在大模型时代,基于bert类的抽取方法也是性能最好的。在2024年了,都还有这方面的模型出现。如GliNER(基于DeBERTA v3 large)star1.5K,可以一看:

https://www.zhihu.com/people/luo-xie-yang-guang【GliNER 多任务: 适用于各种信息提取任务的通用轻量级模型

补充:bert这么好,为什么大家要用大模型,因为要用bert一方面是要标注数据进行微调,另一方面是微调后的模型通常只能识别限定域的实体类型和关系类型(训练什么就识别什么),这个特点导致使用bert模型的成本很高,而大模型则是属于开放域信息抽取,不限制实体和关系的类型(更具应用场景可以限定)。

范式三:基于大模型+Promt抽取(2022年后)

请添加图片描述

这里的大模型准确来说是指生成式大模型,此时将信息抽取任务转换为文本生成任务进行处理。

在大模型时代下,信息抽取任务只需要编写一个少样本学习的Promt即可完成抽取,见后文。少样本学习(few-short)是指在Prompt中添加几个任务的示例样本,包含输入和输出。在信息抽取领域,这种方式明细优于零样本学习(zero-short)。可以参考:https://zhuanlan.zhihu.com/p/702821255

尽管大模型在各种NLP任务上取得了SOTA性能,但其在NER上的性能仍然明显低于监督基线。这是由于NER和llm两个任务之间的差距:前者本质上是一个序列标记任务,而后者是一个文本生成模型。

完整的大模型用于信息抽取综述性文章可以参考:《Large Language Models for Generative Information Extraction: A Survey》https://arxiv.org/pdf/2312.17617.pdf

请添加图片描述

附1:Prompt信息抽取模板

收集的一些Prompt模板如下,英文模板需要翻译为中文模板进行使用,陆续更新:

(1)实体抽取

  • 模板1:来自oneKE
{"task": "NER","source": "NER","instruction": {"instruction": "你是专门进行实体抽取的专家。请从input中抽取出符合schema定义的实体,不存在的实体类型返回空列表。请按照JSON字符串的格式回答。","schema": ["人物", "地理位置", "组织机构"],"input": "在这里恕弟不恭之罪,敢在尊前一诤:前人论书,每曰“字字有来历,笔笔有出处”,细读公字,何尝跳出前人藩篱,自隶变而后,直至明季,兄有何新出?"},"output": {"人物": [],"地理位置": [],"组织机构": []}
}
  • 模板2:来自YAYI-UIE
{"Task": "NER","Dataset": "WikiNeural","instruction": "Text: In the Tour of Flanders , he took on a defensive role when his teammate Stijn Devolder escaped and won . \n【Named Entity Recognition】From the given text, extract all the entities and types. Please format the answer in json {location/person/organization:[entities]}. \nAnswer:","input": "","label": {"person": ["Stijn Devolder"]}
}
  • 模板3:来自Assessing the Performance of Chinese Open Source Large Language Models in Information Extraction Tasks[https://arxiv.org/abs/2406.02079]

    包含普通的和二阶段,且NER两阶段性能大幅度优于普通

    请添加图片描述

(2)关系抽取

  • 模板1:来自oneKE
{"task": "RE","source": "RE","instruction": {"instruction": "你是专门进行关系抽取的专家。请从input中抽取出符合schema定义的关系三元组,不存在的关系返回空列表。请按照JSON字符串的格式回答。","schema": ["丈夫", "上映时间", "专业代码", "主持人"],"input": "如何演好自己的角色,请读《演员自我修养》《喜剧之王》周星驰崛起于穷困潦倒之中的独门秘笈"},"output": {"丈夫": [],"上映时间": [],"专业代码": [],"主持人": []}
}
  • 模板2:来自Assessing the Performance of Chinese Open Source Large Language Models in Information Extraction Tasks[https://arxiv.org/abs/2406.02079]

​ 包含普通的和QA4RE

请添加图片描述

(3)事件抽取

  • 模板1:来自oneKE
{"task": "EE","source": "PHEE","instruction": {"instruction": "You are an expert in event extraction. Please extract events from the input that conform to the schema definition. Return an empty list for events that do not exist, and return NAN for arguments that do not exist. If an argument has multiple values, please return a list. Respond in the format of a JSON string.","schema": [{"event_type": "potential therapeutic event","trigger": true,"arguments": ["Treatment.Time_elapsed","Treatment.Route","Treatment.Freq","Treatment","Subject.Race","Treatment.Disorder","Effect","Subject.Age","Combination.Drug","Treatment.Duration","Subject.Population","Subject.Disorder","Treatment.Dosage","Treatment.Drug"]},{"event_type": "adverse event","trigger": true,"arguments": ["Subject.Population","Subject.Age","Effect","Treatment.Drug","Treatment.Dosage","Treatment.Freq","Subject.Gender","Treatment.Disorder","Subject","Treatment","Treatment.Time_elapsed","Treatment.Duration","Subject.Disorder","Subject.Race","Combination.Drug"]}],"input": "Our findings reveal that even in patients without a history of seizures, pregabalin can cause a cortical negative myoclonus."},"output": {"potential therapeutic event": [],"adverse event": [{"trigger": "cause","arguments": {"Subject.Population": "NAN","Subject.Age": "NAN","Effect": "cortical negative myoclonus","Treatment.Drug": "pregabalin","Treatment.Dosage": "NAN","Treatment.Freq": "NAN","Subject.Gender": "NAN","Treatment.Disorder": "NAN","Subject": "patients without a history of seizures","Treatment": "pregabalin","Treatment.Time_elapsed": "NAN","Treatment.Duration": "NAN","Subject.Disorder": "NAN","Subject.Race": "NAN","Combination.Drug": "NAN"}}]}
}
  • 模板2:来自Assessing the Performance of Chinese Open Source Large Language Models in Information Extraction Tasks[https://arxiv.org/abs/2406.02079]

(4)三元组抽取

  • 模板1:来自YAYI-UIE
{"Task": "CRE","Dataset": "SanWen_sample50000","instruction": "文本: 我与其他云南同学对视骇笑 \n【关系抽取】已知关系列表是['unknown', '造出', '使用', '临近', '社会关系', '位于', '拥有者', '隶属于', '亲属', '包含']\n根据关系列表抽取关系三元组,在这个句子中可能包含哪些关系三元组?请按照json[{'relation':'', 'head':'', 'tail':''}, ]的格式回答。\n答案:","input": "","label": [{"relation": "社会关系","head": "我","tail": "其他云南同学"}]
}
  • 模板2:来自textgraphs
prompt= """句子: {}        从句子中提取 RDF 三元组,格式如下:        主语:<主语>        谓词:<谓词>        宾语:<宾语,可选>            """    
text= """维尔纳·赫尔佐格是一位德国电影导演、编剧、作家、演员和歌剧导演,被认为是新德国电影的先驱。"""

附2:中文大模型抽取哪家强?

参考1:【哪个中文开源大模型在信息抽取上效果最好?】

结论:

  • 实体抽取(零样本):qwen-14B >> Baichuan2-13B > qwen-7B > ChatGLM3-6B
    请添加图片描述

    注意:各模型少样本的性能会普遍强于零样本;

  • 关系抽取(无限制):qwen-14B > qwen-7B > ChatGLM3-6B>Baichuan2-13B

请添加图片描述

  • 事件抽取:Baichuan2-13B > qwen-14B >>qwen-7B > ChatGLM3-6B

    请添加图片描述

整体来看,Qwen系列确实很强,特别是现在还升级到了2.5系列,在实际使用过程中,体验也不错,可以作为一个不错的基准大模型用于中文领域的信息抽取。

附3:专用于信息抽取的模型

印象中有这几个:

  • UIE:2022,开启基于promt的多任务统一建模方式;

  • InstructUIE:基于指令微调后的UIE?

  • oneKE:https://github.com/zjunlp/DeepKE/tree/main/example/llm/InstructKGC/data

  • UniLM:https://github.com/microsoft/unilm,微软出品,20+Kstar

  • UniIE:https://github.com/AAIG-NLP/UniIE

  • GliNER:https://github.com/urchade/GLiNER,2024新提出。1.5Kstar

  • openNRE:清华出品,基于CNN用于关系抽取?
    待更新…

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机中的核心SOC是什么?

大家好&#xff0c;我是山羊君Goat。 常常听说CPU&#xff0c;中央处理器等等的&#xff0c;它是一个电脑或单片机系统的核心&#xff0c;但是对于SOC可能相比于CPU了解的人没有那么广泛。 所以SOC是什么&#xff1f; SOC全称是System on Chip&#xff0c;就是片上系统&#…

网络--socket编程--基础

1、网络字节序 已知:内存中的很多数据都有大小端之分,在网络这,网络数据流也是有大小端之分的。 TCP/IP协议规定:网络数据流采用大端字节序(即低地址处放高位字节)。 因此,小端机器发送网络数据流之前,必须转为大端(一般的机器会自动转换): 在网络-本地字节序转换…

Transformers在计算机视觉领域中的应用【第1篇:ViT——Transformer杀入CV界之开山之作】

目录 1 模型结构2 模型的前向过程3 思考4 结论 论文&#xff1a; AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 代码&#xff1a;https://github.com/google-research/vision_transformer Huggingface&#xff1a;https://github.com/huggingf…

<数据集>路面坑洼识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;665张 标注数量(xml文件个数)&#xff1a;665 标注数量(txt文件个数)&#xff1a;665 标注类别数&#xff1a;1 标注类别名称&#xff1a;[pothole] 序号类别名称图片数框数1pothole6651740 使用标注工具&#x…

PySide6 QSS(Qt Style Sheets) Reference: PySide6 QSS参考指南

Qt官网参考资料&#xff1a; QSS介绍&#xff1a; Styling the Widgets Application - Qt for Pythonhttps://doc.qt.io/qtforpython-6/tutorials/basictutorial/widgetstyling.html#tutorial-widgetstyling QSS 参考手册&#xff1a; Qt Style Sheets Reference | Qt Widge…

07.ES11 08.ES12

7.1、Promise.allSettled 调用 allsettled 方法&#xff0c;返回的结果始终是成功的&#xff0c;返回的是promise结果值 <script>//声明两个promise对象const p1 new Promise((resolve, reject) > {setTimeout(() > {resolve("商品数据 - 1");}, 1000)…

qt QGraphicsRotation详解

1、概述 QGraphicsRotation 是 Qt 框架中 QGraphicsTransform 的一个子类&#xff0c;它专门用于处理图形项的旋转变换。通过 QGraphicsRotation&#xff0c;你可以对 QGraphicsItem&#xff08;如形状、图片等&#xff09;进行旋转操作&#xff0c;从而创建动态和吸引人的视觉…

Unity Plane API解释

构造函数解释&#xff0c;d的解释为&#xff1a;距离是沿着平面法线从平面到原点的距离。注意&#xff0c;这意味着为正值的distance值将导致平面朝向原点。负的距离值会导致平面朝向远离原点。 试验&#xff1a; GetSide方法检测点是否位于平面的正向侧&#xff0c;结果显示…

通讯专题4.1——CAN通信之计算机网络与现场总线

从通讯专题4开始&#xff0c;来学习CAN总线的内容。 为了更好的学习CAN&#xff0c;先从计算机网络与现场总线开始了解。 1 计算机网络体系的结构 在我们生活当中&#xff0c;有许多的网络&#xff0c;如交通网&#xff08;铁路、公路等&#xff09;、通信网&#xff08;电信、…

深度学习模型:LSTM (Long Short-Term Memory) - 长短时记忆网络详解

一、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;在处理序列数据方面具有独特的优势&#xff0c;例如语音识别、自然语言处理等任务。然而&#xff0c;传统的 RNN 在处理长序列数据时面临着严重的梯度消失问题&#xff0c;这使得网络难以学习到长…

算法笔记:力扣24. 两两交换链表中的节点

思路&#xff1a; 本题最简单的就是通过递归的形式去实现 class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode next head.next;head.next swapPairs(next.next);next.next head;return next;} } 对于链…

ehr系统建设方案,人力资源功能模块主要分为哪些,hrm平台实际案例源码,springboot人力资源系统,vue,JAVA语言hr系统(源码)

eHR人力资源管理系统&#xff1a;功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化&#xff0c;传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具&#xff0c;能够为企业提供高效、准确、实时的人力资源管理。…

【Android】从事件分发开始:原理解析如何解决滑动冲突

【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突 文章目录 【Android】从事件分发开始&#xff1a;原理解析如何解决滑动冲突Activity层级结构浅析Activity的setContentView源码浅析AppCompatActivity的setContentView源码 触控三分显纷争&#xff0c;滑动冲突…

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。 前提条件 在开始之前,请确保您已安装以下内容: Qt(版本 5.15 )OGRE(版本14.2.5)…

GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记

1 Overall GAGAvatar&#xff08;Generalizable and Animatable Gaussian Avatar&#xff09;&#xff0c;一种面向单张图片驱动的可动画化头部头像重建的方法&#xff0c;解决了现有方法在渲染效率和泛化能力上的局限。 旋转参数 现有方法的局限性&#xff1a; 基于NeRF的方…

论文笔记-WWW2024-ClickPrompt

论文笔记-WWW2024-ClickPrompt: CTR Models are Strong Prompt Generators for Adapting Language Models to CTR Prediction ClickPrompt: CTR模型是大模型适配CTR预测任务的强大提示生成器摘要1.引言2.预备知识2.1传统CTR预测2.2基于PLM的CTR预测 3.方法3.1概述3.2模态转换3.…

预训练模型与ChatGPT:自然语言处理的革新与前景

目录 一、ChatGPT整体背景认知 &#xff08;一&#xff09;ChatGPT引起关注的原因 &#xff08;二&#xff09;与其他公司的竞争情况 二、NLP学习范式的发展 &#xff08;一&#xff09;规则和机器学习时期 &#xff08;二&#xff09;基于神经网络的监督学习时期 &…

GRAG: Graph Retrieval-Augmented Generation

GRAG: Graph Retrieval-Augmented Generation 摘要 简单检索增强生成 (Naive RAG) 聚焦于单一文档的检索&#xff0c;因此在处理网络化文档时表现不足&#xff0c;例如引用图、社交媒体和知识图谱等应用中非常常见的场景。为了解决这一限制&#xff0c;我们提出了图检索增强生…

使用Python OpenCV实现图像形状检测

目录 一、环境准备 二、读取和预处理图像 读取图像 灰度化 滤波去噪 三、边缘检测 四、查找轮廓 五、绘制轮廓 六、形状分类 七、显示结果 八、完整代码示例 九、总结 图像形状检测是计算机视觉领域中的一项关键技术,广泛应用于工业自动化、机器人视觉、医学图像处…

11.25.2024刷华为OD

文章目录 HJ76 尼科彻斯定理&#xff08;观察题&#xff0c;不难&#xff09;HJ77 火车进站&#xff08;DFS&#xff09;HJ91 走格子方法&#xff0c;&#xff08;动态规划&#xff0c;递归&#xff0c;有代表性&#xff09;HJ93 数组分组&#xff08;递归&#xff09;语法知识…