PhraseMatcher in spaCy
Bei der Verarbeitung unstrukturierter Texte hast du oft lange Listen und Wörterbücher, die du in Texten durchsuchen und abgleichen möchtest. Die Matcher-Muster sind handgefertigt, und jeder Token muss einzeln definiert werden. Wenn du eine lange Liste von Phrasen hast, ist Matcher nicht mehr die beste Option. In diesem Fall hilft dir die Klasse PhraseMatcher, lange Wörterbücher abzugleichen. In dieser Übung übst du, mit der Klasse PhraseMatcher Muster anhand passender Shapes für mehrere Begriffe zu finden.
Das Modell en_core_web_sm ist bereits geladen und als nlp verfügbar. Die Klasse PhraseMatcher ist importiert. Eine Zeichenkette text und eine Liste terms stehen dir zur Verfügung.
Diese Übung ist Teil des Kurses
Natural Language Processing mit spaCy
Anleitung zur Übung
- Initialisiere eine
PhraseMatcher-Klasse mit einemattr, um auf die Shape der gegebenentermsabzugleichen. - Erstelle
patterns, die demPhraseMatcher-Objekt hinzugefügt werden sollen. - Finde Übereinstimmungen zu den Mustern und gib die Start- und End-Token-Indizes sowie den passenden Abschnitt des gegebenen
textaus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]
# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)
# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)
# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)