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

我需要在多页文档上运行NLP管道。文本分类器对前N个句子进行操作,并且基于文本分类器的输出,需要将新的自定义元素添加到管道中。我当然可以使用新元素重新启动管道,但是它需要从头开始重新运行所有内容(令牌生成器,哨兵生成器等)。

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

在这种情况下,推荐的方法是什么?

谢谢

zjwmomo 回答:在Spacy中创建和加载自定义管道

我不认为您可以在没有令牌生成器的情况下创建管道,也不能在管道中间停止/启动,但是由于所有非令牌生成器组件都采用并修改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时。

本文链接:https://www.f2er.com/3128154.html

大家都在问