禁用部分 nlp 管道

Bri*_*itt 8 nlp python-3.x spacy

我在带有 python3 的 Windows 机器上运行 spaCy v2.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'])

这实际上会禁用组件吗?

nlp 管道上的 spaCy 信息

Ami*_*mir 13

正如文档所述,您可以删除管道的一部分而不加载它。默认en_core_web_sm模型有以下管道:

   import spacy
   nlp = spacy.load('en_core_web_sm')
   print(nlp.pipe_names)
   ['tagger', 'parser', 'ner']
Run Code Online (Sandbox Code Playgroud)

所以而不是:

    nlp = spacy.load('en_core_web_sm', disable = ['ner', 'tagger', 'parser'])
    print(nlp.pipe_names)
    []
Run Code Online (Sandbox Code Playgroud)

你可以做:

    nlp = spacy.load('en_core_web_sm')
    nlp.disable_pipes('ner', 'tagger', 'parser')
    print(nlp.pipe_names)
    []
Run Code Online (Sandbox Code Playgroud)

或者,如果您只需要拆除一根管道:

    nlp = spacy.load('en_core_web_sm')
    nlp.remove_pipe('ner')
    print(nlp.pipe_names)
    ['tagger', 'parser']
Run Code Online (Sandbox Code Playgroud)

  • 从 Spacy 3.0 开始,“disable_pipes”已重命名为“select_pipes”。`nlp.disable_pipes('ner', 'tagger', 'parser')` 现在将写为 `nlp.select_pipes(disable=["ner", "tagger", "parser"])` (2认同)

0x5*_*050 8

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

print(nlp.pipe_names)
Run Code Online (Sandbox Code Playgroud)

如果您不相信输出,您可以通过尝试使用组件来手动检查并尝试打印输出。例如,尝试禁用解析器并打印依赖项标签。