【问题标题】:How to optimize SpaCy pipe for NER only (using an existing model, no training)如何仅针对 NER 优化 SpaCy 管道(使用现有模型,无需训练)
【发布时间】:2021-06-11 06:57:15
【问题描述】:

我希望使用 SpaCy v3 从大量句子中提取命名实体。我有什么工作,但它似乎比应有的速度慢,在投资更多机器之前,我想知道我是否正在做比我需要做的更多的工作。

我使用 ntlk 将所有内容作为迭代器解析为句子,然后使用“管道”处理这些内容以获取命名实体。所有这些似乎都运行良好,python 似乎对我机器上的每个 cpu 核心都造成了相当大的影响,这很好。

nlp = spacy.load("en_core_web_trf")
for (doc, context) in nlp.pipe(lines, as_tuples=True, batch_size=1000):
    for ent in doc.ents:
        pass #handle each entity

我知道我可以使用 nlp.disable_pipes 来禁用某些元素。有什么我可以禁用但不会影响准确性并且 NER 不需要的东西吗?

【问题讨论】:

    标签: spacy named-entity-recognition


    【解决方案1】:

    对于仅使用变压器模型en_core_web_trf 的NER,您可以禁用["tagger", "parser", "attribute_ruler", "lemmatizer"]

    如果您想使用像en_core_web_lg 这样的非变压器模型(更快但精度稍低),您可以禁用["tok2vec", "tagger", "parser", "attribute_ruler", "lemmatizer"] 并使用nlp.pipe(n_process=-1) 在所有CPU 上进行多处理(或n_process=N 限制为N 个 CPU)。

    【讨论】:

    • 太好了,谢谢。我将尝试您建议的其他模型并进行比较以查看实体之间发现的差异。
    猜你喜欢
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2021-08-27
    • 2020-05-06
    相关资源
    最近更新 更多