如何不重新加载Spacy?

时间:2019-02-08 12:48:04

标签: python spacy

在使用Spacy和使用它的交叉导入功能时,我希望避免重新加载语言模型。

我应该将加载的模型(通常称为nlp())作为参数传递吗?还是有一些更优雅/更有效的事情要做?

例如我今天所拥有的:

module.py

nlp = spacy.load('fr_core_news_md') # IMPORTS ONCE (long time...)

def my_function():
    ... does something with spacy...
    return

main.py

from module import my_function
nlp = spacy.load('fr_core_news_md') # IMPORTS AGAIN (long time...)

my_function()

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果您在应用程序中使用模型,则绝对只想一次加载它,然后传递nlp对象。这不仅速度更快,而且还确保了一致性:如果您修改管道以添加组件,或者如果词汇表在运行时更新,那么您希望这些更改反映在整个应用程序中。

也就是说,遗憾的是,目前法国的加载时间有点慢,因为它们需要更多的静态数据。希望在即将发布的版本中有所改善。您可以找到更多详细信息和解决方案in this thread。摘要:

  • 自己删除标记生成器例外的列表,并将其限制为所需。
  • 通过微服务为模型提供服务,并公开一个API端点,该端点接受要处理的文本并返回JSON格式的预测。如果您只需要模型从文本中提取某些内容,则效果特别好。