RegEx mit EntityRuler in spaCy
Reguläre Ausdrücke (RegEx) werden für regelbasierte Informationsextraktion mit komplexen Zeichenfolgenmustern verwendet. Mit RegEx kannst du Muster finden oder passende Stellen in einem String durch andere Muster ersetzen. In dieser Übung verwendest du den EntityRuler in spaCy, um E‑Mail-Adressen in einem gegebenen text zu finden.
Das Paket spaCy ist bereits importiert. Du kannst \d verwenden, um ein Metazeichen zu matchen, das für jede Ziffer von 0 bis 9 steht.
Ein spaCy-Pattern kann REGEX als Attribut nutzen. In diesem Fall hat ein Pattern die Form [{"TEXT": {"REGEX": "<a given pattern>"}}].
Diese Übung ist Teil des Kurses
Natural Language Processing mit spaCy
Anleitung zur Übung
- Definiere ein Muster, das Telefonnummern der Form
8888888888erkennt und vomEntityRulerverwendet werden kann. - Lade ein leeres englisches
spaCy-Modell und füge der Pipeline eineEntityRuler-Komponente hinzu. - Füge das kompilierte Muster der
EntityRuler-Komponente hinzu. - Führe das Modell aus und gib für den gegebenen
textdas Tupel aus Text und Typ der erkannten Entitäten aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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.____])