开始使用免费开始使用

从零开始训练 spaCy 模型

spaCy 提供了简洁高效的方法来训练自定义模型。在本练习中,您将从零开始,在真实语料(CORD-19 数据)上训练一个 NER 模型。

训练数据已按正确格式提供在 training_data 中。本练习将使用给定的标签列表("Pathogen"、"MedicalCondition"、"Medicine"),它们存储在 labels 中,并基于一个带有 NER 组件的英文空白模型(nlp)进行训练。会将预期的医学 labels 添加到 NER 流水线,然后您可以训练模型 1 个 epoch。您可以使用已预导入的 Example 类将训练数据转换为所需格式。为跟踪模型训练,您可以在 .update() 方法中添加 losses 字典并查看训练损失。

本练习是课程的一部分

使用 spaCy 的自然语言处理

查看课程

练习说明

  • 创建一个空白的 spaCy 模型,并向该模型添加一个 NER 组件。
  • 禁用其他流水线组件,使用已创建的 optimizer 对象,并将转换为 Example 格式的数据用于更新模型权重。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Load a blank English model, add NER component, add given labels to the ner pipeline
nlp = spacy.____("____")
ner = nlp.____("ner")
for ent in labels:
    ner.add_label(ent)

# Disable other pipeline components, complete training loop and run training loop
other_pipes = [____ for pipe in nlp.____ if ____ != "____"]
nlp.disable_pipes(*____)
losses = {}
optimizer = nlp.begin_training()
for text, annotation in training_data:
    doc = nlp.____(text)
    example = Example.____(doc, annotation)
    nlp.____([example], sgd=____, losses=losses)
    print(losses)
编辑并运行代码