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

如何处理doccano-transformer输出的generator对象并转换为spaCy格式?

解决doccano-transformer返回generator而非spaCy对象的问题

dataset.to_spacy()方法返回生成器(generator)是设计使然——为了在处理大规模数据集时节省内存,它会逐个生成spaCy的Doc对象,而非一次性把所有数据加载到内存中。要转换成可用的spaCy格式,有以下几种方式:

1. 转换成spaCy Doc对象列表(小数据集适用)

如果你的数据集规模不大,可以直接用list()把生成器转换成包含spaCy Doc对象的列表:

spacy_docs = list(dataset.to_spacy(tokenizer=str.split))

此时spacy_docs中的每个元素都是标准的spaCy Doc对象,可直接用于后续的预处理、模型训练等操作。

2. 保存为spaCy二进制格式(推荐用于持久化)

如果需要把标注数据保存成spaCy官方支持的二进制格式,方便后续加载和使用,可以借助DocBin工具:

from spacy.tokens import DocBin

# 初始化DocBin
doc_bin = DocBin()
# 遍历生成器,将每个Doc对象添加到DocBin中
for doc in dataset.to_spacy(tokenizer=str.split):
    doc_bin.add(doc)
# 保存到磁盘
doc_bin.to_disk("./annotated_data.spacy")

之后要加载数据时,只需:

import spacy

nlp = spacy.load("en_core_web_sm")  # 加载对应语言的spaCy模型
docs = list(nlp.pipe(doc_bin.get_docs(nlp.vocab)))

3. 直接遍历生成器处理(大数据集适用)

如果数据集规模较大,不想占用过多内存,无需转换格式,直接遍历生成器逐个处理即可:

for doc in dataset.to_spacy(tokenizer=str.split):
    # 在这里对每个Doc对象执行操作,比如训练、分析等
    process_doc(doc)

内容的提问来源于stack exchange,提问作者Pierre-Antoine Schnell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:29:59