RegEx met EntityRuler in spaCy
Reguliere expressies, of RegEx, worden gebruikt voor regelgebaseerde informatie-extractie met complexe tekenreeks-patronen. Met RegEx kun je patronen ophalen of overeenkomende patronen in een string vervangen door andere patronen. In deze oefening ga je EntityRuler in spaCy gebruiken om e-mailadressen te vinden in een gegeven text.
Het spaCy-pakket is al voor je geïmporteerd. Je kunt \d gebruiken om tekenreeks-patronen te matchen die staan voor een metateken dat elk cijfer van 0 tot en met 9 matcht.
Een spaCy-patroon kan REGEX als attribuut gebruiken. In dat geval heeft een patroon de vorm [{"TEXT": {"REGEX": "<a given pattern>"}}].
Deze oefening maakt deel uit van de cursus
Natural Language Processing met spaCy
Oefeninstructies
- Definieer een patroon om telefoonnummers van de vorm
8888888888te matchen voor gebruik door deEntityRuler. - Laad een leeg Engelstalig
spaCy-model en voeg eenEntityRuler-component toe aan de pipeline. - Voeg het gecompileerde patroon toe aan de
EntityRuler-component. - Voer het model uit en print de tuple van tekst en entiteitstype voor de gegeven
text.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
text = "Our phone number is 4251234567."
# Define a pattern to match phone numbers
patterns = [{"label": "PHONE_NUMBERS", "pattern": [{"TEXT": {"REGEX": "(____){____}"}}]}]
# Load a blank model and add an EntityRuler
nlp = spacy.____("en")
ruler = nlp.____("entity_ruler")
# Add the compiled patterns to the EntityRuler
ruler.____(patterns)
# Print the tuple of entities texts and types for the given text
doc = ____(____)
print([(ent.____, ent.____) for ent in doc.____])