НачатьНачать бесплатно

Обучение модели spaCy с нуля

spaCy предлагает простой и эффективный подход к обучению собственных моделей. В этом упражнении вы обучите модель NER с нуля на реальном корпусе текстов (данные CORD-19).

Обучающие данные в нужном формате доступны в переменной training_data. В упражнении вы будете использовать заданный список меток ("Pathogen", "MedicalCondition", "Medicine"), сохранённый в переменной labels, и пустую английскую модель (nlp) с компонентом NER. Медицинские метки из labels будут добавлены в NER-конвейер, после чего вы сможете обучить модель в течение одной эпохи. Для преобразования обучающих данных в нужный формат используйте заранее импортированный класс Example. Чтобы отслеживать процесс обучения, передайте список losses в метод .update() и проанализируйте значения функции потерь.

Это упражнение является частью курса

Обработка естественного языка с помощью spaCy

Посмотреть курс

Инструкции к упражнению

  • Создайте пустую модель spaCy и добавьте в неё компонент NER.
  • Отключите остальные компоненты конвейера, используйте созданный объект optimizer и обновите веса модели, передав данные в формате Example.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Load a blank English model, add NER component, add given labels to the ner pipeline
nlp = spacy.____("____")
ner = nlp.____("ner")
for ent in labels:
    ner.add_label(ent)

# Disable other pipeline components, complete training loop and run training loop
other_pipes = [____ for pipe in nlp.____ if ____ != "____"]
nlp.disable_pipes(*____)
losses = {}
optimizer = nlp.begin_training()
for text, annotation in training_data:
    doc = nlp.____(text)
    example = Example.____(doc, annotation)
    nlp.____([example], sgd=____, losses=losses)
    print(losses)
Редактировать и запускать код