Ein spaCy-Modell von Grund auf trainieren
spaCy bietet einen sehr klaren und effizienten Ansatz, um eigene Modelle zu trainieren. In dieser Übung trainierst du ein NER-Modell von Grund auf mit einem realen Korpus (CORD-19-Daten).
Die Trainingsdaten liegen im richtigen Format als training_data vor. In dieser Übung verwendest du eine vorgegebene Liste von Labels ("Pathogen", "MedicalCondition", "Medicine"), gespeichert in labels, zusammen mit einem leeren englischen Modell (nlp) mit einer NER-Komponente. Die vorgesehenen medizinischen labels werden zur NER-Pipeline hinzugefügt, und anschließend kannst du das Modell für eine Epoche trainieren. Du kannst die vorab importierte Klasse Example nutzen, um die Trainingsdaten in das erforderliche Format zu konvertieren. Um das Modelltraining zu verfolgen, kannst du eine losses-Liste an die Methode .update() übergeben und den Trainingsverlust prüfen.
Diese Übung ist Teil des Kurses
Natural Language Processing mit spaCy
Anleitung zur Übung
- Erstelle ein leeres spaCy-Modell und füge dem Modell eine NER-Komponente hinzu.
- Deaktiviere andere Pipeline-Komponenten, verwende das erstellte Objekt
optimizerund aktualisiere die Modellgewichte mit den konvertierten Daten imExample-Format.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)