spaCy:如何为此使用一些加载模型将命名实体写入现有 Doc 对象?

spaCy: How to write named entities to an existing Doc object using some loaded model for this?

我根据如下文档从自定义令牌列表创建了一个 Doc 对象:

import spacy
from spacy.tokens import Doc

nlp = spacy.load("my_ner_model")
doc = Doc(nlp.vocab, words=["Hello", ",", "world", "!"])

现在如何使用我的 NER 模型将命名实体标签写入 doc

我试过 doc = nlp(doc),但我没有成功 TypeError

我不能像往常一样将我的单词列表加入纯文本来做 doc = nlp(text) 因为在这种情况下 spaCy 将我文本中的一些单词分成两个我不能做的标记接受。

您可以从您加载的模型中获取 NER 组件,并直接在构建的模型上调用它 Doc:

doc = nlp.get_pipe("ner")(doc)

您可以使用 nlp.pipe_names 检查管道中所有可用组件的列表,并以这种方式单独调用它们。当您调用 nlp() 时,tokenizer 始终是管道的第一个元素,它不包含在此列表中,该列表仅包含同时采用 return 和 Doc 的组件。