Aan de slagGa gratis aan de slag

Train een bestaand NER-model

Een spaCy-model werkt niet altijd goed op een bepaalde gegevensset. Eén oplossing is het model trainen op je eigen data. In deze oefening ga je een NER-model trainen om de voorspellingsprestatie te verbeteren.

Een spaCy-model en_core_web_sm, toegankelijk als nlp, kan house niet correct als entiteit voorspellen in een test-string.

Gegeven training_data, schrijf de stappen om dit model bij te werken terwijl je twee keer door de data itereert. De andere pijplijnen zijn al uitgeschakeld en optimizer is klaar voor gebruik. Het aantal epochs is al ingesteld op 2.

Deze oefening maakt deel uit van de cursus

Natural Language Processing met spaCy

Cursus bekijken

Oefeninstructies

  • Gebruik het optimizer-object en schud voor elke epoch de dataset met het random-pakket en maak een Example-object.
  • Werk het nlp-model bij met de .update-methode en stel het argument sgd in om de optimizer te gebruiken.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()

# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
  random.____(training_data)
  for text, ____ in training_data:
    doc = nlp.____(____)
    # Update nlp model after setting sgd argument to optimizer
    example = Example.____(____, ____)
    nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
Code bewerken en uitvoeren