使用OpenAI Metadata Tagger自动化文档元数据提取

引言

在现代数据驱动的世界中,文档的数量和种类繁多,如何有效管理和搜索这些文档成为了一项重要任务。为文档添加结构化元数据,例如标题、语气或长度,可以提高后续相似性搜索的效率。但当文档数量庞大时,手动标记过程既耗时又乏味。为了解决这个问题,OpenAI Metadata Tagger 提供了一种自动化方法,通过预定义的模式从文档中提取元数据。

本文将深入介绍如何使用 OpenAI Metadata Tagger 自动化提取文档元数据,提供实用知识和代码示例,并讨论可能遇到的挑战和解决方案。

主要内容

OpenAI Metadata Tagger 简介

OpenAI Metadata Tagger 是一个文档转换器,它使用可配置的 OpenAI Functions 驱动的链来从文档中提取元数据。开发者需要将完整的文档输入到此转换器中,以确保提取的准确性。

配置元数据模式

首先,需要定义一个有效的 JSON Schema 对象,描述文档中需要提取的元数据字段。

schema = {
    "properties": {
        "movie_title": {"type": "string"},
        "critic": {"type": "string"},
        "tone": {"type": "string", "enum": ["positive", "negative"]},
        "rating": {
            "type": "integer",
            "description": "The number of stars the critic rated the movie",
        },
    },
    "required": ["movie_title", "critic", "tone"],
}

使用 OpenAI 模型

使用支持函数的 OpenAI 模型,例如 gpt-3.5-turbo-0613,构建文档转换器:

from langchain_openai import ChatOpenAI

# 使用 API 代理服务提高访问稳定性
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")

创建文档转换器

使用预定义的模式和 LLM 模型来创建文档转换器:

from langchain_community.document_transformers.openai_functions import (
    create_metadata_tagger,
)

document_transformer = create_metadata_tagger(metadata_schema=schema, llm=llm)

处理文档

将文档传递给转换器,提取元数据:

from langchain_core.documents import Document

original_documents = [
    Document(
        page_content="Review of The Bee Movie\nBy Roger Ebert\n\nThis is the greatest movie ever made. 4 out of 5 stars."
    ),
    Document(
        page_content="Review of The Godfather\nBy Anonymous\n\nThis movie was super boring. 1 out of 5 stars.",
        metadata={"reliable": False},
    ),
]

enhanced_documents = document_transformer.transform_documents(original_documents)

代码示例

以下代码展示如何将提取的元数据附加到原始文档中,并打印结果:

import json

print(
    *[d.page_content + "\n\n" + json.dumps(d.metadata) for d in enhanced_documents],
    sep="\n\n---------------\n\n",
)

输出示例:

Review of The Bee Movie
By Roger Ebert

This is the greatest movie ever made. 4 out of 5 stars.

{"movie_title": "The Bee Movie", "critic": "Roger Ebert", "tone": "positive", "rating": 4}

---------------

Review of The Godfather
By Anonymous

This movie was super boring. 1 out of 5 stars.

{"movie_title": "The Godfather", "critic": "Anonymous", "tone": "negative", "rating": 1, "reliable": false}

常见问题和解决方案

  • 使用API代理服务:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。

  • 文档完整性:确保文档在分割或预处理之前完整传递给转换器,以提高提取准确性。

  • 自定义提取:如需根据特定需求自定义提取过程,可以通过自定义提示调整LLM的行为。

总结与进一步学习资源

OpenAI Metadata Tagger 为自动化文档元数据提取提供了强大工具,可以显著提高文档管理的效率。开发者可以通过定制提取过程来满足特定业务需求。

参考资料

  • LangChain 官方文档
  • OpenAI API 参考文献

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值