spaCy v3.0发布
spaCy v3.0是一个重大版本发布!它引入了全新的基于Transformer的管道,将spaCy的准确率提升至当前业界前沿水平,并提供了新的工作流系统,帮助用户将项目从原型推进到生产环境。配置和训练管道变得更加简单,同时增加了许多与NLP生态系统其他部分的新集成和改进。
基于Transformer的管道
spaCy v3.0配备了全新的基于Transformer的管道,可以使用任何预训练的Transformer来训练自己的管道,甚至通过多任务学习在多个组件之间共享一个Transformer。spaCy的Transformer支持与PyTorch和HuggingFace transformers库互操作,让用户能够访问数千个预训练模型。
准确性比较
管道 | 解析器 | 标注器 | NER |
---|---|---|---|
en_core_web_trf (spaCy v3) | 95.5 | 98.3 | 89.4 |
en_core_web_lg (spaCy v3) | 92.2 | 97.4 | 85.4 |
en_core_web_lg (spaCy v2) | 91.9 | 97.2 | 85.5 |
在OntoNotes 5.0语料库上的准确性(基于开发集报告)。
命名实体识别系统在OntoNotes和CoNLL ‘03数据集上的表现也达到了先进水平,具体数据可参考NLP-progress。
共享嵌入层
spaCy允许在多个组件之间共享单个Transformer或其他token-to-vector(“tok2vec”)嵌入层,甚至可以更新共享层以执行多任务学习。重用嵌入层可以使管道运行更快,并生成更小的模型。
新的训练管道
spaCy v3.0为18种语言提供了重新训练的模型系列,总共包括59个训练管道,其中有5个新的基于Transformer的管道。用户还可以使用自己的数据和选择的Transformer权重训练自己的基于Transformer的管道。
新的训练工作流和配置系统
spaCy v3.0引入了一个全面且可扩展的配置系统,用于配置训练运行。单个配置文件描述了训练运行的每个细节,没有隐藏的默认值,使得重新运行实验和跟踪更改变得容易。
配置示例
|
|
配置系统的主要优点包括结构化部分、注册函数引用、插值、无隐藏默认值的可重现性以及自动检查和验证。
使用任何框架的自定义模型
spaCy的新配置系统使得定制不同管道组件使用的神经网络模型变得容易。用户还可以通过spaCy的机器学习库Thinc实现自己的架构,该库提供了各种层和实用程序,以及对PyTorch、TensorFlow和MXNet等框架的薄包装。
包装PyTorch模型示例
|
|
使用项目管理端到端工作流
spaCy项目允许用户管理和共享不同用例和领域的端到端spaCy工作流,并协调训练、打包和服务自定义管道。用户可以从克隆预定义的项目模板开始,调整以适应需求,加载数据,训练管道,将其导出为Python包,将输出上传到远程存储,并与团队共享结果。
spaCy项目还便于与数据科学和机器学习生态系统中的其他工具集成,包括DVC、Prodigy、Streamlit、FastAPI、Ray、Weights & Biases等。
使用spaCy项目示例
|
|
使用Weights & Biases跟踪结果
Weights & Biases是一个流行的实验跟踪平台。spaCy通过WandbLogger与其开箱即用地集成,用户可以将其添加为训练配置的[training.logger]块。
使用Ray进行并行和分布式训练
Ray是一个快速简单的框架,用于构建和运行分布式应用程序。用户可以使用Ray在一台或多台远程机器上训练spaCy, potentially加速训练过程。
并行训练示例
|
|
新的内置管道组件
spaCy v3.0包括几个新的可训练和基于规则的组件,用户可以添加到管道中并根据用例进行定制:
- SentenceRecognizer:用于句子分割的可训练组件。
- Morphologizer:预测形态特征的可训练组件。
- Lemmatizer:基于规则和查找词形还原的独立组件。
- AttributeRuler:使用匹配模式设置token属性的组件。
- Transformer:在管道中使用Transformer模型、访问输出和对齐token的组件。
新的和改进的管道组件API
定义、配置、重用、训练和分析管道组件现在更加方便。@Language.component和@Language.factory装饰器允许用户注册组件并定义其默认配置和元数据。任何自定义组件都可以在训练期间包含,从现有训练管道中获取组件允许用户混合和匹配自定义管道。
依赖匹配
新的DependencyMatcher允许使用Semgrex操作符在依赖解析中匹配模式。它遵循与基于token的Matcher相同的API。
类型提示和基于类型的数据验证
spaCy v3.0正式放弃对Python 2的支持,现在需要Python 3.6+。这意味着代码库可以充分利用类型提示。spaCy的用户面向API现在带有类型提示。新版本的Thinc还具有广泛的类型支持,包括模型和数组的自定义类型,以及用于类型检查模型定义的自定义mypy插件。
对于数据验证,spaCy v3.0采用了pydantic。它还支持Thinc配置系统的数据验证,允许用户使用类型化参数注册自定义函数,在配置中引用它们,并在参数值不匹配时查看验证错误。
资源
- 发布说明:官方GitHub发布
- spaCy v3.0:使用文档和API参考
- spaCy v3.0的新功能:新功能和所有更改
- GitHub上的spaCy:仓库和问题跟踪器
- 从v2.x迁移到v3.x的指南:如何更新代码
- spaCy模型目录:下载训练管道
- spaCy项目模板:端到端NLP工作流
- 视频教程:YouTube上的更深入spaCy内容