Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj obiektu optimizer i dla każdej epoki przetasuj zbiór danych za pomocą pakietu random, a następnie utwórz obiekt Example.
  • Zaktualizuj model nlp za pomocą atrybutu .update i ustaw argument sgd tak, 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])
Edytuj i uruchom kod