Corrispondenze con sintassi estesa in spaCy
L’estrazione di informazioni basata su regole è fondamentale per qualsiasi pipeline di NLP. La classe Matcher rende i pattern più espressivi consentendo alcuni operatori tra le parentesi graffe. Questi operatori servono per confronti avanzati e ricordano gli operatori di Python in, not in e quelli di confronto. In questo esercizio farai pratica con la funzionalità di matching di spaCy, Matcher, per trovare corrispondenze per termini specifici in un testo di esempio.
La classe Matcher è già importata dalla libreria spacy.matcher. In questo esercizio userai un contenitore Doc di un testo di esempio chiamando doc. Un modello spaCy pre-caricato è disponibile come nlp.
Questo esercizio fa parte del corso
Natural Language Processing con spaCy
Istruzioni dell'esercizio
- Definisci un oggetto matcher usando
Matcherenlp. - Usa l’operatore
INper definire un pattern che corrisponda atiny squaresetiny mouthful. - Usa questo pattern per trovare corrispondenze in
doc. - Stampa gli indici di inizio e fine dei token e lo span di testo delle corrispondenze.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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)