使用 spaCy 进行训练

使用 spaCy 的自然语言处理

Azadeh Mobasher

Principal Data Scientist

训练步骤

 

  1. 标注并准备输入数据
  2. 禁用其他流水线组件
  3. 训练少量轮次(epochs)
  4. 评估模型性能
使用 spaCy 的自然语言处理

禁用其他流水线组件

 

  • 仅保留 NER禁用其余流水线组件:

 

other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']

nlp.disable_pipes(*other_pipes)
使用 spaCy 的自然语言处理

模型训练流程

  • 多次遍历训练集;一次遍历称为epoch
  • 每个 epoch 用小步长更新模型权重。
  • 优化器用于更新权重。
optimizer = nlp.create_optimizer()
losses = {}
for i in range(epochs):
  random.shuffle(training_data)

for text, annotation in training_data: doc = nlp.make_doc(text) example = Example.from_dict(doc, annotation)
nlp.update([example], sgd = optimizer, losses=losses)
使用 spaCy 的自然语言处理

保存与加载训练模型

 

  • 保存已训练的 NER 模型:
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • 加载已保存的模型:
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
使用 spaCy 的自然语言处理

推理用模型

 

  • 在推理时使用已保存的模型。

 

  • 应用 NER 模型并存储(二元组:实体文本、实体标签):
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
使用 spaCy 的自然语言处理

让我们练习!

使用 spaCy 的自然语言处理

Preparing Video For Download...