Aan de slagBegin gratis

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

Bekijk cursus

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.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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