Een eigen named entity maken in spaCy
Als de ingebouwde named entities van spaCy niet voldoende zijn, kun je je eigen entiteiten maken met de entity_ruler-pipelinecomponent van spaCy.
Met de entity_ruler-component kun je je eigen entiteiten definiëren en toevoegen aan een spaCy-pipeline.
Je begint met het toevoegen van de component aan de bestaande pipeline met nlp.add_pipe(), waarbij je hem before de "ner"-component plaatst zodat je eigen regels eerst worden toegepast. add_pipe() geeft de toegevoegde component terug.
Vervolgens kun je add_patterns() aanroepen op de component en er een dictionary aan meegeven met het tekstuele pattern dat je met een entiteit wilt labelen.
Omdat Acme een technologiebedrijf is, besluit je het patroon "smartphone" te taggen met het entiteitslabel "PRODUCT".
spaCy is geïmporteerd en nlp bevat een geladen en_core_web_sm-model. Omdat het wijzigen van een pipeline geen effect heeft op al bestaande docs, maak je de doc opnieuw aan op basis van de getranscribeerde tekst van het audiobestand call_4_channel_2.wav file zodra de nieuwe component is toegevoegd.
Deze oefening maakt deel uit van de cursus
Spoken Language Processing in Python
Oefeninstructies
- Voeg de
"entity_ruler"-component toe aan denlp-pipeline, vóór de"ner"-component, en sla hem op inruler. - Voeg
"smartphone"toe als waarde voor de sleutel"pattern". - Print de entiteitsattributen die in
doczitten.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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_)