从零开始训练 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)