Emparejamiento con sintaxis extendida en spaCy
La extracción de información basada en reglas es esencial en cualquier pipeline de NLP. La clase Matcher permite que los patrones sean más expresivos al incluir algunos operadores dentro de las llaves. Estos operadores sirven para comparaciones extendidas y se parecen a los operadores de Python in, not in y de comparación. En este ejercicio, practicarás la funcionalidad de emparejamiento de spaCy, Matcher, para encontrar coincidencias de términos dados en un texto de ejemplo.
La clase Matcher ya está importada desde la librería spacy.matcher. Usarás un contenedor Doc con un texto de ejemplo en este ejercicio llamándolo doc. También tienes disponible un modelo pre-cargado de spaCy en nlp.
Este ejercicio forma parte del curso
Procesamiento del Lenguaje Natural con spaCy
Instrucciones del ejercicio
- Define un objeto matcher usando
Matcherynlp. - Usa el operador
INpara definir un patrón que haga match continy squaresytiny mouthful. - Usa este patrón para buscar coincidencias en
doc. - Imprime los índices de tokens de inicio y fin, y el tramo de texto de cada coincidencia.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)