使用 OpenAI 进行结构化标签提取的 Python 实现

使用 OpenAI 进行结构化标签提取的 Python 实现

    • 1. 环境准备
    • 2. 加载环境变量
    • 3. 初始化 OpenAI 客户端
    • 4. 定义系统消息
    • 5. 实现标签提取函数
    • 6. 示例应用
      • 示例1:人事文档
      • 示例2:技术文档
    • 7. 运行结果
    • 8. 总结

在现代的信息处理中,从文本中提取结构化信息是一个常见的需求。无论是从人事文档中提取人名、部门名称,还是从技术文档中提取技术领域和产品名称,这些任务都可以通过自然语言处理(NLP)技术来实现。本文将介绍如何使用 OpenAI 的 GPT-4 模型来实现这一功能,并通过 Python 代码展示具体的实现步骤。

1. 环境准备

首先,我们需要准备 Python 环境,并安装必要的依赖库。我们将使用 openai 库来调用 GPT-4 模型,并使用 dotenv 库来管理环境变量。

pip install openai python-dotenv

2. 加载环境变量

为了安全地管理 API 密钥和其他敏感信息,我们可以将这些信息存储在 .env 文件中,并使用 dotenv 库来加载它们。

import logging
import osfrom dotenv import find_dotenv, load_dotenv
from openai import OpenAI# 读取本地 .env 文件
load_dotenv(find_dotenv())# 设置日志级别为 ERROR,避免 WARNING 信息干扰
logging.basicConfig(level=logging.ERROR)

3. 初始化 OpenAI 客户端

接下来,我们需要初始化 OpenAI 客户端。这里我们从环境变量中读取 OPENAI_BASE_URLOPENAI_API_KEY

# 初始化 OpenAI 模型
llm_client = OpenAI(base_url=os.environ["OPENAI_BASE_URL"],api_key=os.environ["OPENAI_API_KEY"],
)

4. 定义系统消息

为了指导 GPT-4 模型进行标签提取,我们需要定义一个系统消息。这个消息将告诉模型我们期望的输出格式和标签类型。

system_message = """你是一个标签提取专家。请从文本中提取结构化信息,并按要求输出标签。
---
【支持的标签类型】
- 人名
- 部门名称
- 职位名称
- 技术领域
- 产品名称
---
【输出要求】
1. 请用 JSON 格式输出,如:[{"key": "部门名称", "value": "教研部"}]
2. 如果某类标签未识别到,则不输出该类
---
待分析文本如下:
"""

5. 实现标签提取函数

我们定义一个 extract_tags 函数,该函数将接收待分析的文本,并调用 GPT-4 模型来提取标签。

def extract_tags(text):completion = llm_client.chat.completions.create(model="gpt-4",messages=[{'role': 'system', 'content': system_message},{'role': 'user', 'content': text}],response_format={"type": "json_object"},seed=42,)return completion.choices[0].message.content

6. 示例应用

我们通过两个示例来展示如何使用 extract_tags 函数。

示例1:人事文档

# 示例1:人事文档
hr_text = """张明是我们AI研发部的技术主管,他带领团队开发了新一代智能对话平台 ChatMax,在自然语言处理领域有着丰富经验。如果您需要了解项目细节,可以直接联系他。"""
print("人事文档标签提取结果:")
print(extract_tags(hr_text))

示例2:技术文档

# 示例2:技术文档
tech_text = """本论文提出了一种基于深度学习的图像识别算法,在医疗影像分析中取得了突破性进展。该算法已在北京协和医院的CT诊断系统中得到应用。"""
print("\n技术文档标签提取结果:")
print(extract_tags(tech_text))

7. 运行结果

运行上述代码后,我们将得到类似以下的输出:

人事文档标签提取结果:
[{"key": "人名", "value": "张明"},{"key": "部门名称", "value": "AI研发部"},{"key": "职位名称", "value": "技术主管"},{"key": "技术领域", "value": "自然语言处理"},{"key": "产品名称", "value": "ChatMax"}
]技术文档标签提取结果:
[{"key": "技术领域", "value": "深度学习"},{"key": "产品名称", "value": "CT诊断系统"},{"key": "部门名称", "value": "北京协和医院"}
]

8. 总结

通过本文的介绍,我们学习了如何使用 OpenAI 的 GPT-4 模型来从文本中提取结构化标签。这种方法可以广泛应用于各种信息提取任务中,如人事管理、技术文档分析等。希望本文对你有所帮助,欢迎在评论区分享你的使用体验和问题。

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

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

相关文章

【电源专题】为什么测试电源的SW波形上冲振荡之前的0V电位要先来个小的下降

在同步电源的开关节点SW波形测试中,你可能会发现周期性的SW波形在上升前的一小段时间时间内会有一个小小的下跌,这个下跌会低于0V。那么这个下跌是怎么来的呢? 如下所示为某降压转换器的SW开关节点波形: 其展开后可以看到在上升之前有20ns左右的时间,SW电压是下跌…

OneFlow和PyTorch在性能上有哪些区别?

OneFlow 和 PyTorch 在性能上的区别主要体现在以下几个方面: 本篇文章的目录 分布式训练性能 硬件利用率和显存优化 模型训练速度 OneFlow:默认采用静态图模式,在模型训练前会对计算图进行编译优化,能够减少运行时的开销&…

操作系统大题整理

专题一 程序代码题:程序设计与分析,主要考的是线程,多线程的并发? 大题第一问(1)操作系统的结构有哪几种常用的结构? 宏内核:宏内核是将操作系统的主要功能模块都集中在内核的一种结…

web安全常用靶场

这里写自定义目录标题 phpstydy2018pikachuxss-labs phpstydy2018 网盘地址 提取码: nxnw ‌phpStudy是一款专为PHP开发者设计的集成环境工具,主要用于简化PHP开发环境的搭建过程。‌ 它集成了Apache、MySQL、PHP等核心组件,用户只需进行一次性安装&a…

【yolov8自卸卡车-挖掘机-装载机检测】

yolov8自卸卡车-挖掘机-装载机检测 YOLOv8算法介绍数据集和模型下载数据集准备数据配置文件(data.yaml)安装依赖模型训练步骤 YOLOv8算法介绍 YOLOv8是You Only Look Once(YOLO)算法家族的最新版本,它是一种单阶段目标…

扩散模型论文概述(二):Google系列工作【学习笔记】

视频链接:扩散模型论文概述(二):Google系列工作_哔哩哔哩_bilibili 本视频讲的是Google在图像生成的工作。 同样,第一张图片是神作,总结的太好了! 在生成式AI的时代,OpenAI和Google不…

redis常用数据类型

在Redis中,有几种数据类型是非常常用且核心的,它们各自有着独特的应用场景和优势。 1. 字符串(String): • 这是Redis中最基本、最常用的数据类型。 • 字符串可以是任何形式的二进制数据,包括文本、图片等…

【Go研究】Go语言脚本化的可行性——yaegi项目体验

0x01 背景——云计算中脚本化困境 作为云基础设施管理中,大量需要跟文件系统、容器等相关的操作,这些操作实现通常用脚本来实现。 现在探讨下,这些脚本为什么一定要用脚本语言来实现,以及目前实现中的常见的问题。 常见的两个场…

基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真,仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…

3218. 切蛋糕的最小总开销 I

3218. 切蛋糕的最小总开销 I 题目链接&#xff1a;3218. 切蛋糕的最小总开销 I 代码如下&#xff1a; class Solution { public:int minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut){ranges::sort(horizontalCut);ra…

洛谷 P3205 [HNOI2010] 合唱队

思路 先设 d p [ i ] [ j ] dp[i][j] dp[i][j] 为区间 [ i , j ] [i, j] [i,j] 的队形方案数。 考虑如何转移&#xff1a;对于区间 [ i , j ] [i, j] [i,j] 来说&#xff0c;最后一个入队的要么是 i i i&#xff0c;要么是 j j j。 所以分类讨论&#xff1a; 当 j j j …

UE5.3 虚幻引擎 Windows插件开发打包(带源码插件打包、无源码插件打包)

0 引言 随着项目体量的增大&#xff0c;所有代码功能都放一起很难管理。所以有什么办法可以将大模块划分成一个个小模块吗。当然有&#xff0c;因为虚幻引擎本身就遇到过这个问题&#xff0c;他的解决办法就是使用插件的形式开发。 例如&#xff0c;一个团队开发了文件I/O模块插…

MySQL 的事务与多版本并发控制(MVCC)的那些事

什么是事务原子性:一致性隔离性 问题1: 为什么MySQL要使用mvcc实现隔离性而不使用 锁 解决并发问题?持久性 问题2: MySQL 不是磁盘数据库吗,持久化为什么是 redo log 保证的?问题 3: redo log 储存了什么东西,持久化(崩溃恢复是怎么做的?)问题 4 : MySQL 的 bing log (二进制…

27.Java 线程间通信(synchronized 实现线程间通信、Lock 实现线程间通信)

一、线程间通信 1、概述 线程间通信的模型有两种&#xff1a;共享内存和消息传递 2、多线程编程步骤&#xff08;中&#xff09; 创建资源类&#xff0c;在资源类中创建属性和操作方法 在资源类操作方法进行判断、操作、通知 创建多个线程&#xff0c;调用资源类中的操作方…

多模态论文笔记——U-ViT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…

SpringBoot的6种API请求参数读取方式

RequestParam 用来加载URL中?之后的参数 比如: 这个请求/user?namedidspace 就可以如下面这样&#xff0c;使用RequestParam 来加载URL 中的name 参数 GetMapping("/user") ResponseBody() public User findUserByName(RequestParam("name") String n…

node.js内置模块之---http 和 https 模块

http 和 https 模块的作用 在 Node.js 中&#xff0c;http 和 https 模块用于创建和处理 HTTP 和 HTTPS 请求/响应 http模块 http 模块提供了用于实现 HTTP 协议的功能。它可以用来创建 HTTP 服务器&#xff0c;处理 HTTP 请求&#xff0c;发送 HTTP 响应&#xff0c;同时也可以…

Image和Video在同一个Dataloader中交错加载联合训练

单卡实现 本文主要从两个方面进行展开&#xff1a; &#xff11;&#xff0e;将两个或多个dataset组合成pytorch中的一个ConcatDataset&#xff0e;这个dataset将会作为pytorch中Dataloader的输入。 &#xff12;&#xff0e;覆盖重写RandomSampler修改batch产生过程&#xff…

rpm包详解

一、rpm包 1、过滤系统rpm包&#xff0c;查询已安装的包 rpm -qa | grep htop2、rpm包导出 yumdownnloader htop-2.2.0.33、查看rpm包信息 rpm -qi 包名二、rpm包列表 1、查看软件包列表 yum list available *docker*2、查看软件包依赖 # rpl仓库 yum install epel-rel…

【Adobe Acrobat PDF】Acrobat failed to connect to a DDE server.是怎么回事?

【Adobe Acrobat PDF】Acrobat failed to connect to a DDE server.是怎么回事&#xff1f; 【Adobe Acrobat PDF】Acrobat failed to connect to a DDE server.是怎么回事&#xff1f; 文章目录 【Adobe Acrobat PDF】Acrobat failed to connect to a DDE server.是怎么回事&…