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

如何为TextCategorizer训练创建黄金数据?GoldParse格式咨询

嘿,我来帮你理清楚这个问题!

为TextCategorizer创建黄金数据&生成GoldParse对象指南

一、黄金数据的核心思路

黄金数据本质是标注好正确标签的样本集合,spaCy里通常用GoldParse对象来存储单篇文档的标注信息——它会把文本对应的正确分类标签和文档绑定,供模型训练时计算损失、调整参数。

简单来说,你需要为每一条训练文本做两步:

  • 先用spaCy的nlp对象处理成Doc实例
  • 再用GoldParse给这个Doc打上正确的分类标签(通过cats参数指定)

二、针对你的具体示例的代码实现

你猜测的没错,gold1和gold2确实是GoldParse对象,下面直接给你对应示例的代码:

首先确保导入需要的模块:

import spacy
from spacy.gold import GoldParse

然后针对你的样本生成对应的Doc和GoldParse:

# 初始化nlp(用空模型或者预训练模型都可以,训练TextCategorizer的话空模型更灵活)
nlp = spacy.blank("en")

# 第一个样本:文本"The door is brown.",标签COLOR
doc1 = nlp("The door is brown.")
# GoldParse的cats参数是字典,键是标签名,值为1.0表示该文档属于这个标签,0.0表示不属于
gold1 = GoldParse(doc1, cats={"COLOR": 1.0, "ANIMAL": 0.0})

# 第二个样本:文本"The horse is running.",标签ANIMAL
doc2 = nlp("The horse is running.")
gold2 = GoldParse(doc2, cats={"ANIMAL": 1.0, "COLOR": 0.0})

补充说明:

  • 如果是多分类任务(多个标签可能同时存在),你可以把对应标签的值设为1.0,其他为0.0;如果是单分类(每个文档只属于一个标签),同样用这种方式标注即可。
  • 训练的时候,你需要把(doc, gold)这样的对组成训练数据集,比如:
TRAIN_DATA = [
    (doc1, gold1),
    (doc2, gold2),
    # 把你剩下的4个样本也按同样方式添加进来
    (nlp("The barn is red."), GoldParse(nlp("The barn is red."), cats={"COLOR":1.0, "ANIMAL":0.0})),
    (nlp("The flower is yellow."), GoldParse(nlp("The flower is yellow."), cats={"COLOR":1.0, "ANIMAL":0.0})),
    (nlp("The fish is jumping."), GoldParse(nlp("The fish is jumping."), cats={"ANIMAL":1.0, "COLOR":0.0})),
    (nlp("The chicken is asleep."), GoldParse(nlp("The chicken is asleep."), cats={"ANIMAL":1.0, "COLOR":0.0})),
]

这样你就可以把这个TRAIN_DATA用到TextCategorizer的训练流程里啦。

内容的提问来源于stack exchange,提问作者W.P. McNeill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:35:51