PhraseMatcher in spaCy
Bij het verwerken van ongestructureerde tekst heb je vaak lange lijsten en woordenboeken die je wilt scannen en matchen in gegeven teksten. De Matcher-patronen zijn handmatig en elke token moet afzonderlijk worden gecodeerd. Als je een lange lijst met frasen hebt, is Matcher niet langer de beste optie. In dat geval helpt de klasse PhraseMatcher om lange woordenlijsten te matchen. In deze oefening ga je oefenen met het ophalen van patronen met overeenkomende shapes voor meerdere termen met de klasse PhraseMatcher.
Het model en_core_web_sm is al geladen als nlp. De klasse PhraseMatcher is geïmporteerd. Een text-string en een lijst met terms zijn beschikbaar voor je gebruik.
Deze oefening maakt deel uit van de cursus
Natural Language Processing met spaCy
Oefeninstructies
- Initialiseer een
PhraseMatcher-klasse met eenattrom te matchen op de shape van de gegeventerms. - Maak
patternsom toe te voegen aan hetPhraseMatcher-object. - Zoek overeenkomsten met de gegeven patronen en print de start- en eind-tokenindexen en het overeenkomende stuk van de gegeven
text.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)