【Agent】信息提取场景

news2025/1/15 6:48:57

文章目录

  • 场景说明
  • 超参数调整
    • top_k
    • top_p
    • tempareture
    • response_format
  • 提示词优化
    • 提取任务通用提示词模板
    • 防止badcase的提示词
    • 特殊符合划分待提取内容
  • 提取的后处理
  • 评估提取性能
  • Experiment
    • 1、通过符号学定位原文信息
    • 1.1 首位字符在原文中的index
    • 1.2 首尾N个字符,中间字符使用...代替
    • 使用动态调整输出内容
  • 参考资料
    • 超参数

在这里插入图片描述

场景说明

需要让大模型从文本中提取出固定的字段,同时为了方便后续数据管理,要求大模型输出格式为json格式。会涉及的几个影响提取质量的流程:

  1. 待提取文本的质量。如果待提取文本是诸如图片、PDF等文件格式,那么就需要结合OCR技术,将图片文件转换为对应的字符串信息。
  2. 提示词模板的质量。能否正确描述该提取任务、格式说明是否正确、提示词的高级用法是否使用等均会影响大模型的输出质量
  3. 大模型的性能。即使有准备充分的待提取文本和任务表述清洗的提示词,大模型的提取质量也是会影响提取效果。大模型对提取任务的影响存在两个方面:一是大模型本身的性能,大模型推理能力、理解能力好,提取效果相对较好;二是在选定了基座大模型之后,对大模型接口参数的调整,比如top_p、top_k、temperature等超参数的调整
  4. 后处理的格式化输出。提取到了大模型的输出之后,还要进行必要的后处理,才能将提取到的结果进行流程化。比如对一些输出的json结果进行解析,由于大模型存在幻觉,可能会导致json格式的错误:比如大模型有时喜欢在jison中加入 注释 \\;或者缺少了}导致无法完全使用json.loads()来格式化

超参数调整

top_k

top_k 越小
思路:从 tokens 里选择 k 个作为候选,然后根据它们的 likelihood scores 来采样模型从最可能的"k"个选项中随机选择一个,如果k=3,模型将从最可能的3个单词中选择一个。在很多情况下,这种抽样带来的随机性有助于提高生成质量。

top_p

思路:候选词列表是动态的,从 tokens 里按百分比选择候选词,模型从累计概率大于或等于“p”的最小集合中随机选择一个,如果p=0.9,选择的单词集将是概率累计到0.9的那部分。
影响输出文本的多样性,取值越大,生成文本的多样性越强
个人经验:
top_p 越强,比如设置top_p = 0.9, 大模型的自我表达越强,在提取任务中,大模型会输出很多非必要的旁白, 或者过早的停止提取任务,这个参数不好调,

tempareture

建议调整幅度不要过于剧烈,在± 0.15之间进行调整即可

response_format

千帆大模型提供了一个 response_format的超参数,估计是将这个超参数输入到提示词模板中。
不加response_format="json_object"大模型输出的json是带有json...前缀的

个人经验是:

  1. 默认参数是通用场景的最佳参数,因为大模型训练的时候就是按照这个默认参数进行训练的。
  2. 调整接口超参数应该尽可能遵循:调整个数少,调整幅度小, 进行消融实验

提示词优化

提取任务通用提示词模板

一个基础的提取任务的提示词模板,应该包含的四个要素:角色说明任务说明输出格式待提取区域
进一步的,如果提取的字段较少,可以设置一些few shot提示词来提高模型对任务的服从性

# 任务简介
你是一个文本json转换器。从{category}报告文本内容中识别出信息元 {extract_target},并按照json格式进行提取。


# 任务说明
尽可能从原文提取出信息,不要修改字段值的原文内容。
把文中出现的时间和日期用ISO 8601格式表示。
由于该报告通过OCR进行识别,因此存在小部分字词错误和格式混乱的问题,你需要进行合理推断,从而尽可能完整地提取出相关信息。
信息元提取地越完善越能够帮助到用户管理自身健康信息。
文本中的报告内容全部都需要提取到对应字段中,不要输出原文没有的内容。
只返回那些成功提取的字段及其信息。如果某个字段没有提取到信息,请不要在返回的json结果中包含该字段。
输出结果不能进行简略输出,不可使用 "//" 注释,要求全部提取。

# 输出格式
请按以下json格式抽取文本中的内容:
{extract_json_demo}


# 开始提取
报告内容如下:
"""
{original_report}
"""

防止badcase的提示词

按照输出格式输出内容,不要输出非格式内容的其他旁白 请按以下json格式抽取文本中的内容
文本中的报告内容全部都需要提取到对应字段中,不要输出原文没有的内容
对于能够提取到的字段,不能对其提取结果进行简略输出,要求全部提取 尽可能从原文提取出信息,不要修改字段值的原文内容
把文中出现的时间和日期用ISO 8601格式表示。
输出结果不能进行简略输出,不可使用 “//” 注释,要求全部提取。

这是我研究出的一个提示词优化:只返回那些成功提取的字段及其信息。如果某个字段没有提取到信息,请不要在返回的json结果中包含该字段
该提示词能够减少大模型的无效输出,因为缺失的值,直接不反回这个字段即可,不需要额外返回类似 {”字段1“:"未提取到该字段"}等啰嗦,因为完全可以不返回这个字段,即可表示相同含义。
该提示词优点:

  1. 精简输出,减少输出耗时,降低token费用。啰嗦的内容越少,耗时越少,费用也越低
  2. 降低格式错误的概率。输出的内容少了,出现格式错误的机会就相对越低

该提示词缺点:

  1. 有概率导致大模型偷工减料,给了大模型不完全提取的一种豁免,尤其是大模型性能不佳的时候
  2. 大模型性能不佳时,不能服从该提示词,也就是缺失的值照样返回,那么这个提示词就是无效提示词
  3. 设置了该提示词之后,后处理为了确保格式统一,需要增加字段完整度检查逻辑,对于缺失的字段需要代码补全

特殊符合划分待提取内容

报告内容如下:
“”" # 使用特殊符号来标识提示词和待提取内容
{original_report}
“”"

提取的后处理

  1. 一些简单的预处理
  2. 使用json.loads()
  3. 使用 json_repair()
  4. 定制 解析逻辑

如果使用json输出格式不能很好地约束大模型进行提取任务,那么可以参考使用其他格式,比如使用jsonl

评估提取性能

  1. 统计返回的键的长度: len(dict.keys())
  2. 统计提取到的数据长度: sum(len(i) for i in dict.values())
  3. 统计格式服从度: 比如有无额外的旁白

Experiment

让大模型从原文中提取,按照给定的字段提取对应的原文内容,然而由于有些字段提取到的内容较长,一方面会影响完整输出的时间,另一方面会影响提高提取成本。
因此需要对提取Agent进行优化,从而提高Agent的提取效率,降低成本

本文对几个优化方案进行试验记录,

1、通过符号学定位原文信息

1.1 首位字符在原文中的index

优化逻辑
由于我们已经有了原文信息,所以我们可以将提取任务理解原文中的哪些片段需要被提取出来。
同时结合字符串的位置信息,我们可以将原文中冗长的片段映射为原文也就是原字符串中的位置信息,从而精简输出内容。并通过返回的位置信息,回到原文中,定位抽取出字符片段。该方案逻辑上可行,并且对于字段提取结果为长文本的场景,具有加速效果,对于较短的信息提取,如简单实体提取,则加速效果不明显。

# 任务说明
你是一个法律文档处理助手,负责将法律报告文本内容抽取并转换成JSON格式。
你需要以 JSON格式提取字段:['当事人姓名', '报告日期', '案件类型',]

# 提取模板
请按以下JSON格式抽取文本中的内容,只输出原文中存在的信息,其他信息不要输出。
字段的值是提取到的信息在原文中的位置信息,格式为[start_index,end_index]。
{
    "当事人姓名": [位置信息],
    "报告日期": [位置信息],
    "案件类型": [位置信息],
}

例如,如果原文中包含以下信息:
> 民事案件报告,当事人姓名:张三,报告日期:2024-07-01,案件类型:合同纠纷,报告名称:案件分析报告,法律意见:建议和解,备注:无。

那么,提取的JSON格式内容将如下:

{
    "当事人姓名": [12, 14],
    "报告日期": [21, 31],
    "案件类型": [39, 49],
}

原文:

1.2 首尾N个字符,中间字符使用…代替

# 任务说明

# 格式说明


原文:

使用动态调整输出内容

参考资料

超参数

https://blog.csdn.net/qq_43243579/article/details/136331123
https://blog.csdn.net/qq_40910191/article/details/134070085

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

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

相关文章

【计算机毕设论文】基于SpringBoot薪资管理系统

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 一. 功能介绍 🔍 员工信息管理 - 系统可以轻松添加、编辑或删除员工信息&#xff…

操作系统基础 (二)

目录 六. 运行机制两种指令两种CPU状态两种程序 七. 中断和异常中断的作用中断类型中断机制基本原理 八. 系统调用定义系统调用与库函数系统调用实现的功能系统调用过程 九. OS体系结构内核分层结构模块化外核 十. 系统引导相关的数据磁盘数据主存数据 系统引导过程总述 十一. …

域泛化(Domain Generalization)

仓库:https://github.com/jindongwang/transferlearning 综述:https://arxiv.org/pdf/2103.03097、https://arxiv.org/pdf/2103.02503 1.问题及解决方案 出发点:需要解决domain shift、out-of-distribution (OOD)问题 解决方案:绕…

常用优秀内网穿透工具(实测详细版)

文章目录 1、前言2、安装Nginx3、配置Nginx4、启动Nginx服务4.1、配置登录页面 5、内网穿透5.1、cpolar5.1.1、cpolar软件安装5.1.2、cpolar穿透 5.2、Ngrok5.2.1、Ngrok安装5.2.2、随机域名5.2.3、固定域名5.2.4、前后端服务端口 5.3、NatApp5.4、Frp5.4.1、下载Frp5.4.2、暴露…

SpringMVC注解全解析:构建高效Web应用的终极指南 (下)

一. 引言 在上篇文章中,我们介绍了几个重要的SpringMVC注解: SpringBootApplication:Spring Boot项目的启动类注解。RequestMapping:用于映射URL到控制器类或方法,支持多种请求方式。RequestParam:用于绑…

长难句打卡7.15

The trend was naturally most obvious in those areas of science based especially on a mathematical or laboratory training, and can be illustrated in terms of the development of geology in the United Kingdom 这一趋势自然在以数学或实验室训练为基础的科学领域里…

新版本cesium编译1.103之后的版本

cesium1.1之后的版本文件结构域1.1之前的版本有了很大的差别,源码也全部移到了packages目录中。有很多依赖包没有写在根目录的package.json文件中。npm i 后直接编译会保持。 cesium源码git https://github.com/CesiumGS/cesium 1、添加缺少的包,缺少的…

Java 8的变革:函数式编程和Lambda表达式探索

文章目录 一、函数接口二、Lambda表达式简介三、Lambda表达式外部参数四、Lambda范例五、Runnable Lambda表达式 一、函数接口 函数接口是一个具有单个抽象方法的接口,接口设计主要是为了支持 Lambda 表达式和方法引用,使得 Java 能更方便地实现函数式编…

【论文速读】| TCSR-SQL:面向表内容感知的自检索文本到SQL方法

本次分享论文:TCSR-SQL: Towards Table Content-aware Text-to-SQL with Self-retrieval 基本信息 原文作者:Wenbo Xu, Liang Yan, Peiyi Han, Haifeng Zhu, Chuanyi Liu, Shaoming Duan, Cuiyun Gao, Yingwei Liang 作者单位:哈尔滨工业大…

如何使用 Containerfile/Dockerfile 构建 .net 镜像?

Podman 简介 Podman 是 Red Hat 开发的一款容器管理工具,它允许用户在没有守护进程的情况下运行、构建、管理和推送容器。Podman 是一个无守护进程的容器引擎,这意味着它不需要一个持续运行的后台进程来管理容器,这与 Docker 的守护进程模式…

科普文:详解23种设计模式

概叙 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four(GoF)的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式…

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

人工智能咨询培训老师叶梓 转载标明出处 现实世界的视频捕获虽然因其真实性而宝贵,但常常受限于长尾分布的问题,即常见场景过度呈现,而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题",在模拟复杂环境光线、几何…

在Centos上安装MySQL

目录 在Centos上安装MySQL1.确认当前的系统版本2.添加 MySQL Yum 源2.1访问MySQL开发者专区2.2根据当前系统选择对应的发布包2.3补充 3.MySQL的历史发行版本4.安装发布包5.安装MySQL5.1启动MySQL服务器5.2查看服务器状态5.3开机自启动5.4 登入MySQL5.5修改密码 在Centos上安装M…

今日总结,没啥特别学习到的,还是省市县三级,和一些开发的规范和git的冲突解决。(maven clean)

20240718 一、对于省市县三级联动告一段落二、修改开发好的接口三、对于git(每天都有他的问题)的推送和拉取问题 一、对于省市县三级联动告一段落 省市县三级联动,直接前端连接一个组件就可以直接实现,好家伙,白费我时…

【深度学习】inpaint图像中的alpha混合图的边缘处理

比如原图是: 红圈内就是文字水印,经过inpaint后得到图和原图混合,如何处理边界呢,这个代码可以干这事: 越是中心就直接用inpaint图,否则就用原图,这样进行alpha混合。 import numpy as np i…

计算机网络技术期末复习

一. 填空 在采用电信号表达数据的系统中,数据有 数字数据 和 模拟数据 两种。域名系统DNS是一个 分布式数据库 系统。TCP/IP的网络层最重要的协议是 IP互连网协议,它可将多个网络连成一个互连网。 4. 在TCP/IP层次模型的网络层中包括的协议主要有ARP 、…

计算机毕业设计-基于Springboot的养老院管理系统-源码程序文档

项目源码,请关注❥点赞收藏并私信博主,谢谢~ 本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码部署论文ppt代码讲解答辩指导文件…

【C++】类的默认成员函数--构造,析构,拷贝,重载

文章目录 前言一、类的默认成员函数是什么?二、构造函数1.构造函数概述2.构造函数特点3.构造函数代码示例 三.析构函数1.析构函数概述2.析构函数特点3.析构函数代码示例 四.拷贝构造函数1.拷贝构造函数概述2.拷贝构造函数特点拷贝构造函数代码示例 五. 赋值运算符重…

学习008-01-03 Customize the Application UI and Behavior(自定义应用程序UI和行为)

Customize the Application UI and Behavior(自定义应用程序UI和行为) In XAF, the data model defines the database structure and UI. Changes to your entity classes affect the UI. For example, if you add a new property to an entity class, …

解决PDF文件无法打印的困扰:快速排查与修复指南

在日常工作和学习中,PDF文件因其跨平台兼容性和良好的格式保持特性而广受欢迎。然而,当我们急需打印一份重要的PDF文件时,却遇到了“PDF无法打印”的尴尬情况,这无疑会让人感到焦急。别担心,本文将为你提供一系列快速排…