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
Oefeninstructies
- Definieer een matcher-object met
Matcherennlp. - Gebruik de operator
INom een patroon te definiëren dat matcht optiny squaresentiny 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)