【问题标题】:How to speed up Spacy's nlp call?如何加快 Spacy 的 nlp 调用?
【发布时间】:2020-05-30 16:33:03
【问题描述】:

我必须处理数十万条文本。我发现以下内容花费时间最长:

nlp = English()
ruler = EntityRuler(nlp)
patterns = [...]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)
...
#This line takes longer than I would like
doc = nlp(whole_chat)

当然,我有很多模式。但是有没有办法加快这个速度?我只有实体尺管,没有其他的。

【问题讨论】:

标签: python nlp spacy


【解决方案1】:

默认情况下,Spacy 将许多模型应用于您的文档:POS 标记器、句法解析器、NER、文档分类器,也许还有其他东西。

也许您不需要其中一些模型。如果是这种情况,您可以禁用它们,这将加快您的管道。您在创建管道时执行此操作,如下所示:

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

或者,按照@oleg-ivanytskiy 的回答,您可以在nlp.pipe() 调用中禁用这些模型:

nlp = spacy.load("en_core_web_sm")
for doc in nlp.pipe(texts, disable=["tagger", "parser"]):
    # Do something with the doc here
    print([(ent.text, ent.label_) for ent in doc.ents])

【讨论】:

  • 谢谢。实体标尺是我唯一的管道。我会试试 nlp.pipe。
【解决方案2】:

使用nlp.pipe() 处理多个文本。它更快更高效 (documentation)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多