【发布时间】:2022-06-24 12:00:28
【问题描述】:
我想在 spaCy 中创建一个使用预训练的 Thinc 模型的自定义管道组件。我想修改来自 Thinc 的输出预测,然后将修改后的值传递回管道,即有效地修改 ner 管道组件。
我正在考虑通过自定义管道组件执行此操作,例如:
from spacy.language import Language
@Language.component(\"my_ner\")
def my_ner(doc):
class_probabilities = thinc_do_something(data, model, num_samples)
class_value = np.argmax(class_probabilities, axis=1)
return doc
nlp = spacy.load(\"en_core_web_sm\", exclude=[\"ner\"])
nlp.add_pipe(\"my_ner\", after=\"parser\") # Insert after the parser
print(nlp.pipe_names) # [\'tagger\', \'parser\', \'my_ner\']
doc = nlp(\"This is a sentence.\")
我的目标是让管道按照原始 ner 组件运行,但使用我的自定义 ner 组件修改类概率。不幸的是,我从 spaCy 文档中无法理解:
- 如何从管道内部访问预训练模型?
- 如何访问管道内用于模型预测的数据?
- 作为修改后的 ner 管道的一部分,我需要将模型预测值写回到哪里?
- 有更好的方法吗?