NuExtract简明教程

MODEL ZOO Jan 4, 2025

NuExtract 是专为结构化提取任务而设计的专用 LLM,本文介绍如何使用NuExtract提取文本中的结构化数据。

要开始使用 NuExtract 模型解析和提取文本中的结构化数据,首先需要设置环境。这涉及安装必要的库并确保具有所需的依赖项。

1、安装 PyLLMCore

PyLLMCore 是一个开源 Python 库 (MIT),可与各种大型语言模型 (LLM) 交互,并提供用于解析和提取数据的简单 API。要安装 PyLLMCore,请在终端中运行以下命令:

# You need Python 3.10
python3 -m venv venv
source venv/bin/activate

# Important: Some versions need to be pinned
pip3 install py-llm-core==2.8.15
pip3 install mistralai==0.4.2

2、下载 NuExtract 模型

NuExtract 是专为结构化提取任务而设计的专用 LLM。你可以从 Hugging Face 下载 NuExtract 模型。对于此示例,我们将使用 NuExtract-tiny 模型。运行以下命令下载并存储模型:

mkdir -p ~/.cache/py-llm-core/models
cd ~/.cache/py-llm-core/models
wget -O nuextract-tiny https://huggingface.co/advanced-stack/NuExtract-tiny-GGUF/resolve/main/nuextract-tiny-f16.gguf?download=true

3、导入所需的库

下载模型后,你现在可以在 Python 脚本中导入必要的库:

from dataclasses import dataclass, field
from llm_core.parsers import NuExtractParser
要使用 NuExtract 模型从文本中解析和提取结构化数据,需要定义一个数据类来表示要提取的数据的结构。 PyLLMCore 将使用此数据类为提取过程生成 JSON 模式。

4、定义数据类

对于此示例,让我们创建一个产品数据类,其中包含产品名称、价格和说明字段:

from dataclasses import dataclass

@dataclass
class Product:
    name: str = ""
    price: str = ""
    description: str = ""

5、加载和解析文本

接下来,你需要加载要解析和提取数据的文本。对于此示例,我们将使用示例产品描述:

text = """
Introducing the new SuperWidget! This innovative gadget is priced at .99 and offers a range of features to make your life easier. With its sleek design and user-friendly interface, the SuperWidget is perfect for tech enthusiasts and casual users alike.
"""

6、使用 NuExtract 解析文本

最后,你可以使用 NuExtractParser 类解析文本并提取结构化数据:

from llm_core.parsers import NuExtractParser

with NuExtractParser(Product) as parser:
    product = parser.parse(text)
    print(product)

输出将是包含提取数据的 Product 数据类的实例:

Product(
    name='SuperWidget',
    price='.99',
    description='This innovative gadget offers a range of features to make your life easier. With its sleek design and user-friendly interface, the SuperWidget is perfect for tech enthusiasts and casual users alike.'
)
为了展示 NuExtract 的强大功能,让我们解析包含多个产品的文本。我们将扩展我们的产品数据类以包含产品列表并解析更复杂的文本。

7、定义扩展数据类

我们将创建一个包含产品实例列表的 Catalog 数据类:

@dataclass
class Catalog:
    products: list[Product] = field(default_factory=lambda: [Product()])

8、加载和解析扩展文本

现在,让我们加载包含多个产品描述的文本:

text = """
Introducing the new SuperWidget! This innovative gadget is priced at .99 and offers a range of features to make your life easier. With its sleek design and user-friendly interface, the SuperWidget is perfect for tech enthusiasts and casual users alike.

Check out the MegaGizmo! At just 2.59, this device packs a punch with its powerful performance and compact size. Ideal for on-the-go professionals and students, the MegaGizmo is a must-have.

Don't miss the UltraTool! Priced at 3.49, this versatile tool is perfect for DIY enthusiasts and professionals. With its robust build and multiple functionalities, the UltraTool is your go-to solution for any task.
"""

9、使用 NuExtract 解析扩展文本

最后,使用 NuExtractParser 类解析文本并提取结构化数据:

with NuExtractParser(Catalog) as parser:
    catalog = parser.parse(text)
    for product in catalog.products:
        print(product)

输出将是包含提取数据的 Product 实例列表:

Product(
    name='SuperWidget',
    price='.99',
    description='This innovative gadget offers a range of features to make your life easier. With its sleek design and user-friendly interface, the SuperWidget is perfect for tech enthusiasts and casual users alike.'
)
Product(
    name='MegaGizmo',
    price='2.59',
    description='This device packs a punch with its powerful performance and compact size. Ideal for on-the-go professionals and students, the MegaGizmo is a must-have.'
)
Product(
    name='UltraTool',
    price='3.49',
    description='This versatile tool is perfect for DIY enthusiasts and professionals. With its robust build and multiple functionalities, the UltraTool is your go-to solution for any task.'
)

10、结束语

使用 NuExtract 模型,你可以轻松地在本地解析和提取非结构化文本中的结构化数据,因为该模型非常小。特别感谢 NuMind 发布 NuExtract 模型系列,使结构化提取更易于访问和高效。


原文链接:Use NuExtract to parse unstructured text locally in less than 5 min

汇智网翻译整理,转载请标明出处

Tags