【发布时间】:2021-08-06 15:26:42
【问题描述】:
在 Spacy 的最新文档中,以下链接给出了以下示例:
https://spacy.io/usage/embeddings-transformers
import spacy
from spacy.tokens import Doc
from spacy_transformers import TransformerData
from thinc.api import set_gpu_allocator, require_gpu
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)
这段代码在尝试处理测试数据时抛出异常:
AttributeError: [E047] 无法为未注册的扩展属性“custom_attr”赋值。忘记调用set_extension 方法了吗?
我使用以下方式设置扩展名:
Doc.set_extension('custom_attr', default=True)
我的问题是,Transform 类应该自己处理添加这个特殊扩展(如示例代码中所暗示的那样),还是这只是示例中的一个错误?
【问题讨论】:
标签: transformer code-documentation spacy-3 spacy-transformers