Aan de slagGa gratis aan de slag

Matchen met uitgebreide syntax in spaCy

Regelgebaseerde informatie-extractie is essentieel voor elke NLP-pijplijn. Met de Matcher-klasse kun je expressievere patronen maken door operatoren toe te staan binnen de accolades. Deze operatoren bieden uitgebreide vergelijkingen en lijken op Python's in, not in en vergelijkingsoperatoren. In deze oefening ga je oefenen met de matchingfunctionaliteit van spaCy, Matcher, om matches te vinden voor opgegeven termen in een voorbeeldtekst.

De klasse Matcher is al geïmporteerd uit de bibliotheek spacy.matcher. Je gebruikt een Doc-container van een voorbeeldtekst in deze oefening via doc. Een vooringeladen spaCy-model is ook beschikbaar als nlp.

Deze oefening maakt deel uit van de cursus

Natural Language Processing met spaCy

Cursus bekijken

Oefeninstructies

  • Definieer een matcher-object met Matcher en nlp.
  • Gebruik de operator IN om een patroon te definiëren dat matcht op tiny squares en tiny mouthful.
  • Gebruik dit patroon om matches te vinden in doc.
  • Print de start- en eind-tokenindexen en de tekstspanne van de matches.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)

# Define a matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match tiny squares and tiny mouthful
pattern = [{"lower": ____}, {"lower": {____: ["squares", "mouthful"]}}]

# Add the pattern to matcher object and find matches
matcher.____("CustomMatcher", [____])
matches = ____(____)

# Print out start and end token indices and the matched text span per match
for match_id, start, end in matches:
    print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)
Code bewerken en uitvoeren