首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用小空间模型创建测试环境

使用小空间模型创建测试环境
EN

Stack Overflow用户
提问于 2017-02-23 02:28:29
回答 2查看 381关注 0票数 1

这更像是一个最佳/常见实践问题。

我们在我们的生产系统中使用Spacy。在测试时,很多时候我们不得不下载完整的空间模型(解析器+词向量),这可能非常慢(大约30分钟),并且令人沮丧。也许一个更好的策略是创建一个用于测试的自定义轻量级空间模型,例如,只有1000个单词的单词和一个更小的解析模型。

在使用可应用于此场景的大型数据模型进行测试时,是否有建议的策略/最佳实践?

EN

回答 2

Stack Overflow用户

发布于 2017-02-25 08:02:27

这基本上取决于您需要测试什么以及如何测试。您可能并不真正需要或不想测试spacy本身,您希望依赖spacy的结果来测试您的函数,在这方面的一个好做法是模拟spacy的响应,并测试您的代码信任spacy是否工作正常(它确实有测试;)。在我们的环境中,我们在导入spacy时加载了模型,因此我们必须模拟导入的模块,以便不加载这些数据。

当然,可以选择创建模型的轻量级版本,但这不是一个微不足道的情况,它可能需要在每次spacy版本更改时进行工作,并且您必须记住,当测试/需求更改后,其他开发人员应该能够更新模型。

如果您确实需要模型,而最大的问题是等待它们被下载,那么可以考虑使用缓存来存储数据。许多CI环境可以为您缓存模型,它们将在引入新版本的spacy之前一直有效。

票数 2
EN

Stack Overflow用户

发布于 2019-08-27 16:42:40

尽管@Rajhans问题似乎已经被@aniav的提议解决了,而且mocks和cache在大多数情况下可能是一个好主意,但我想添加一些东西来帮助我减少单元测试持续时间:

我意识到我正在加载几个我甚至不使用的spaCy组件,例如spaCy可能加载NER组件,而您甚至不使用它。您可以使用以下命令停用单个组件

代码语言:javascript
复制
nlp = spacy.load("en_core_web_lg", disable=["tagger", "ner"])

这将禁用标记器和ner识别。有关更多详细信息,请参阅spaCy documentation

这不仅减少了单元测试的持续时间,而且有一个很好的副作用,那就是让你的生产代码启动得更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42399476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档