Aan de slagGa gratis aan de slag

Efficiënt zinsdeelmatchen

Soms is het efficiënter om exacte strings te matchen dan om patronen te schrijven voor de losse tokens. Dit geldt vooral voor eindige categorieën – zoals alle landen ter wereld.

We hebben al een lijst met landen, dus laten we die gebruiken als basis voor ons informatie-extractiescript. Een lijst met namen als strings is beschikbaar in de variabele COUNTRIES. Het nlp-object en een test-doc zijn al aangemaakt en doc.text is in de shell geprint.

Deze oefening maakt deel uit van de cursus

Geavanceerde NLP met spaCy

Cursus bekijken

Oefeninstructies

  • Importeer de PhraseMatcher en initialiseer deze met de gedeelde vocab als de variabele matcher.
  • Voeg de zinsdeelpatronen toe en roep de matcher aan op de doc.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Import the PhraseMatcher and initialize it
from spacy.____ import ____
matcher = ____(____)

# Create pattern Doc objects and add them to the matcher
# This is the faster version of: [nlp(country) for country in COUNTRIES]
patterns = list(nlp.pipe(COUNTRIES))
matcher.add('COUNTRY', None, *patterns)

# Call the matcher on the test document and print the result
matches = ____(____)
print([doc[start:end] for match_id, start, end in matches])
Code bewerken en uitvoeren