Effettuare il matching di un singolo termine in spaCy
I pattern RegEx non sono semplici da leggere, scrivere e fare debug. Ma non sei senza alternative: spaCy offre un'opzione leggibile e adatta alla produzione, la classe Matcher. La classe Matcher può far corrispondere regole predefinite a una sequenza di token in un contenitore Doc. In questo esercizio, farai pratica con Matcher per trovare una singola parola.
Puoi accedere al testo corrispondente in example_text e usare nlp e doc per accedere rispettivamente a un modello spaCy e al contenitore Doc di example_text.
Questo esercizio fa parte del corso
Natural Language Processing con spaCy
Istruzioni dell'esercizio
- Inizializza una classe
Matcher. - Definisci un pattern per fare il match di
witchin minuscolo inexample_text. - Aggiungi i pattern alla classe
Matchere trova le corrispondenze. - Itera sulle corrispondenze e stampa gli indici dei token di inizio e fine e lo span del testo trovato.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Initialize a Matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match lower cased word witch
pattern = [{"lower" : ____}]
# Add the pattern to matcher object and find matches
matcher.add("CustomMatcher", [____])
matches = matcher(____)
# Print start and end token indices and span of the matched text
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)