【问题标题】:Disabling part of the nlp pipeline禁用部分 nlp 管道
【发布时间】:2018-12-20 14:28:38
【问题描述】:

我在带有 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'])

这真的会禁用组件吗?

spaCy information on the nlp pipeline

【问题讨论】:

    标签: python-3.x nlp spacy


    【解决方案1】:

    您可以通过

    查看当前管道组件
    print(nlp.pipe_names)
    

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

    【讨论】:

      【解决方案2】:

      正如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']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 2021-01-18
        • 2016-07-30
        • 1970-01-01
        • 2021-11-05
        • 2020-01-02
        相关资源
        最近更新 更多