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
Instrucțiuni pentru exercițiu
- Folosește obiectul
optimizerși, pentru fiecare epocă, amestecă setul de date cu pachetulrandomși creează un obiectExample. - Actualizează modelul
nlpfolosind atributul.updateși setează argumentulsgdpentru 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])