使用 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 os
from 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_URL
和 OPENAI_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 模型来从文本中提取结构化标签。这种方法可以广泛应用于各种信息提取任务中,如人事管理、技术文档分析等。希望本文对你有所帮助,欢迎在评论区分享你的使用体验和问题。