Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Initialiseer een PhraseMatcher-klasse met een attr om te matchen op de shape van de gegeven terms.
  • Maak patterns om toe te voegen aan het PhraseMatcher-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)
Code bewerken en uitvoeren