IniziaInizia gratis

PhraseMatcher in spaCy

Quando elabori testo non strutturato, capita spesso di avere lunghe liste e dizionari che vuoi scansionare e far combaciare con testi dati. I pattern del Matcher sono creati a mano e ogni token va definito singolarmente. Se hai una lunga lista di frasi, Matcher non è più l'opzione migliore. In questi casi, la classe PhraseMatcher aiuta a far combaciare lunghi dizionari. In questo esercizio, farai pratica nel recuperare pattern con shape corrispondenti a più termini usando la classe PhraseMatcher.

Il modello en_core_web_sm è già caricato e pronto all'uso come nlp. La classe PhraseMatcher è importata. Sono disponibili una stringa text e una lista di terms.

Questo esercizio fa parte del corso

Natural Language Processing con spaCy

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza una classe PhraseMatcher con un attr per far combaciare la shape dei terms forniti.
  • Crea i patterns da aggiungere all'oggetto PhraseMatcher.
  • Trova le corrispondenze per i pattern dati e stampa gli indici dei token di inizio e fine e la sezione corrispondente del text fornito.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]

# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)

# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)

# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
    print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)
Modifica ed esegui il codice