【大模型 数据增强】IEPILE:基于模式的指令生成解法,提高大模型在信息抽取任务上的性能

IEPILE:基于模式的指令生成解法,提高大模型在信息抽取任务上的性能

    • 提出背景
    • 基于模式的指令生成解法
    • 效果

 


提出背景

论文:https://arxiv.org/pdf/2402.14710.pdf

代码:https://github.com/zjunlp/IEPile

2024年02月发布了一个大规模(0.32B tokens)高质量双语(中文和英文)信息抽取(IE)指令微调数据集,名为IEPile

并基于IEPile,对 Baichuan2-13B-Chat 和 LLaMA2-13B-Chat 模型应用了 Lora 技术进行了微调得到 baichuan2-13b-iepile-lora、llama2-13b-iepile-lora。

 

假设我们有一个信息抽取任务,目标是从新闻文章中抽取有关企业并购事件的信息。

包括抽取如下模式(或字段)的信息:并购方(Acquirer)、被并购方(Acquiree)、交易金额(Transaction Amount)和交易日期(Transaction Date)。

存在的问题

  1. 模式查询差异: 在训练阶段,可能所有模式都被查询,但在实际评估或应用中,只查询了部分模式,例如仅查询了并购方和被并购方,没有查询交易金额和日期。这可能会导致模型在真实场景下性能下降。

  2. 语义混淆: “并购方”和“被并购方”的字段可能在文本中以多种方式被提及,例如,一个企业可能被称为“公司”,“企业”,或者直接用其公司名。

    此外,一家公司在不同的并购事件中可能既是并购方也是被并购方,这增加了语义上的混淆和抽取的难度。

针对模式查询差异:

  • 解法: 引入动态模式查询调整机制,在训练阶段不仅使用包含所有模式的指令进行训练,还要模拟实际情况,使用只包含部分模式的指令进行额外的训练。

    这样可以使模型适应于在不完全信息环境下进行准确的信息抽取。

  • 应用举例: 在训练数据中,我们不仅提供完整的并购事件信息(包括并购方、被并购方、交易金额和交易日期),还要创建一些只包含部分信息(如仅并购方和被并购方)的训练实例。

    这样,模型学会在缺少某些字段信息的情况下也能进行有效的信息抽取。

针对语义混淆:

  • 解法: 构建一个术语同义词库,将企业可能的不同称呼统一映射到一个标准化的表示上。

    此外,引入上下文理解能力的训练,让模型能够根据上下文区分相同术语在不同场景下的角色(如并购方还是被并购方)。

    对于“公司”、“企业”或特定公司名的提及,都映射到同一实体上,并在模型训练时加入上下文辨识的能力,如通过前后文判断一个实体在特定新闻报道中是作为并购方还是被并购方。

    这样,模型能够更好地理解和抽取并购事件中的各个角色,即使在术语使用上存在多样性。

在这里插入图片描述
上图是 IEPILE(一个信息抽取指令数据集)构建的概览,流程分为几个部分:

  1. 数据收集与清理: 图表左侧列出了用于构建IEPILE的多个数据集,这些数据集被分为三类:命名实体识别(NER)、关系抽取(RE)和实体抽取(EE)。

    这些数据集从网络上收集,然后经过清理以准备用于进一步处理。

  2. 基于模式的指令生成(Hard Negative Schema Construction): 这一部分展示了如何构建“Hard Negative Schema Dictionary”。

    这是一个包含特定模式和相关负面模式(或“硬负面”模式,可能会造成混淆的模式)的词典。

    例如,模式 “location contains” 与其硬负面模式,如 “neighborhood of”, “administrative division of country” 等关联。

  3. 批量指令生成: 在右侧,展示了如何将正面和负面的模式结合起来,以生成一批指令。

    这些指令被分成多个模式(Schema),每个模式都包含一组特定的标签。例如,“Schema 1” 可能包含 “neighborhood of”, “location contains”, “administrative division of country”, “country capital” 这些标签。

    这个过程中考虑了一个名为 split_num 的变量,这个变量定义了在每批指令生成中会用到的模式数量。

    这有助于确保训练数据中的模式与评估或应用阶段中可能出现的模式数量一致。

这张图是对一个复杂数据处理过程的视觉概述,说明了如何从现有数据集中提取和清洗数据,构建模式字典,并基于这些模式生成训练数据,以便在信息抽取任务中训练机器学习模型。

 


基于模式的指令生成解法

针对信息抽取(IE)任务的改进解法可以被称为“基于模式的指令生成解法”,主要包括两个关键特征:硬负模式构建(Hard Negative Schema Construction)批量指令生成(Batched Instruction Generation)

这个解法旨在提高大型语言模型在信息抽取任务中的性能,尤其是在面对模式数量不一致和模式间的语义混淆时。

  1. 硬负模式构建(特征1):

    • 目标是减少模型在信息抽取任务中的语义混淆。
    • 方法是创建一个字典,其中包含每个正面模式和一系列与其语义上接近的负面模式。
    • 这允许模型学习更准确地区分那些在语义上可能引起混淆的模式。
  2. 批量指令生成(特征2):

    • 目标是处理训练与评估时查询模式数量不一致的问题。
    • 方法是动态限制每个指令中查询的模式数量,并将这些模式分批查询。
    • 这样即使在评估阶段查询的模式数量与训练不同时,也能保持模型的泛化能力。

硬负模式构建的例子(特征1):

假设我们正在开发一个模型,其任务是从新闻文章中抽取与企业并购相关的事件。其中一个正面模式可能是“公司A收购公司B”。

  • 目标: 减少模型在抽取并购事件时的语义混淆。
  • 方法: 我们创建一个硬负模式字典,其中“合作”或“伙伴关系”等术语可能与“收购”相混淆,但实际上并不表示并购事件。
  • 应用: 当模型在训练中遇到“公司A与公司B建立合作关系”这样的句子时,由于“合作”被标识为硬负模式,模型将学会这并不是一个并购事件,进而在实际应用中更准确地识别真正的并购事件。

批量指令生成的例子(特征2):

继续以上的并购信息抽取任务,假设我们有一组指令,每个指令要求抽取不同数量的模式信息。

  • 目标: 确保模型能在训练和评估时处理不同数量的模式查询。
  • 方法: 我们将指令集分成批次,每批次包含固定数量(比如5个)的模式。每批次的模式可以包括“收购方”、“被收购方”、“交易金额”、“交易日期”等。
  • 应用: 在训练期间,模型通过这种批量处理学会了同时处理多个模式的查询。在评估阶段,即使指令中的模式数量减少到3个或增加到7个,模型也能够适应,因为它已经学会了如何处理不同批次大小的模式集。

通过这两个特征的结合使用,模型在面对实际数据时能够更准确地执行信息抽取任务,同时减少了训练和实际应用之间的性能差距。

完整步骤:

  1. 数据收集和清理:

    • 从多个数据源收集涉及命名实体识别(NER)、关系抽取(RE)和事件抽取(EE)的双语数据。
    • 对数据进行标准化处理,包括格式统一、实例去重和低质量数据排除。
  2. 构建硬负模式字典:

    • 从标准化后的数据集中识别正面模式集合。
    • 定义每个正面模式的硬负模式集合,即语义上接近但并不正确的模式。
  3. 批量指令生成:

    • 将正面模式和一小部分硬负模式组合,形成最终的查询模式集合。
    • 根据预设的split_num将模式集合分批,每批包含固定数量的模式。
  4. 模型训练:

    • 使用生成的批量指令对信息抽取模型进行训练。
    • 确保模型能够适应在数量不一致的模式查询中进行准确的信息抽取。
  5. 模型评估与微调:

    • 在实际的IE任务中评估模型性能。
    • 根据评估结果对模型进行微调,以提高其在实际应用中的准确性和鲁棒性。

效果

在这里插入图片描述
IEPILE 使用后:
在这里插入图片描述

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

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

相关文章

MySQL锁三部曲:临键、间隙与记录的奇妙旅程

欢迎来到我的博客,代码的世界里,每一行都是一个故事 MySQL锁三部曲:临键、间隙与记录的奇妙旅程 前言临键锁的奥秘间隙锁记录锁 前言 在数据库世界中,锁是维护数据完整性的一种关键机制。而MySQL中的临键锁、间隙锁和记录锁则是锁…

Python 读取创建word文档

本篇文章内容为使用python 读取word文档和创建word文档 读取doc文件 引入类库 示例如下: import win32com import win32com.client import os 读取doc文件 通过得到的doc文件路径调用系统word功能。 打开文件获取其中的文本信息,输出文本信息&#…

彩虹全新 SUP 模板,卡卡云模板修复版

彩虹全新 SUP 模板,卡卡云模板,首页美化,登陆页美化,修复了 PC 端购物车页面显示不正常的问题。下载地址:彩虹全新 SUP 模板.zip 模板截图

[ Python+OpenCV+Mediapipe ] 实现对象识别

一、写在前面 本文所用例子为个人学习的小结,如有不足之处请各位多多海涵,欢迎小伙伴一起学习进步,如果想法可在评论区指出,我会尽快回复您,不胜感激! 所公布代码或截图均为运行成功后展示。 二、本文内容…

python 条件语句if else

python 条件语句if else Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为true,0 或者…

【C语言基础】:操作符详解(一)

文章目录 操作符详解1. 操作符的分类2. 二进制和进制转换2.1 什么是二进制、八进制、十进制、十六进制2.1.1 二进制和进制转换2.1.2 二进制转十进制2.2.3 二进制转八进制2.2.4 二进制转十六进制 3. 源码、反码、补码4. 移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符&…

Java学习笔记------继承

继承 Java中提供了一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立继承关系 如图,Student和Teacher类中除了study()和teacher()两个成员函数不同,其他重复了&…

【摸鱼日常】使用Docker部署2048小游戏

一、本次实践介绍 ​1. 本次实践简介 本次实践部署环境为个人测试环境,快速使用docker部署2048小游戏。 rootWellDone:/home/goodjob# uname -aLinux WellDone 6.5.0-14-generic #14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2 x86_64 x86_64…

【深度学习笔记】3_2线性回归的从零实现

注:本文为《动手学深度学习》开源内容,仅为个人学习记录,无抄袭搬运意图 3.2 线性回归的从零开始实现 在了解了线性回归的背景知识之后,现在我们可以动手实现它了。尽管强大的深度学习框架可以减少大量重复性工作,但若…

【C++精简版回顾】12.友元函数

1.友元函数 1.class class MM { public:MM(int age,string name):age(age),name(name){}friend void print(MM mm); private:int age;string name;void print() {cout << age << "岁的" << name << "喜欢你" << endl;} }; f…

Flutter(一):安装和环境配置、创建Flutter项目

安装和环境配置、创建Flutter项目 Flutter 下载方式1方式2 Flutter 环境配置配置国内镜像站点解压 Flutter将 flutter 添加到系统环境变量中运行 flutter doctor来验证安装 Android Studio下载插件创建项目安装 Android SDK 工具在模拟器上运行 Flutter 下载 方式1 全版本&…

Java基于微信小程序的校园二手物品交易系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

计网:动手尝试SMTP交互【利用Telnet发送邮件, 带图片】

文章目录 准备工作发送仅有ascii码的邮件发送图片附件后记 准备工作 1.如图&#xff0c;勾选telnet客户端 2.邮箱开启第三方登录服务 开启服务后&#xff0c;会给一个授权码。授权码是QQ邮箱用于登录第三方客户端/服务的专用密码&#xff0c;适用于登录以下服务&#xff1a;…

React组件详解

React组件分为两大类 1.函数组件 2.类组件&#xff08;最常用&#xff09; 组件化 import ReactDom from "react-dom";// // 1.通过函数创建一个组件 // 2.函数名字必须大写开头 // 3.函数必须有返回值 function Func1() {return <h2>这是一个基础组件</h…

c语言经典测试题5

1.题1 t0; while(printf("*")) { t; if (t<3) break; }关于上述代码描述正确的是&#xff1f; A: 其中循环控制表达式与0等价 B: 其中循环控制表达式与0等价 C: 其中循环控制表达式是不合法的 D: 以上说法都不对 我们来分析一下&#xff1a;printf的返回值…

你真的了解@Async吗?

你真的了解Async吗&#xff1f; 使用场景&#xff1a; 开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑&#xff0c;比如消息推送、商品同步等都可以使用异步方法&#xff0c;这时我们可以用到Async。但是直接使用 Async 会有风险&#xff0c;当我们没有指定线程池…

数学建模资料分享

1. 往年各赛题的优秀论文 可以用来参考一下论文是怎么写的。参考论文的结构&#xff0c;格式&#xff0c;思路等等。 链接&#xff1a;https://pan.baidu.com/s/1WG2t4-x9MjtaSgkq4ue5AQ?pwdnlzx 提取码&#xff1a;nlzx --来自百度网盘超级会员V4的分享 2.论文模板 链接&a…

typescript 实现Optional

我们先看下面的这段代码,一个学生接口,里面有成员id,name,age,gender等等成员, 有一个方法graduate,里面要接受一个Student类型的实参 interface Student {id: numbername: stringage: numbergender: string}function graduate(Student: Student) {//...}现在有一个问题,就是学…

LabVIEW燃料电池船舶电力推进监控系统

LabVIEW燃料电池船舶电力推进监控系统 随着全球经济一体化的推进&#xff0c;航运业的发展显得尤为重要&#xff0c;大约80%的世界贸易依靠海上运输实现。传统的船舶推进系统主要依赖于柴油机&#xff0c;这不仅耗能高&#xff0c;而且排放严重&#xff0c;对资源和环境的影响…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…