Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Definieer een patroon om telefoonnummers van de vorm 8888888888 te matchen voor gebruik door de EntityRuler.
  • Laad een leeg Engelstalig spaCy-model en voeg een EntityRuler-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.____])
Code bewerken en uitvoeren