Treinando um modelo spaCy do zero
O spaCy oferece uma abordagem muito simples e eficiente para treinar seus próprios modelos. Neste exercício, você vai treinar um modelo de NER do zero usando um corpus do mundo real (dados CORD-19).
Os dados de treinamento já estão no formato correto em training_data. Neste exercício, você usará uma lista de rótulos fornecida ("Pathogen", "MedicalCondition", "Medicine") armazenada em labels, com um modelo em branco de inglês (nlp) que contém um componente de NER. Os labels médicos desejados serão adicionados ao pipeline de NER e então você poderá treinar o modelo por uma época. Você pode usar a classe Example, já importada, para converter os dados de treinamento para o formato necessário. Para acompanhar o treinamento do modelo, você pode adicionar uma lista losses ao método .update() e revisar a perda de treinamento.
Este exercício faz parte do curso
Processamento de Linguagem Natural com spaCy
Instruções do exercício
- Crie um modelo spaCy em branco e adicione um componente de NER ao modelo.
- Desative outros componentes do pipeline, use o objeto
optimizercriado e atualize os pesos do modelo usando os dados convertidos para o formatoExample.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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)