【问题标题】:spaCy nlp pipeline order of operationsspaCy nlp 管道操作顺序
【发布时间】:2018-09-28 14:03:38
【问题描述】:

谁有按时间顺序排列的操作列表

import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(text)

我可以用nlp.pipe_names查看主要组件

['tagger', 'parser', 'ner']

以及按字母顺序排列的工厂运营列表,nlp.factories

{'merge_entities': <function spacy.language.Language.<lambda>>,
 'merge_noun_chunks': <function spacy.language.Language.<lambda>>,
 'ner': <function spacy.language.Language.<lambda>>,
 'parser': <function spacy.language.Language.<lambda>>,
 'sbd': <function spacy.language.Language.<lambda>>,
 'sentencizer': <function spacy.language.Language.<lambda>>,
 'similarity': <function spacy.language.Language.<lambda>>,
 'tagger': <function spacy.language.Language.<lambda>>,
 'tensorizer': <function spacy.language.Language.<lambda>>,
 'textcat': <function spacy.language.Language.<lambda>>,
 'tokenizer': <function spacy.language.Language.<lambda>>}

但我不知道何时调用 lemmatizer。 词形还原必须在 tokenizationPOS 标记 之后进行,并且它将在 parserner 禁用的情况下运行。 spaCy pipeline docs 根本不提。谢谢!

【问题讨论】:

    标签: python nlp spacy lemmatization


    【解决方案1】:

    你的问题的答案比我原先想象的要复杂,但现在我会详细解释一下。

    SpaCy 词形还原通常基于查找表执行。这意味着它独立于管道组件,并且它在管道之前进行了词形还原。但是,英语和希腊语的设计使得当 pos 标签可用时可以执行基于规则的词形还原。这意味着如果启用了标记器,那么我们可以利用 POS 标签来根据其标签找到与单词匹配的最佳引理。在这种情况下,词形还原发生在标记器管道组件之后。

    简而言之,如果禁用了标记器,我们将遵循基于查找表的静态词形还原过程,该查找表将单词与其词元匹配,并且词形还原发生在任何管道组件之前。与此相反,当启用标记器时,词形还原过程是基于规则的并且依赖于 POS 标签,因此它发生在标记器之后。我再说一遍,这种情况只会发生在某些支持基于规则的词形还原的语言上,例如英语和希腊语。

    代码示例:

    import spacy
    nlp = spacy.load('en')
    nlp.remove_pipe('parser')
    # uncommenting the following line means we go to rule based lemmatization
    # nlp.remove_pipe('tagger')
    nlp.remove_pipe('ner')
    doc = nlp('those are random words')
    for token in doc:
        print(token.lemma_)
    

    注释掉行的输出:那些是随机词

    无注释行输出:随机词

    希望现在澄清。

    【讨论】:

    • 我也这么认为 - 但如果您删除'tagger',那么“这些”和“那些”将保留其原生形式。也就是说,除非标记器管道组件被禁用,否则它们的引理不会变成“this”和“that”。
    • 对不起,我错过了一些东西。我更新了我的答案,我认为现在它已 100% 完成,可以标记为已接受的答案。
    • 这更有意义,并解释了“我在明天的会议上与他会面”的行为 - POS 标记导致每次出现的“会议”都以不同的方式进行词形化。不过,我不能接受这是回答这个问题,因为我仍在寻找某种标记化/管道工作流程图。不过谢谢,这有帮助!
    • 很高兴它帮助了你!你能解释一下你的问题吗?您想知道的 url spacy.io/assets/img/pipeline.svg 中的图表中缺少什么?
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多