Začněte nyníZačněte zdarma

Trénování existujícího NER modelu

spaCy model nemusí na daných datech fungovat dobře. Jedním z řešení je dotrénovat model na vlastních datech. V tomto cvičení si procvičíš trénování NER modelu s cílem zlepšit jeho predikční výkon.

Máš k dispozici model en_core_web_sm přístupný jako nlp, který nedokáže správně rozpoznat house jako entitu v řetězci test.

Na základě training_data napiš kroky pro aktualizaci tohoto modelu při dvou průchodech přes data. Ostatní pipeline komponenty jsou již vypnuté a optimizer je připraven k použití. Počet epoch je nastaven na 2.

Toto cvičení je součástí kurzu

Zpracování přirozeného jazyka s knihovnou spaCy

Zobrazit kurz

Pokyny k cvičení

  • Použij objekt optimizer a v každé epoše zamíchej dataset pomocí balíčku random a vytvoř objekt Example.
  • Aktualizuj model nlp pomocí atributu .update a nastav argument sgd tak, aby používal optimizer.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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])
Upravit a spustit kód