当前位置: 首页 > news >正文

大语言模型信息抽取系统解析

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

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.dtcms.com/a/308708.html

相关文章:

  • [12月考试] B
  • MySQL中join联表的原理
  • 前端基础之《Vue(28)—Vue3 ref相关API》
  • web应用从服务器主动推动数据到客户端的方式
  • Windows 11下IDEA中使用git突然变得卡慢及解决办法
  • Spring-rabbit使用实战五
  • 生信软件49 - 全基因组亚硫酸氢盐测序(WGBS)比对与甲基化水平调用工具BSseeker2
  • Linux 进程管理与计划任务
  • 代码随想录算法训练营第五十七天|图论part7
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • Unity插件——Simple Waypoint System的使用总结
  • Apifox 7 月更新|通过 AI 命名参数及检测接口规范、在线文档支持自定义 CSS 和 JavaScript、鉴权能力升级
  • 20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式
  • 蓝牙LMP版本交换过程
  • 以AI大模型重构教育新生态,打造“教-学-练-辅-评”一体化智能平台
  • 为什么Android主线程与java主线程不同,不会退出?
  • 分布式系统的基石:ZooKeeper架构设计与实战指南
  • 【抄袭】思科交换机DAI(动态ARP监控)配置测试
  • 云上服务器常见的存储方式和类型
  • 自监督学习
  • get和post的请求在request里的应用与区别
  • 机器视觉的家电薄膜开关丝印应用
  • 前端 vue 第三方工具包详解-小白版
  • Data Processer
  • QQ输入法设置快捷键,更快造词或自定义短语
  • 智慧零售商品识别准确率↑32%:陌讯多模态融合算法实战解析
  • 2025年IntelliJ IDEA最新下载、安装教程,附详细图文
  • 人工智能如何助力工业领域实现可持续发展?
  • 循环神经网络RNN原理精讲,详细举例!
  • 人工智能与新闻传播:信息传播的变革