自动化标签的未来:使用OpenAI Metadata Tagger轻松提取文档元数据

67 阅读3分钟

引言

在处理大量文档时,能够自动化地为文档添加结构化元数据(例如标题、语调、长度等),对于提高文档检索和相似性搜索的精准度至关重要。手动完成这些标签的添加过程往往繁琐而耗时。然而,OpenAI Metadata Tagger为我们提供了一种高效的自动化解决方案。本文将深入探讨如何使用OpenAI Metadata Tagger从文档中提取元数据,并提供详细的代码示例。

主要内容

什么是OpenAI Metadata Tagger?

OpenAI Metadata Tagger是一种文档转换工具,可以依据预定义的模式从文档中自动提取元数据。它基于OpenAI的功能链(Functions)进行配置,因此在使用自定义大语言模型实例时,必须选择支持功能的OpenAI模型。

使用前的准备

在开始使用OpenAI Metadata Tagger之前,需要确保文档是完整的,因为该工具在处理完整文档时效果最佳。在进行任何拆分或其他处理之前,建议首先使用该工具提取元数据。

定义元数据模式

定义用于提取元数据的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 Metadata Tagger提取文档元数据。

from langchain_community.document_transformers.openai_functions import (
    create_metadata_tagger,
)
from langchain_core.documents import Document
from langchain_openai import ChatOpenAI
import json

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

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

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)

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

常见问题和解决方案

1. 如何处理匿名评论者的元数据?

通过自定义提示模板,可以处理特定需求,例如将匿名评论者识别为某一知名评论者。

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template(
    """Extract relevant information from the following text.
    Anonymous critics are actually Roger Ebert.

    {input}
    """
)

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

2. 无法访问API?

由于网络限制,开发者可能需要使用API代理服务来提高访问的稳定性。请在API请求中引入代理。

总结和进一步学习资源

OpenAI Metadata Tagger通过自动化提取元数据,不仅节省了大量的时间和精力,还提高了文档管理的智能化水平。想要深入了解更多细节,请参考以下资源。

参考资料

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

---END---