ПочатиПочніть безкоштовно

Навчання наявної моделі NER

Модель spaCy може працювати неідеально на певних даних. Один зі способів — донавчити модель на наших даних. У цій вправі ви попрактикуєтеся в навчанні моделі NER, щоб поліпшити якість її передбачень.

Модель spaCy en_core_web_sm, доступна як nlp, наразі не може правильно визначити house як сутність у рядку test.

Маючи training_data, пропишіть кроки для оновлення цієї моделі, здійснивши дві ітерації по даних. Інші конвеєри вже вимкнено, а optimizer підготовлено до використання. Кількість епох уже встановлено в 2.

Ця вправа є частиною курсу

Обробка природної мови (NLP) зі spaCy

Переглянути курс

Інструкції до вправи

  • Використовуйте об'єкт optimizer і для кожної епохи перемішуйте набір даних за допомогою пакета random та створюйте об'єкт Example.
  • Оновіть модель nlp методом .update і в аргументі sgd передайте підготовлений оптимізатор.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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])
Редагувати та запускати код