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

Spacy官方文档Transformers示例代码AttributeError报错问题咨询

问题原因与结论

这属于spaCy官方示例代码的疏漏,Transformer组件不会自动注册你自定义的扩展属性。

spaCy的自定义属性机制要求,所有要通过._.访问的Doc/Token/Span级扩展属性,必须提前通过对应的set_extension方法显式注册,没有针对transformer组件的特殊自动注册规则。官方示例省略了属性注册的前置步骤,才会运行抛出E047错误。

你补充Doc.set_extension('custom_attr', default=True)的解决方法是完全正确的,为了避免多次运行代码时出现重复注册的报错,建议补充属性存在性判断,完整可运行代码如下:

import spacy
from spacy.tokens import Doc
from spacy_transformers import TransformerData
from thinc.api import set_gpu_allocator, require_gpu

# 新增属性注册逻辑
if not Doc.has_extension("custom_attr"):
    Doc.set_extension("custom_attr", default=None)

def custom_annotation_setter(docs, trf_data):
    doc_data = list(trf_data.doc_data)
    for doc, data in zip(docs, doc_data):
        doc._.custom_attr = data


nlp = spacy.load("en_core_web_trf")
nlp.get_pipe("transformer").set_extra_annotations = custom_annotation_setter
doc = nlp("This is a text")
assert isinstance(doc._.custom_attr, TransformerData)
print(doc._.custom_attr.tensors)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:09:01