要使用 OpenAI 从非结构化文本中提取结构化数据,您可以利用 API 的自然语言处理能力,结合有针对性的提示和结构化输出格式。主要方法是将非结构化文本发送到 OpenAI 的模型(如 GPT-3.5 或 GPT-4),并明确指示其解析数据并以特定格式(如 JSON)返回。例如,如果您有一个产品评论,例如“电池续航 10 小时,屏幕为 6.5 英寸”,您可以提示模型提取特征(例如,“电池寿命”、“屏幕尺寸”)及其值作为键值对。然后,该模型可以返回结构化的 JSON,例如 {"battery_life": "10 hours", "screen_size": "6.5 inches"}
。 这是因为该模型理解上下文,并且即使措辞不同也可以识别实体。
要实现此目的,您将使用 OpenAI API 的 ChatCompletion 端点。 首先,编写一个系统消息来定义任务,例如“从用户的文本中提取产品特征及其值并返回 JSON”。 然后,包含带有非结构化文本的用户消息。 为了获得更好的一致性,请使用函数调用(API 中的一项功能)来指定您期望的 JSON 模式。 例如,定义一个函数参数,以强制执行如下结构:{"type": "object", "properties": {"feature": {"type": "string"}, "value": {"type": "string"}}}
。这减少了歧义,并引导模型与您的架构保持一致。您还可以调整诸如 temperature
(较低的值,如 0.2,使输出更具确定性)和 max_tokens
之类的参数来控制响应长度。 使用各种输入进行测试有助于改进提示 - 例如,通过添加诸如“如果未提及某个功能,则返回 null”之类的说明来处理缺少的数据。
关键考虑因素包括验证和错误处理。即使使用清晰的提示,该模型有时也可能返回无效的 JSON 或遗漏细微的细节。 使用 JSON 解析器来捕获语法错误并实现重试或回退逻辑。 对于复杂的任务,可以预处理文本(例如,拆分大型文档)或链接多个 API 调用 - 首先识别实体,然后提取详细信息。 成本是另一个因素:处理数千个文本片段可能会增加成本,因此可以通过批量处理请求或缓存结果来优化。 最后,使用测试数据集评估性能,以衡量准确性并迭代调整提示。 例如,如果模型将“轻量级”错误地解释为物理重量而不是隐喻,请使用诸如“将 ‘轻量级’ 之类的形容词视为名为 ‘重量’ 的功能,其值为 ‘轻量级’”之类的示例来阐明提示。 这种清晰的说明、架构实施和测试的平衡可确保可靠的提取。