python - 如何加快 Spacy 的 nlp 调用?

标签 python nlp spacy

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

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)

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

最佳答案

默认情况下,Spacy 将许多模型应用于您的文档:词性标注器、句法解析器、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])

关于python - 如何加快 Spacy 的 nlp 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072566/

相关文章:

python - 在 python 中的第 n 个字节之后追加到文件

javascript - 如何按顺序获取所有元素文本

python - 尝试将日志发送到控制台

nlp - LUIS - 我们可以使用短语列表作为实体类型列表中的新值吗

nlp - 训练前对语料库进行 word2vec 词形还原

Python无法安装模块spaCy

python - 为什么我的网络不会学习?

python - 与 nltk 分块

python - spaCy 实际上实现了哪些神经网络模型?什么决定了它们在内存中的大小?

python - 如何将 SyntaxNet 解析器/标记器与 spaCy API 一起使用?