Kom igångKom igång gratis

Träna en befintlig NER-modell

En spaCy-modell kanske inte fungerar bra på en given datamängd. En lösning är att träna modellen på din egen data. I den här övningen tränar du en NER-modell för att förbättra dess prediktionsprestanda.

En spaCy-modell en_core_web_sm är tillgänglig som nlp. Den kan inte korrekt förutsäga house som en entitet i en test-sträng.

Givet en training_data, skriv stegen för att uppdatera den här modellen medan du itererar genom data två gånger. De övriga pipelines är redan inaktiverade och optimizer är redo att användas. Antalet epoker är redan satt till 2.

Den här övningen är en del av kursen

Naturlig språkbehandling med spaCy

Visa kurs

Övningsinstruktioner

  • Använd optimizer-objektet och blanda för varje epok datamängden med paketet random, och skapa ett Example-objekt.
  • Uppdatera nlp-modellen med attributet .update och ange argumentet sgd så att optimeraren används.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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])
Redigera och kör kod