Crear una entidad con nombre personalizada en spaCy
Si las entidades con nombre integradas de spaCy no son suficientes, puedes crear las tuyas usando el componente de pipeline entity_ruler de spaCy.
El componente entity_ruler te permite crear tus propias entidades y añadirlas a un pipeline de spaCy.
Empieza añadiendo el componente al pipeline existente con nlp.add_pipe(), colocándolo before del componente "ner" para que tus reglas se apliquen primero. add_pipe() devuelve el componente que añadió.
Luego puedes llamar a add_patterns() sobre el componente y pasarle un diccionario con el pattern de texto que quieres etiquetar con una entidad.
Como Acme es una empresa tecnológica, decides etiquetar el patrón "smartphone" con la etiqueta de entidad "PRODUCT".
spaCy se ha importado y nlp contiene un modelo en_core_web_sm cargado. Como cambiar un pipeline no afecta a los documentos que ya existen, volverás a crear el doc a partir del texto transcrito de call_4_channel_2.wav file una vez que el nuevo componente esté en su lugar.
Este ejercicio forma parte del curso
Procesamiento del lenguaje hablado en Python
Instrucciones del ejercicio
- Añade el componente
"entity_ruler"al pipeline denlp, antes del componente"ner", y guárdalo enruler. - Añade
"smartphone"como valor para la clave"pattern". - Imprime los atributos de entidad contenidos en
doc.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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_)