ComeçarComece de graça

Treinar um modelo de NER existente

Um modelo do spaCy pode não funcionar bem em determinados dados. Uma solução é treinar o modelo com o seu conjunto de dados. Neste exercício, você vai praticar o treinamento de um modelo de NER para melhorar seu desempenho de predição.

Um modelo spaCy en_core_web_sm, acessível como nlp, não consegue prever corretamente house como uma entidade em uma string test.

Dado um training_data, escreva as etapas para atualizar esse modelo enquanto itera pelos dados duas vezes. Os outros pipelines já estão desativados e o optimizer também está pronto para uso. O número de épocas já está definido como 2.

Este exercício faz parte do curso

Processamento de Linguagem Natural com spaCy

Ver curso

Instruções do exercício

  • Use o objeto optimizer e, a cada época, embaralhe o conjunto de dados usando o pacote random e crie um objeto Example.
  • Atualize o modelo nlp usando o atributo .update e defina o argumento sgd para usar o otimizador.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

nlp = spacy.load("en_core_web_sm")
print("Before training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']
nlp.disable_pipes(*other_pipes)
optimizer = nlp.create_optimizer()

# Shuffle training data and the dataset using random package per epoch
for i in range(epochs):
  random.____(training_data)
  for text, ____ in training_data:
    doc = nlp.____(____)
    # Update nlp model after setting sgd argument to optimizer
    example = Example.____(____, ____)
    nlp.____([____], sgd = ____)
print("After training: ", [(ent.text, ent.label_) for ent in nlp(test).ents])
Editar e executar o código