ÎncepețiÎncepe gratuit

Antrenează un model NER existent

Un model spaCy poate să nu funcționeze bine pe anumite date. O soluție este să antrenezi modelul pe propriile tale date. În acest exercițiu, vei exersa antrenarea unui model NER pentru a-i îmbunătăți performanța la predicție.

Ai la dispoziție un model spaCy en_core_web_sm accesibil prin nlp, care nu reușește să identifice corect house ca entitate în șirul test.

Pornind de la training_data, scrie pașii necesari pentru a actualiza acest model parcurgând datele de două ori. Celelalte pipeline-uri sunt deja dezactivate, iar optimizer este pregătit pentru utilizare. Numărul de epoci este deja setat la 2.

Acest exercițiu face parte din cursul

Procesarea limbajului natural cu spaCy

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește obiectul optimizer și, pentru fiecare epocă, amestecă setul de date cu pachetul random și creează un obiect Example.
  • Actualizează modelul nlp folosind atributul .update și setează argumentul sgd pentru a utiliza optimizatorul.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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])
Editează și rulează codul