Обучение с помощью spaCy

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

Azadeh Mobasher

Principal Data Scientist

Этапы обучения

 

  1. Аннотирование и подготовка входных данных
  2. Отключение остальных компонентов конвейера
  3. Обучение модели в течение нескольких эпох
  4. Оценка качества модели
Обработка естественного языка с помощью spaCy

Отключение остальных компонентов конвейера

 

  • Отключите все компоненты конвейера, кроме NER:

 

other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']

nlp.disable_pipes(*other_pipes)
Обработка естественного языка с помощью spaCy

Процедура обучения модели

  • Обучающую выборку проходят несколько раз; одна итерация называется epoch.
  • На каждой эпохе веса модели обновляются на небольшую величину.
  • Оптимизаторы обновляют веса модели.
optimizer = nlp.create_optimizer()
losses = {}
for i in range(epochs):
  random.shuffle(training_data)

for text, annotation in training_data: doc = nlp.make_doc(text) example = Example.from_dict(doc, annotation)
nlp.update([example], sgd = optimizer, losses=losses)
Обработка естественного языка с помощью spaCy

Сохранение и загрузка обученной модели

 

  • Сохранение обученной NER-модели:
ner = nlp.get_pipe("ner")
ner.to_disk("<ner model name>")
  • Загрузка сохранённой модели:
    ner = nlp.create_pipe("ner")
    ner.from_disk("<ner model name>")
    nlp.add_pipe(ner, "<ner model name>")
    
Обработка естественного языка с помощью spaCy

Модель для инференса

 

  • Используйте сохранённую модель для инференса.

 

  • Примените NER-модель и сохраните кортежи (текст сущности, метка сущности):
doc = nlp(text)
entities = [(ent.text, ent.label_) for ent in doc.ents]
Обработка естественного языка с помощью spaCy

Давайте потренируемся!

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

Preparing Video For Download...