explosion/spacy-transformers

🛸 Use pretrained transformers like BERT, XLNet and GPT-2 in spaCy

解决的问题

spaCy 是一个流行的 Python 自然语言处理(NLP)库,但它本身并不包含 BERT、GPT-2 或 XLNet 等 transformer 模型。这些预训练模型捕捉了深层的语言理解能力,已成为许多任务的最先进技术。spacy-transformers 弥补了这一差距,让您可以将任何 Hugging Face transformer 接入您的 spaCy 流水线,从而无需从头开始训练即可构建强大的 NLP 应用程序。

工作原理

该包提供了封装 Hugging Face transformers 库的 spaCy 组件和架构。您可以向 spaCy 流水线添加一个 transformer 组件,它会加载预训练模型(例如 BERT、RoBERTa、XLNet)并在您的文本上运行。该组件会自动将 transformer 的输出与 spaCy 的分词对齐,并将上下文嵌入(contextual embeddings)保存到 Doc 对象中。然后,您可以将这些嵌入用作其他 spaCy 组件(如命名实体识别 (NER) 或文本分类)的特征。训练使用 spaCy v3 的配置系统,这使得设置和运行多任务学习变得简单——这意味着您可以将来自多个下游任务的梯度反向传播到同一个 transformer 模型中。该包还处理序列化,因此模型可以像任何其他 spaCy 流水线一样进行保存和打包。

适用人群

已经使用 spaCy 并希望在不切换不同框架的情况下将现代 transformer 模型整合到其流水线中的开发人员和 NLP 从业者。它对于受益于上下文词表示的任务特别有用,例如 NER、文本分类或任何需要丰富特征的自定义 spaCy 组件。因为它与 spaCy 的训练工作流集成,所以它也适用于希望在自己的数据上微调 transformer 的团队。

亮点

  • 直接在 spaCy 中使用广泛的预训练 transformer(BERT、RoBERTa、XLNet 等)。
  • 与 spaCy v3 的配置系统无缝集成,用于训练和评估。
  • 多任务学习:一个 transformer 可以为多个下游组件提供特征。
  • transformer 子词与 spaCy token 之间的自动分词对齐。
  • 可自定义存储在 Doc 对象中的 transformer 输出。
  • 内置对序列化和模型打包的支持。
  • 需要 Python 3.6+、PyTorch 1.5+ 和 spaCy v3+。

相关

  • 项目
  • 项目
  • 项目
  • 项目