EntityRuler con pattern multipli in spaCy
EntityRuler ti permette di aggiungere entità a doc.ents e potenziare le prestazioni di named entity recognition. In questo esercizio, farai pratica aggiungendo un componente EntityRuler a una pipeline nlp esistente per assicurarti che più entità vengano classificate correttamente.
Il modello en_core_web_sm è già caricato ed è disponibile come nlp. Hai a disposizione un testo di esempio in example_text e puoi usare nlp e doc per accedere rispettivamente a un modello spaCy e al contenitore Doc di example_text.
Questo esercizio fa parte del corso
Natural Language Processing con spaCy
Istruzioni dell'esercizio
- Stampa un elenco di tuple con testo e tipo delle entità in
example_textusando il modellonlp. - Definisci più pattern per associare le versioni in minuscolo di
brotheresistersall’etichettaPERSON. - Aggiungi un componente
EntityRuleralla pipelinenlpe aggiungi ipatternsall’EntityRuler. - Stampa una tupla con testo e tipo delle entità per
example_textusando il modellonlp.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
nlp = spacy.load("en_core_web_md")
# Print a list of tuples of entities text and types in the example_text
print("Before EntityRuler: ", [____ for ____ in nlp(____).____], "\n")
# Define pattern to add a label PERSON for lower cased sisters and brother entities
patterns = [{"label": ____, "pattern": [{"lower": ____}]},
{"label": ____, "pattern": [{"lower": ____}]}]
# Add an EntityRuler component and add the patterns to the ruler
ruler = nlp.____("entity_ruler")
ruler.____(____)
# Print a list of tuples of entities text and types
print("After EntityRuler: ", [(ent.____, ent.____) for ent in nlp(example_text).____])