spacy - 如何仅针对 NER 优化 SpaCy 管道(使用现有模型,无需培训)

标签 spacy named-entity-recognition

我希望使用 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 不需要它吗?

最佳答案

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

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

关于spacy - 如何仅针对 NER 优化 SpaCy 管道(使用现有模型,无需培训),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66613770/

相关文章:

python - 加速 Spacy 命名实体识别

python - 如何确定 token 是否是 Spacy 中实体的一部分?

java - 有一个不需要整个文本作为训练数据的实体识别器分类器算法吗?

nlp - 使用斯坦福时间标记器处理大数据好吗?

python - NLTK 命名实体识别数据集中的列

python - 是否有可能获得 Spacy 命名实体识别的置信度分数

java - 使用 .prop 文件以编程方式训练 NER 模型

nlp - 用 SpaCy 中的标签替换实体

Python 的 SpaCy EntityRuler 没有返回任何结果