开始使用免费开始使用

训练一个现有的 NER 模型

某个 spaCy 模型在给定数据上可能表现不佳。一个解决方案是用我们的数据对模型进行训练。在本练习中,您将练习训练一个 NER 模型,以提升其预测效果。

已提供一个 spaCy 的 en_core_web_sm 模型,可通过 nlp 访问。它目前无法在 test 字符串中将 house 正确预测为实体。

给定 training_data,请编写步骤来更新该模型,并对数据迭代两次。其他流水线已禁用,optimizer 也已就绪可用。训练轮数(epochs)已设为 2。

本练习是课程的一部分

使用 spaCy 的自然语言处理

查看课程

练习说明

  • 使用 optimizer 对象,并在每个 epoch 中,使用 random 包打乱数据集并创建 Example 对象。
  • 使用 .update 方法更新 nlp 模型,并将 sgd 参数设置为使用该 optimizer。

交互式实操练习

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

nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()

# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
  random.____(training_data)
  for text, ____ in training_data:
    doc = nlp.____(____)
    # Update nlp model after setting sgd argument to optimizer
    example = Example.____(____, ____)
    nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
编辑并运行代码