Creare un'entità nominata personalizzata in spaCy
Se le entità nominate predefinite di spaCy non bastano, puoi crearne di tue usando il componente di pipeline entity_ruler di spaCy.
Il componente entity_ruler ti permette di creare entità personalizzate e aggiungerle a una pipeline spaCy.
Si parte aggiungendo il componente alla pipeline esistente con nlp.add_pipe(), posizionandolo before del componente "ner" così che le tue regole vengano applicate per prime. add_pipe() restituisce il componente aggiunto.
Puoi poi chiamare add_patterns() sul componente e passargli un dizionario con il pattern di testo che vuoi etichettare come entità.
Dato che Acme è un'azienda tecnologica, decidi di etichettare il pattern "smartphone" con il tag di entità "PRODUCT".
spaCy è stato importato e nlp contiene un modello en_core_web_sm caricato. Poiché modificare una pipeline non ha effetto sui doc già esistenti, ricreerai il doc dal testo trascritto di call_4_channel_2.wav file una volta aggiunto il nuovo componente.
Questo esercizio fa parte del corso
Elaborazione del linguaggio parlato in Python
Istruzioni dell'esercizio
- Aggiungi il componente
"entity_ruler"alla pipelinenlp, prima del componente"ner", e salvalo inruler. - Aggiungi
"smartphone"come valore per la chiave"pattern". - Stampa gli attributi delle entità contenute in
doc.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)