Corrispondenza di frasi efficiente
A volte è più efficiente cercare corrispondenze su stringhe esatte invece di scrivere pattern che descrivono i singoli token. Questo vale soprattutto per categorie finite di elementi, come tutti i paesi del mondo.
Abbiamo già un elenco di paesi, quindi usiamolo come base per il nostro script di estrazione di informazioni. Un elenco di nomi di stringhe è disponibile nella variabile COUNTRIES. L'oggetto nlp e un doc di test sono già stati creati e doc.text è stato stampato nel terminale.
Questo esercizio fa parte del corso
NLP avanzato con spaCy
Istruzioni dell'esercizio
- Importa
PhraseMatchere inizializzalo con ilvocabcondiviso nella variabilematcher. - Aggiungi i pattern di frasi ed esegui il matcher su
doc.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Import the PhraseMatcher and initialize it
from spacy.____ import ____
matcher = ____(____)
# Create pattern Doc objects and add them to the matcher
# This is the faster version of: [nlp(country) for country in COUNTRIES]
patterns = list(nlp.pipe(COUNTRIES))
matcher.add('COUNTRY', None, *patterns)
# Call the matcher on the test document and print the result
matches = ____(____)
print([doc[start:end] for match_id, start, end in matches])