Обучение модели 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)