You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确定义基于GPT-3.5/LLama2的spacy-llm自定义无监督分类任务

使用spaCy-LLM结合GPT-3.5/Llama2实现无监督分类任务示例

核心需求明确

你需要从给定文本中提取目标实体集合,示例输入:

"The Basilica of San Petronio is a minor basilica and church of the Archdiocese of Bologna located in Bologna, Emilia Romagna, northern Italy."
期望输出:{"Basilica of San Petronio", "minor basilica"}

GPT-3.5 实现示例

1. 环境配置

确保安装依赖:

pip install spacy spacy-llm openai

2. spaCy 配置文件(config.cfg)

[nlp]
lang = "en"
pipeline = ["llm"]

[components]

[components.llm]
factory = "llm"

[components.llm.model]
@llm_models = "spacy.GPT-3.5.v1"
api_key = "你的OpenAI API密钥"

[components.llm.task]
@llm_tasks = "spacy.TextCat.v3"
labels = []  # 无监督场景不预设标签
prompt = """从以下文本中提取所有属于教堂/宗教建筑类别的实体名称,返回格式为Python集合,只输出集合内容,不要其他解释:
文本:{{text}}"""

3. 运行代码

import spacy
from spacy_llm.util import assemble

def extract_entities(text):
    nlp = assemble("config.cfg")
    response = nlp.get_pipe("llm").model.predict([text])
    # 解析LLM返回的字符串为集合
    return eval(response[0])

result = extract_entities("The Basilica of San Petronio is a minor basilica and church of the Archdiocese of Bologna located in Bologna, Emilia Romagna, northern Italy.")
print(result)

Llama2 实现示例(本地部署)

1. 环境配置

安装额外依赖:

pip install spacy spacy-llm transformers accelerate

2. spaCy 配置文件(config_llama2.cfg)

[nlp]
lang = "en"
pipeline = ["llm"]

[components]

[components.llm]
factory = "llm"

[components.llm.model]
@llm_models = "spacy.Llama2.v1"
name = "meta-llama/Llama-2-7b-chat-hf"
token = "你的Hugging Face访问令牌"

[components.llm.task]
@llm_tasks = "spacy.TextCat.v3"
labels = []
prompt = """从以下文本中提取所有属于教堂/宗教建筑类别的实体名称,返回格式为Python集合,只输出集合内容,不要其他解释:
文本:{{text}}"""

3. 运行代码

import spacy
from spacy_llm.util import assemble

def extract_entities_llama(text):
    nlp = assemble("config_llama2.cfg")
    response = nlp.get_pipe("llm").model.predict([text])
    return eval(response[0])

result = extract_entities_llama("The Basilica of San Petronio is a minor basilica and church of the Archdiocese of Bologna located in Bologna, Emilia Romagna, northern Italy.")
print(result)

关键优化点

  • Prompt 精准性:明确指定提取类别(教堂/宗教建筑)和输出格式(Python集合),避免LLM返回冗余内容
  • 任务适配:无监督分类场景下,不要预设labels,让LLM完全根据Prompt提取目标内容
  • 输出解析:直接解析LLM返回的字符串为Python集合,跳过TextCat默认的概率计算逻辑

优质参考方向

  • spaCy-LLM官方文档:重点关注llm组件的自定义任务配置和模型适配章节
  • Hugging Face Transformers与spaCy集成指南:学习本地LLM模型的加载和参数调优
  • Prompt工程最佳实践:针对实体提取类任务,优化指令的明确性和约束性

内容的提问来源于stack exchange,提问作者ascimenti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:35:17