Abgleichen mit erweiterter Syntax in spaCy
Regelbasierte Informationsextraktion ist ein zentraler Bestandteil jeder NLP-Pipeline. Die Klasse Matcher macht Muster (Patterns) ausdrucksstärker, indem sie Operatoren in geschweiften Klammern erlaubt. Diese Operatoren dienen erweiterten Vergleichen und ähneln Python-Operatoren wie in, not in sowie Vergleichsoperatoren. In dieser Übung arbeitest du mit der Matching-Funktionalität von spaCy, dem Matcher, um Treffer für vorgegebene Begriffe in einem Beispieltext zu finden.
Die Klasse Matcher ist bereits aus der Bibliothek spacy.matcher importiert. In dieser Übung verwendest du einen Doc-Container mit Beispieltext, erreichbar über doc. Ein vorab geladenes spaCy-Modell ist außerdem unter nlp verfügbar.
Diese Übung ist Teil des Kurses
Natural Language Processing mit spaCy
Anleitung zur Übung
- Definiere ein Matcher-Objekt mit
Matcherundnlp. - Verwende den Operator
IN, um ein Pattern zu definieren, dastiny squaresundtiny mouthfulabgleicht. - Verwende dieses Pattern, um Treffer in
doczu finden. - Gib Start- und End-Token-Indizes sowie die Textspanne der Treffer aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Define a matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match tiny squares and tiny mouthful
pattern = [{"lower": ____}, {"lower": {____: ["squares", "mouthful"]}}]
# Add the pattern to matcher object and find matches
matcher.____("CustomMatcher", [____])
matches = ____(____)
# Print out start and end token indices and the matched text span per match
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)