Kom igångKom igång gratis

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

Visa kurs

Ö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 till Example-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)
Redigera och kör kod