这段代码实现了一个基于大语言模型的信息抽取系统,能够从金融和新闻类文本中提取结构化信息。下面我将详细解析整个代码的结构和功能。

1. 代码整体结构

代码主要分为以下几个部分:

  1. 模式定义:定义不同领域(金融、新闻)需要抽取的实体类型

  2. 示例数据:提供每个领域的示例文本和标准答案

  3. 初始化函数:构建模型对话的上下文提示

  4. 推理函数:实际执行信息抽取

  5. 后处理函数:清洗模型输出

  6. 主程序:执行整个流程

2. 核心组件详解

2.1 模式定义 (schema)

schema = {"金融": ["日期", "股票名称", "开盘价", "收盘价", "成交量"],"新闻": ["日期", "新闻标题", "新闻内容"],
}
  • 定义了两种文本类型(金融、新闻)及其需要抽取的实体字段

  • 金融类关注股票市场数据,新闻类关注事件信息

2.2 提示模板 (IE_PATTERN)

IE_PATTERN = "{}\n\n提取上述句子中{}的实体,并按照JSON格式输出..."
  • 定义了信息抽取的提示词模板

  • 包含占位符{},运行时会被实际句子和实体类型替换

2.3 示例数据 (ie_examples)

ie_examples = {"金融": [{"content": "...", "answers": {...}}],"新闻": [{"content": "...", "answers": {...}}]
}
  • 为每个领域提供one-shot示例

  • 包含原始文本(content)和标准抽取结果(answers)

2.4 初始化函数 (init_prompts)

def init_prompts():ie_pre_history = [{"role": "system", "content": "你是一个信息抽取助手。"}]# 构建示例对话历史return {"ie_pre_history": ie_pre_history}
  1. 设置系统角色为"信息抽取助手"

  2. 遍历所有示例,构建模型学习用的对话历史

  3. 返回包含完整对话历史的字典

2.5 推理函数 (inference)

def inference(custom_settings: dict, sentences: List[Dict[str, str]]):for item in sentences:# 构造提示词messages = [*custom_settings["ie_pre_history"], {"role": "user", "content": ...}]# 调用模型response = ollama.chat(model="qwen2.5:7b", messages=messages)# 后处理ie_res = clean_response(response["message"]["content"])
  1. 接收待处理句子和初始化设置

  2. 为每个句子构造完整的提示词

  3. 调用本地Qwen模型进行推理

  4. 对输出进行清洗和格式化

2.6 后处理函数 (clean_response)

def clean_response(response: str):if "```json" in response:res = re.findall(r"```json(.*?)```", response, re.DOTALL)return json.loads(response)
  • 处理模型返回的可能包含Markdown代码块的响应

  • 提取纯JSON部分并转换为Python字典

3. 工作流程示例

假设输入句子为金融类文本:

"2023-02-15,股票佰笃[BD]美股开盘价10美元..."

处理过程:

  1. 根据"金融"类型确定需要抽取的字段(日期、股票名称等)

  2. 构造提示词:

    2023-02-15,股票佰笃[BD]美股开盘价10美元...提取上述句子中"金融"(日期, 股票名称, 开盘价...)的实体...
  3. 模型返回JSON格式的抽取结果

  4. 后处理后得到结构化数据:

    {"日期": ["2023-02-15"],"股票名称": ["佰笃[BD]美股"],"开盘价": ["10美元"],...
    }

4. 技术亮点

  1. 上下文学习(In-context Learning):通过示例让模型学习抽取模式

  2. 结构化提示工程:精心设计的提示模板提高抽取准确性

  3. 多领域支持:可扩展的schema设计支持不同领域

  4. 鲁棒的后处理:处理模型输出的各种格式情况

5. 扩展性建议

  1. 可以增加自动文本分类功能,而非手动指定"cls"

  2. 添加更多领域和实体类型

  3. 实现批量处理优化性能

  4. 增加错误处理和日志记录

这个系统展示了如何有效利用大语言模型进行专业领域的信息抽取,核心思想是通过精心设计的提示和示例引导模型完成特定任务。

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

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

相关文章

Next实习项目总结串联讲解(一)

下面是一些 Next.js 前端面试中常见且具深度的问题,按照逻辑模块整理,同时提供示范回答建议,便于你条理清晰地展示理解与实践经验。 ✅ 面试讲述结构建议 先讲 Next.js 是什么,它为什么比 React 更高级。(支持 SSR/SSG/ISR,提升S…

React开发依赖分析

1. React小案例: 在界面显示一个文本:Hello World点击按钮后,文本改为为:Hello React 2. React开发依赖 2.1. 开发React必须依赖三个库: 2.1.1. react: 包含react所必须的核心代码2.1.2. react-dom: react渲染在不同平…

工具(一)Cursor

目录 一、介绍 二、如何打开文件 1、从idea跳转文件 2、单独打开项目 三、常见使用 1、Chat 窗口 Ask 对话模式 1.1、使用技巧 1.2 发送和使用 codebase 发送区别 1.3、问题快速修复 2、Chat 窗口 Agent 对话模式 2.1、agent模式功能 2.2、Chat 窗口回滚&撤销 2.3…

Prompt编写规范指引

1、📖 引言 随着人工智能生成内容(AIGC)技术的快速发展,越来越多的开发者开始利用AIGC工具来辅助代码编写。然而,如何编写有效的提示词(Prompt)以引导AIGC生成高质量的代码,成为了许…

自我学习----绘制Mark点

在PCB的Layout过程中我们需在光板上放置Mark点以方便生产时的光学定位(三点定位);我个人Mark点绘制步骤如下: layer层:1.放置直径1mm的焊盘(无网络连接) 2.放置一个圆直径2mm,圆心与…

2025年财税行业拓客破局:小蓝本财税版AI拓客系统助力高效拓客

2025年,在"金税四期"全面实施的背景下,中国财税服务市场迎来爆发式增长,根据最新的市场研究报告,2025年中国财税服务行业产值将达2725.7亿元。然而,行业高速发展的背后,80%的财税公司却陷入获客成…

双向链表,对其实现头插入,尾插入以及遍历倒序输出

1.创建一个节点,并将链表的首节点返回创建一个独立节点,没有和原链表产生任何关系#include "head.h"typedef struct Node { int num; struct Node*pNext; struct Node*pPer; }NODE;后续代码:NODE*createNode(int value) {NODE*new …

2025年自动化工程与计算机网络国际会议(ICAECN 2025)

2025年自动化工程与计算机网络国际会议(ICAECN 2025) 2025 International Conference on Automation Engineering and Computer Networks一、大会信息会议简称:ICAECN 2025 大会地点:中国柳州 审稿通知:投稿后2-3日内通…

12.Origin2021如何绘制误差带图?

12.Origin2021如何绘制误差带图?选中Y3列→点击统计→选择描述统计→选择行统计→选择打开对话框输入范围选择B列到D列点击输出量→勾选均值和标准差Control选择下面三列点击绘图→选择基础2D图→选择误差带图双击图像→选择符号和颜色点击第二个Sheet1→点击误差棒→连接选择…

如何使用API接口获取淘宝店铺订单信息

要获取淘宝店铺的订单信息,您需要通过淘宝开放平台(Taobao Open Platform, TOP)提供的API接口来实现。以下是详细步骤:1. 注册淘宝开放平台账号访问淘宝开放平台注册开发者账号并完成实名认证创建应用获取App Key和App Secret2. 申请API权限在"我的…

【Kiro Code 从入门到精通】重要的功能

一、Kiro 是什么? Kiro 是一款智能型集成开发环境(IDE),借助规格说明(specs)、向导(steer)、钩子(hooks)帮助你高效完成工作。 二、Specs 规格说明 规范&…

直播间里的酒旅新故事:内容正在重构消费链路

文/李乐编辑/子夜今年暑期,旅游的热浪席卷全国。机场、火车站人潮涌动,电子屏上滚动的航班信息与检票口前的长队交织成繁忙的出行图景,酒店预订量也在这股热潮中节节攀升。连线 Insight关注到,今年的暑期游有了一些新变化&#xf…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | VerifyAccountUi(验证码组件)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— VerifyAccountUi组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ 使用 Vue 3 的 <script setup> 语法结合 Tailwind CS…

AbstractAuthenticationToken 认证流程中​​认证令牌的核心抽象类详解

AbstractAuthenticationToken 认证流程中​​认证令牌的核心抽象类详解在 Spring Security 中&#xff0c;AbstractAuthenticationToken 是 Authentication 接口的​​抽象实现类​​&#xff0c;其核心作用是为具体的认证令牌&#xff08;如用户名密码令牌、JWT 令牌等&#x…

小程序视频播放,与父视图一致等样式设置

初始设置的代码&#xff1a;WXML的代码<view class"card-wrapper"> <!-- 视频播放容器&#xff08;默认隐藏&#xff09; --> <view class"video-container" wx:if"{{isPlaying}}"> <video id"cardVideo" class&…

Kafka——关于主题管理

引言在Kafka的世界中&#xff0c;主题&#xff08;Topic&#xff09;是消息的基本组织单位&#xff0c;类似于文件系统中的"文件夹"——所有消息都按照主题分类存储&#xff0c;生产者向主题写入消息&#xff0c;消费者从主题读取消息。主题的管理是Kafka运维的基础&…

【VLLM】VLLM使用

一 、安装 二、启动入口 VLLM 提供了多种入口方式启动模型&#xff0c;以适应不同的使用场景&#xff08;如命令行交互、API 服务、自定义集成等&#xff09;。除了最常用的 openai.api_server&#xff08;OpenAI 兼容 API 服务&#xff09;&#xff0c;还有以下主要入口&#…

为Github Copilot创建自定义指令/说明/注意事项

GitHub Copilot 是一个强大的 AI 编程助手&#xff0c;通过合理配置自定义指令&#xff0c;可以让它更好地理解和遵循项目特定的编码规范&#xff0c;省的每次提问时输入重复提示语。 目录 方法一&#xff1a;项目级别指令文件&#xff08;推荐&#xff09;方法二&#xff1a…

信创厚知联盟会长兼创始人莅临绿算技术

2025年7月29日&#xff0c;信创厚知联盟会长兼创始人王杲一行考察广东省绿算技术有限公司&#xff0c;重点调研其在智算中心存储与AI算力协同领域的创新成果。此次交流标志着双方在信创产业生态合作上迈出重要一步&#xff0c;为国产高端高性能全闪存存储与智算基础设施的融合发…

RAG面试内容整理-Prompt Engineering 在 RAG 中的作用

Prompt Engineering(提示工程)指为生成模型精心设计输入提示,以引导模型产生所需的输出。在RAG系统中,prompt设计对充分利用检索到的知识至关重要。因为生成器(通常是LLM)接收到的不仅有用户问题,还有检索的文档内容,我们需要通过提示明确告诉模型如何使用这些信息。例…