Trenowanie istniejącego modelu NER
Model spaCy może nie działać dobrze na określonych danych. Jednym z rozwiązań jest dotrenowanie modelu na własnych danych. W tym ćwiczeniu przećwiczysz trenowanie modelu NER w celu poprawy jego skuteczności przewidywania.
Model spaCy en_core_web_sm dostępny jako nlp nie jest w stanie poprawnie rozpoznać house jako encji w ciągu test.
Mając do dyspozycji training_data, zapisz kroki potrzebne do zaktualizowania modelu, iterując przez dane dwa razy. Pozostałe komponenty pipeline są już wyłączone, a optimizer jest gotowy do użycia. Liczba epok jest już ustawiona na 2.
To ćwiczenie jest częścią kursu
Przetwarzanie języka naturalnego z użyciem spaCy
Instrukcje do ćwiczenia
- Użyj obiektu
optimizeri dla każdej epoki przetasuj zbiór danych za pomocą pakieturandom, a następnie utwórz obiektExample. - Zaktualizuj model
nlpza pomocą atrybutu.updatei ustaw argumentsgdtak, aby korzystał z optymalizatora.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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])