Навчання моделі spaCy з нуля
spaCy пропонує дуже простий і ефективний підхід до навчання власних моделей. У цій вправі ви навчите модель NER з нуля на реальному корпусі (дані CORD-19).
Навчальні дані вже підготовлені у потрібному форматі як training_data. У цій вправі ви використаєте заданий список міток («Pathogen», «MedicalCondition», «Medicine»), збережений у labels, разом із порожньою англомовною моделлю (nlp) з компонентом NER. Вказані медичні labels буде додано до конвеєра NER, після чого ви зможете потренувати модель одну епоху. Ви можете використати попередньо імпортований клас Example, щоб перетворити навчальні дані у потрібний формат. Щоб відстежувати процес навчання моделі, додайте список losses до методу .update() і переглядайте значення функції втрат.
Ця вправа є частиною курсу
Обробка природної мови (NLP) зі 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)