Aan de slagGa gratis aan de slag

Een spaCy-model vanaf nul trainen

spaCy biedt een heel overzichtelijke en efficiënte manier om je eigen modellen te trainen. In deze oefening train je vanaf nul een NER-model op een real-worldcorpus (CORD-19-data).

De trainingsgegevens zijn beschikbaar in het juiste formaat als training_data. In deze oefening gebruik je een opgegeven lijst met labels ("Pathogen", "MedicalCondition", "Medicine") opgeslagen in labels, met een leeg Engels model (nlp) met een NER-component. De beoogde medische labels worden toegevoegd aan de NER-pijplijn en daarna kun je het model één epoch trainen. Je kunt de vooraf geïmporteerde klasse Example gebruiken om de trainingsgegevens naar het vereiste formaat te converteren. Om de modeltraining te volgen kun je een losses-lijst toevoegen aan de methode .update() en het verlies tijdens het trainen bekijken.

Deze oefening maakt deel uit van de cursus

Natural Language Processing met spaCy

Cursus bekijken

Oefeninstructies

  • Maak een leeg spaCy-model en voeg een NER-component toe aan het model.
  • Schakel andere pijplijncomponenten uit, gebruik het aangemaakte optimizer-object en werk de modelgewichten bij met behulp van geconverteerde data naar het Example-formaat.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)
Code bewerken en uitvoeren