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.rhkb.cn/news/480553.html

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

相关文章

【Linux】网络连接模式,VM:桥接、NAT、仅主机如何选择?

1、网络类型 虚拟机建立时的常见网络类型有3种&#xff1a;桥接、NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;、仅主机&#xff08;Host Only&#xff09; 桥接&#xff1a;VM直接连接路由器&#xff0c;与物理机地位相同&#xff1b;N…

Spring Boot 3启动加载器详解(含源码解析)

一、引言 Spring Boot 3启动加载器是提升开发效率和应用程序启动速度的关键组件。本文将详细介绍Spring Boot 3的启动加载器&#xff0c;包括其实现方式、应用场景及工作原理等。 说明&#xff1a;本文分析使用的Spring Boot源码版本为3.3.5 二、启动加载器简介 启动加载器…

UDP客户端服务器通信

在这篇博客中&#xff0c;我们将探索 UDP&#xff08;用户数据报协议&#xff09; 通信&#xff0c;简要地说&#xff0c;UDP 是一种无连接、快速但不可靠的通信协议&#xff0c;适用于需要快速数据传输但对丢包容忍的场景&#xff0c;比如视频流和在线游戏。就像《我是如此相信…

手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案

手机实时提取SIM卡打电话的信令声音 --智能拨号器app的双SIM卡切换方案 一、前言 在蓝牙电话的方案中&#xff0c;由于采用市场上的存量手机来做为通讯呼叫的载体&#xff0c;而现在市面上大部分的手机都是“双卡双待单通”手机&#xff0c;简称双卡双待手机。即在手机开机后…

Spring Boot 同时接受文件和实体及 Postman 测试实战

Spring Boot 文件上传及 Postman 测试指南 在本文中&#xff0c;我们将介绍如何使用 Spring Boot 上传文件并通过 Postman 测试接口。我们会基于以下接口作为示例&#xff1a; Boolean importDevicePushConfig(RequestParam("file") MultipartFile file,DevicePush…

Paddle Inference部署推理(一)

一&#xff1a;Paddle Inference推理 简介 Paddle Inference 是飞桨的原生推理库&#xff0c;提供服务器端的高性能推理能力。由于 Paddle Inference 能力直接基于飞桨的训练算子&#xff0c;因此它支持飞桨训练出的所有模型的推理。 Paddle Inference 功能特性丰富&#xff…

搭建文件服务器并使用Qt实现文件上传和下载(带账号和密码)

文章目录 0 背景1 搭建文件服务器2 代码实现文件上传和下载2.1 在pro文件中添加网络支持2.2 创建网络管理类2.3 文件上传2.4 文件下载 3 扩展&#xff08;其他方法实现文件上传和下载&#xff09;3.1 python3.2 npm3.3 ftp服务器 4 完整的代码 0 背景 因为需要使程序具备在远程…

社交新零售模式下“2+1 链动模式 S2B2C 商城小程序”的创新实践与发展策略

摘要&#xff1a;随着实体商业与社交网络深度融合&#xff0c;社交新零售蓬勃兴起&#xff0c;“21 链动模式 S2B2C 商城小程序”作为其中创新典范&#xff0c;融合独特激励机制与数字化运营优势&#xff0c;重塑零售生态。本文剖析该模式架构、运作逻辑&#xff0c;探讨其在私…

【Git】Git 完全指南:从入门到精通

Git 完全指南&#xff1a;从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一&#xff0c;它帮助开发者高效地管理项目&#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发&#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更&#xff0c;并保障…

华为E9000刀箱(HWE9000V2)服务器硬件监控指标解读

随着数据中心规模的不断扩大&#xff0c;服务器的稳定性和可靠性变得尤为重要。华为E9000刀箱&#xff08;HWE9000V2&#xff09;作为一款高性能的服务器设备&#xff0c;其硬件状态的实时监控对于保障业务的连续性和系统的稳定运行至关重要。 监控易作为一款专业的IT基础设施监…

Css—实现3D导航栏

一、背景 最近在其他的网页中看到了一个很有趣的3d效果&#xff0c;这个效果就是使用css3中的3D转换实现的&#xff0c;所以今天的内容就是3D的导航栏效果。那么话不多说&#xff0c;直接开始主要内容的讲解。 二、效果展示 三、思路解析 1、首先我们需要将这个导航使用一个大…

gitee:删除仓库

1、点击主页面设置 2、找到左侧导航栏-数据管理->仓库空间信息&#xff1b;找到需要删除的仓库->点击设置 3、点击左侧仓库设置->点击右侧删除仓库 4、输入提示内容->确认删除 5、输入密码验证 6、成功删除提示

探索 Python 任务自动化的新境界:Invoke 库揭秘

文章目录 探索 Python 任务自动化的新境界&#xff1a;Invoke 库揭秘背景&#xff1a;为何选择 Invoke&#xff1f;什么是 Invoke&#xff1f;如何安装 Invoke&#xff1f;5个简单的库函数使用方法1. 定义任务2. 带参数的任务3. 运行 Shell 命令4. 任务参数化5. 列出任务 场景应…

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…

六通道串口服务器

型号&#xff1a;SG-TCP232-620 1.1 功能 1.1.1 基本功能 串口服务器是串口 RS232/422/485 和以太网之间的一个转换器&#xff0c;实现串口数 据和以太网数据的双向透明传输&#xff0c;可以让串口设备立即联网&#xff0c;典型应用拓扑如下&#xff1a; 1.1.2 特色功能…

Ubuntu 18.04 中安装 RDKit(针对 Python 2.7)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

websocket前后端长连接之java部分

一共有4个类,第一个WebSocketConfig 配置类 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Autowiredprivate WebSocketHandler webSocketHandler;Autowiredprivate WebSocketInterceptor webSocketInterceptor;Overridepubli…

PyCharm中Python项目打包并运行到服务器的简明指南

目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式&#xff08;使用setup.py&#xff09; 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…

【UE5 C++课程系列笔记】05——组件和碰撞

效果 可以看到我们可以实现的功能是 &#xff08;1&#xff09;可以通过鼠标旋转视角 &#xff08;2&#xff09;通过使用Pawn移动组件来控制Pawn移动 &#xff08;3&#xff09;Pawn碰到物体会被阻挡然后逐渐滑动 &#xff08;4&#xff09;通过空格切换激活/关闭粒子效果…

格网法计算平面点云面积(matlab版本)

1、原理介绍 格网法计算平面点云面积&#xff0c;其思想类似高中油膜法计算面积。其将点云投影到水平面&#xff0c;再将点云划分成尺寸相同的格网。最后&#xff0c;统计格网内包含点的数量number&#xff0c;那么可利用如下公式计算得到点云的面积&#xff1a; Aeranumber*L…