在Spacy中创建和加载自定义管道



我需要在多页文档上运行一个NLP管道。文本分类器对前N个句子进行操作,并根据文本分类器的输出,需要向管道中添加新的自定义元素。我当然可以用新元素重新启动管道,但这需要从一开始就重新运行所有内容(标记器、句子化器等(。

是否可以捕获管道的状态(例如,doc对象(,修改管道,并使用新管道及其新元素继续它的剩余位置?

对于这种情况,推荐的方法是什么?

谢谢

我不认为你可以在没有标记器的情况下创建管道,也不可以在管道中间停止/启动,但因为所有非标记器组件都会获取和修改Doc,所以你可以加载一个带有所有可能使用的组件的管道,然后根据需要调用每个组件:

nlp = spacy.load('en')
# nlp.make_doc() is equivalent to nlp.tokenizer()
doc = nlp.make_doc("This is a sentence.")
# there are shortcuts for default model components
nlp.tagger(doc)
nlp.parser(doc)
nlp.ner(doc)
# but you can access any component with nlp.get_pipe(), also "tagger", etc.
nlp.get_pipe("your_component_name")(doc)
nlp.get_pipe("tagger")(doc)

API不会阻止您尝试,但您不希望应用作为不同于用于创建Doc的管道的一部分加载的组件,因为当Doc和组件不共享相同的vocab时,您可能会遇到问题。

最新更新