禁用部分nlp管道

时间:2018-12-20 14:28:38

标签: python-3.x spacy

我正在使用python3的Windows框上运行spaCyv2.x。我没有管理员特权,因此我必须将管道称为:

nlp = en_core_web_sm.load()

当我在* nix框上运行相同的脚本时,可以将管道加载为:

nlp = spacy.load('en', disable = ['ner', 'tagger', 'parser', 'textcat'])

我所要做的只是标记化,因此我不需要整个管道。在Windows框上,如果我像这样加载管道:

nlp = en_core_web_sm.load(disable = ['ner', 'tagger', 'parser', 'textcat'])

实际上禁用了这些组件吗?

spaCy information on the nlp pipeline

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式检查当前管道组件

print(nlp.pipe_names)

如果您对输出不满意,则可以尝试使用组件手动检查并尝试打印输出。例如,尝试禁用解析器并打印依赖项标签。

答案 1 :(得分:1)

正如documentation所说,您可以删除管道的某些部分而无需加载它。默认的en_core_web_sm模型具有以下管道:

   import spacy
   nlp = spacy.load('en_core_web_sm')
   print(nlp.pipe_names)
   ['tagger', 'parser', 'ner']

所以代替:

    nlp = spacy.load('en_core_web_sm', disable = ['ner', 'tagger', 'parser'])
    print(nlp.pipe_names)
    []

您可以这样做:

    nlp = spacy.load('en_core_web_sm')
    nlp.disable_pipes('ner', 'tagger', 'parser')
    print(nlp.pipe_names)
    []

或者如果您只需要删除一个管道:

    nlp = spacy.load('en_core_web_sm')
    nlp.remove_pipe('ner')
    print(nlp.pipe_names)
    ['tagger', 'parser']