Träna en spaCy-modell från grunden
spaCy erbjuder ett smidigt och effektivt sätt att träna egna modeller. I den här övningen tränar du en NER-modell från grunden på ett verkligt korpus (CORD-19-data).
Träningsdata finns tillgänglig i rätt format som training_data. I övningen använder du en given lista med etiketter ("Pathogen", "MedicalCondition", "Medicine") lagrade i labels, med en tom engelsk modell (nlp) som har en NER-komponent. De medicinska etiketterna i labels läggs till i NER-pipelinen, varefter du tränar modellen i en epok. Du kan använda den förimporterade klassen Example för att konvertera träningsdata till det format som krävs. För att följa träningen kan du lägga till en losses-lista i metoden .update() och granska träningsförlusten.
Den här övningen är en del av kursen
Naturlig språkbehandling med spaCy
Övningsinstruktioner
- Skapa en tom spaCy-modell och lägg till en NER-komponent i modellen.
- Inaktivera övriga pipeline-komponenter, använd det skapade
optimizer-objektet och uppdatera modellens vikter med hjälp av data konverterad tillExample-format.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)