# Laurium：使用大语言模型从非结构化文本中提取结构化数据

> Laurium是英国司法部开源的Python工具包，专门用于使用大语言模型从自由文本中提取结构化数据并生成合成数据，支持本地Ollama和云端AWS Bedrock等多种LLM后端，通过提示工程可适配不同用例，帮助组织挖掘文本数据中隐藏的价值。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-09T09:11:36.000Z
- 最近活动: 2026-04-09T09:21:25.387Z
- 热度: 163.8
- 关键词: 文本提取, 结构化数据, 大语言模型, Ollama, AWS Bedrock, 情感分析, Python工具包, 开源, 数据挖掘, NLP
- 页面链接: https://www.zingnex.cn/forum/thread/laurium
- Canonical: https://www.zingnex.cn/forum/thread/laurium
- Markdown 来源: ingested_event

---

# Laurium：使用大语言模型从非结构化文本中提取结构化数据

## 项目背景与起源

在当今数据驱动的决策环境中，组织收集了大量的自由文本数据——客户反馈、支持工单、调查回复、社交媒体评论等。这些数据蕴含着宝贵的洞察，但由于其非结构化特性，往往难以进行量化分析和系统性挖掘。传统的人工标注方法不仅成本高昂，而且无法处理大规模数据集。

Laurium正是为解决这一痛点而生。这个由英国司法部（Ministry of Justice）分析服务团队开发的开源Python包，提供了一套完整的工具链，用于使用大语言模型将非结构化文本转换为结构化数据。该项目起源于BOLD Families项目的工作，该项目致力于估算英国有多少儿童的父母在监狱服刑。

## 核心能力与应用场景

Laurium的设计目标是让组织能够解锁隐藏在文本数据中的价值。以一个典型的客户反馈为例："登录系统崩溃了，我丢失了所有工作！"这句话包含了丰富的信息：情感倾向（负面）、紧急程度（高）、责任部门（IT部门）、是否需要采取行动（是）。

Laurium可以自动提取并结构化这些信息，输出如下表格形式：

```
                                            text sentiment  urgency department action_required
The login system crashed and I lost all my work!  negative        5         IT             yes
```

这种能力可以扩展到人工无法审查和标注的海量数据集，为数据驱动的决策提供定量分析基础。

## 技术架构与设计理念

### 模块化设计

Laurium采用高度模块化的架构，核心组件包括：

1. **LLM接口层**：支持多种大语言模型后端，包括本地Ollama和云端AWS Bedrock等
2. **提示工程模块**：提供灵活的提示模板系统，支持系统消息、示例和动态查询构建
3. **输出解析器**：基于Pydantic的动态模型生成，确保LLM输出符合预期的结构化格式
4. **批处理引擎**：高效处理大规模数据集，支持分块处理以管理内存和API限制

### 双模式功能集

Laurium提供两套功能集以适应不同用户需求：

- **核心功能**（默认包含）：使用大语言模型进行文本提取和分析
- **高级机器学习功能**（可选）：支持基于编码器模型的微调和训练

这种分层设计使得大多数用户可以快速上手使用LLM功能，而需要更深度定制的用户则可以启用高级功能。

## 多后端LLM支持

### 本地模型：Ollama集成

对于注重隐私和成本控制的用户，Laurium提供与Ollama的无缝集成：

```python
from laurium.decoder_models import llm

sentiment_llm = llm.create_llm(
    llm_platform="ollama", 
    model_name="qwen2.5:7b", 
    temperature=0.0
)
```

使用Ollama的优势包括：
- 无API成本和速率限制
- 数据完全本地处理，保护隐私
- 离线可用

### 云端模型：AWS Bedrock支持

对于需要更强大模型能力的场景，Laurium支持AWS Bedrock服务：

```python
sentiment_llm = llm.create_llm(
    llm_platform="bedrock",
    model_name="anthropic.claude-3-haiku-20240307-v1:0",
    temperature=0.0,
    aws_region_name="eu-west-1",
)
```

### 开放生态：LangChain兼容

Laurium与LangChain生态系统兼容，可以使用任何LangChain提供的聊天模型。例如，与llama.cpp的集成：

```python
from langchain_community.chat_models import ChatLlamaCpp

sentiment_llm = ChatLlamaCpp(
    temperature=0.0,
    model_path="path/to/a/local/model.gguf",
)
```

## 实际使用示例：情感分析流水线

以下是一个完整的情感分析流水线示例，展示了Laurium的核心工作流程：

```python
from laurium.decoder_models import llm, prompts, pydantic_models, extract
from langchain_core.output_parsers import PydanticOutputParser
import pandas as pd
from typing import Literal

# 1. 创建LLM实例
sentiment_llm = llm.create_llm(
    llm_platform="ollama", 
    model_name="qwen2.5:7b", 
    temperature=0.0
)

# 2. 定义输出模式
schema = {"ai_label": Literal[0, 1]}  # 1表示正面，0表示负面
descriptions = {
    "ai_label": "情感分类（1=正面，0=负面）"
}

# 3. 构建提示
system_message = prompts.create_system_message(
    base_message="你是情感分析助手。使用1表示正面情感，0表示负面情感。",
    keywords=["positive", "negative"],
)

extraction_prompt = prompts.create_prompt(
    system_message=system_message,
    examples=None,
    final_query="分析这段文本：{text}",
    schema=schema,
    descriptions=descriptions,
)

# 4. 创建Pydantic模型
OutputModel = pydantic_models.make_dynamic_example_model(
    schema=schema, 
    descriptions=descriptions, 
    model_name="SentimentOutput"
)

# 5. 创建提取器并处理数据
parser = PydanticOutputParser(pydantic_object=OutputModel)
extractor = extract.BatchExtractor(
    llm=sentiment_llm, 
    prompt=extraction_prompt, 
    parser=parser
)

data = pd.DataFrame({
    "text": [
        "我绝对喜欢这个产品！",
        "这太糟糕了，最差的购买体验。",
        "物超所值，强烈推荐！",
    ]
})

results = extractor.process_chunk(data, text_column="text")
print(results.to_string(index=False))
```

输出结果：
```
                                    text  ai_label
         我绝对喜欢这个产品！         1
  这太糟糕了，最差的购买体验。         0
    物超所值，强烈推荐！         1
```

## 多字段提取能力

Laurium不仅支持单一字段提取，还能同时提取多个结构化字段：

```python
from typing import Literal

# 定义复杂输出模式
schema = {
    "sentiment": Literal["positive", "negative", "neutral"],
    "urgency": Literal[1, 2, 3, 4, 5],
    "department": Literal["IT", "Sales", "Support"],
    "action_required": Literal["yes", "no"],
}

descriptions = {
    "sentiment": "客户反馈的情感倾向",
    "urgency": "问题紧急程度，1-5分",
    "department": "负责处理该问题的部门",
    "action_required": "是否需要立即采取行动",
}
```

通过一次LLM调用，即可从单条文本中提取所有相关字段，大幅提升处理效率。

## 安装与部署

Laurium支持从PyPI和GitHub直接安装，并提供uv和pip两种安装方式：

### 标准安装（推荐）

使用uv：
```bash
uv add laurium https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl
```

使用pip：
```bash
pip install laurium https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl
```

### 高级安装（含编码器功能）

```bash
uv add laurium[encoder]
uv add https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl
```

## 政府背景与可信度

作为英国司法部官方开源项目，Laurium具有以下可信特征：

1. **生产环境验证**：已在真实的政府数据分析项目中投入使用
2. **安全合规**：设计时考虑了政府数据的隐私和安全要求
3. **长期维护**：作为官方工具，有持续的维护和支持保障
4. **开放透明**：完全开源，代码可审计，无后门风险

对于需要在敏感环境中处理文本数据的企业和组织，Laurium提供了一个经过验证的可靠选择。

## 适用场景与价值主张

Laurium特别适合以下场景：

1. **客户反馈分析**：自动分类和分析大量客户评论，识别关键问题和改进机会
2. **支持工单处理**：提取工单中的关键信息，自动路由到相应部门并设定优先级
3. **调查研究**：从开放式问卷回答中提取结构化洞察
4. **舆情监控**：分析社交媒体和新闻文本，追踪公众情感变化
5. **合规审查**：从文档中提取关键合规信息，支持审计和报告

通过将LLM的强大理解能力与结构化的数据提取框架相结合，Laurium为组织提供了一个可扩展、可定制、成本可控的文本智能解决方案。

## 总结与展望

Laurium代表了政府机构在AI工具开源化方面的积极尝试。它不仅提供了一个实用的文本提取工具，更展示了如何将大语言模型的能力封装成易于使用、可生产部署的解决方案。对于需要从非结构化文本中挖掘价值的组织而言，Laurium是一个值得认真评估的选择。
