用于快速检测名词的自然语言处理

Natural Language Processing for fast detection of nouns

我有很长的文本需要从中提取名词。我用 spaCy 作为

nlp = spacy.load("en_core_web_lg") # for better name entity detection
doc = nlp(text)
for token in doc:
    if token.tag_=='NN' or token.tag_=='NNP':
        # store token.lemma_
for ent in doc.ents:
    # store ent.text

但是,它非常慢,因为 spaCy 进行了完整的分析,我不需要。

我可以加快 spaCy 来完成这项特定工作吗?

您可以通过禁用不需要的预训练管道来加速 spaCy:

with nlp.disable_pipes("tagger", "parser"):
   # your code

(请注意,如果您仍想访问 token.tag,则无法禁用 tagger

或者您甚至可以完全避免加载这些组件:

nlp = spacy.load("en_core_web_lg", disable=["tagger", "parser"])

即使只禁用 parser 也绝对可以提高您的速度。

有关详细信息,请参阅 here