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

news2024/11/30 1:00:05

信息抽取大总结

    • 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.coloradmin.cn/o/2250107.html

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

相关文章

【JavaEE初阶 — 网络编程】TCP流套接字编程

TCP流套接字编程 1. TCP &#xff06; UDP 的区别 TCP 的核心特点是面向字节流&#xff0c;读写数据的基本单位是字节 byte 2 API介绍 2.1 ServerSocket 定义 ServerSocket 是创建 TCP 服务端 Socket 的API。 构造方法 方法签名 方法说明 ServerS…

记录一次 k8s 节点内存不足的排查过程

背景&#xff1a;前端服务一直报404&#xff0c;查看k8s日志&#xff0c;没发现报错&#xff0c;但是发现pods多次重启。 排查过程&#xff1a; 查看pods日志&#xff0c;发现日志进不去。 kubectrl logs -f -n weave pod-name --tail 100查看pod describe kubectl describ…

Java文件遍历那些事

文章目录 一、简要概述二、文件遍历几种实现1. java实现2. Apache common-io3. Spring 三、最终结论 一、简要概述 文件遍历基本上是每个编程语言具备的基本功能&#xff0c;Java语言也不例外。下面我们以java原生实现&#xff0c;Apache common-io、spring框架实现为例来比较…

硬件基础22 反馈放大电路

目录 一、反馈的基本概念与分类 1、什么是反馈 2、直流反馈与交流反馈 3、正反馈与负反馈 4、串联反馈与并联反馈 5、电压反馈与电流反馈 二、负反馈四种组态 1、电压串联负反馈放大电路 2、电压并联负反馈放大电路 3、电流串联负反馈放大电路 4、电流并联负反馈放大…

【JS】React与Vue的异步编程对比:深度解析与实战案例全面指南

文章目录 前言更多实用工具React与Vue概述ReactVue 异步编程基础回调函数PromiseAsync/Await React中的异步编程使用Axios进行数据请求异步操作与组件生命周期React Hooks中的异步处理 Vue中的异步编程使用Axios进行数据请求异步操作与Vue生命周期Vue Composition API中的异步处…

【iOS】知乎日报总结

文章目录 前言首页网络请求轮播图上滑加载图片请求 文章详情页WKWebView的使用点赞、收藏持久化——FMDB的使用 其他问题沙盒问题单元格点击其他 总结 前言 在系统学习了OC语言和UI控件后&#xff0c;知乎日报是第一个比较大的项目&#xff0c;耗时一个多月时间&#xff0c;里面…

算法竞赛(Python)-链表

文章目录 一 链表简介1.1链表定义1.2 双向链表1.3 循环链表 二、链表的基本操作2.1 链表的结构定义2.2 建立一个线性链表2.3 求线性链表的长度2.4 查找元素2.5 插入元素2.5.1 链表头部插入元素2.5.2 链表尾部插入元素2.5.3 链表中间插入元素 2.6 改变元素2.7 删除元素2.7.1 链表…

Unity ShaderLab 实现网格爆炸

实现思路&#xff1a; 沿着3D物体每个面的法线&#xff0c;将面偏移一定的位置。 Shader Graph实现如下&#xff1a; Shader Lab 实现如下&#xff1a; Shader "Unlit/MeshExplode" {Properties{_MainTex ("Texture", 2D) "white" {}_Distan…

快速上手:如何开发一个实用的 Edge 插件

在日常浏览网页时&#xff0c;背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片&#xff0c;并希望背景图片设置能够持久保存&#xff0c;本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…

【Maven】功能和核心概念

1. 什么是Maven 1.1 Maven的概念 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具&#xff0c;专注服务于 Java 平台的项目构建和依赖管理。 1.2 为什么要使用Maven&#xff1f; 在项目开发中&#xff0c;我们需要引用各种 jar 包&#xff0c;引用的 jar 包可能有…

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

视频汇聚平台Liveweb国标GB28181视频平台监控中心设计

在现代安防视频监控领域&#xff0c;Liveweb视频汇聚平台以其卓越的兼容性和灵活的拓展能力&#xff0c;为用户提供了一套全面的解决方案。该平台不仅能够实现视频的远程监控、录像、存储与回放等基础功能&#xff0c;还涵盖了视频转码、视频快照、告警、云台控制、语音对讲以及…

hubu新星杯实践能力赛模拟赛web/Misc-wp

ez_eval <?php highlight_file(__FILE__); error_reporting(0);$hubu $_GET[hubu];eval($hubu);?> 先进行代码审计&#xff0c;GET传参hubu&#xff0c;并执行命令&#xff0c;没有任何绕过&#xff0c;放开手脚去做 payload: ?hubusystem(cat /f*); #直接rcerc…

【前端】跨域问题与缓存

报错如下&#xff1a; 原因&#xff1a; 浏览器 缓存跨域&#xff0c;顾名思义是由于浏览器的缓存机制导致的一种跨域情况。这种跨域一般会出现在浏览器通过一些无视跨域的标签和css(如img、background-image)缓存了一些图片资源之后&#xff0c;当再次发起图片请求时&#xff…

抓包之OSI七层模型以及TCPIP四层模型

写在前面 本文看下OSI七层模型以及TCP/IP四层网络模型&#xff0c;并尝试使用wireshark进行验证。 1&#xff1a;OSI七层网络模型和TCP/IP四层模型 全称&#xff1a;open system interconnection。 需要注意OSI七层模型最终是没有落地的&#xff0c;最终落地的是与之类似的…

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

MTK 展锐 高通 sensorhub架构

一、MTK平台 MTK框架可以分为两部分&#xff0c;AP和SCP。 AP是主芯片&#xff0c;SCP是协处理器&#xff0c;他们一起工作来处理sensor数据。 SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器&#xff0c;MTK SCP选择freeRTOS作为操作系统&#xff0c…

视觉语言模型(VLM)学习笔记

目录 应用场景举例 VLM 的总体架构包括&#xff1a; 深度解析&#xff1a;图像编码器的实现 图像编码器&#xff1a;视觉 Transformer 注意力机制 视觉-语言投影器 综合实现 训练及注意事项 总结 应用场景举例 基于文本的图像生成或编辑&#xff1a;你输入 “生成一张…

[AutoSar]BSW_Diagnostic_007 BootLoader 跳转及APP OR boot response 实现

目录 关键词平台说明背景一、Process Jump to Bootloader二、相关函数和配置2.1 Dcm_GetProgConditions()2.2 Dcm_SetProgConditions() 三、如何实现在APP 还是BOOT 中对10 02服务响应3.1 配置3.2 code 四、报文五、小结 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、diagno…

如何启用本机GPU硬件加速猿大师播放器网页同时播放多路RTSP H.265 1080P高清摄像头RTSP视频流?

目前市面上主流播放RTSP视频流的方式是用服务器转码方案&#xff0c;这种方案的好处是兼容性更强&#xff0c;可以用于不同的平台&#xff0c;比如&#xff1a;Windows、Linux或者手机端&#xff0c;但是缺点也很明显&#xff1a;延迟高、播放高清或者同时播放多路视频视频容易…