from spacy.lang.es import Spanish nlp = Spanish() people = ["David Bowie", "Angela Merkel", "Lady Gaga"] # Crea una lista de patrones para el PhraseMatcher patterns = list(nlp.pipe(people))
import json from spacy.matcher import Matcher from spacy.lang.es import Spanish with open("exercises/es/adidas.json", encoding="utf8") as f: TEXTS = json.loads(f.read()) nlp = Spanish() matcher = Matcher(nlp.vocab) # Dos tokens que en minúsculas encuentran "adidas" y "zx" pattern1 = [{"LOWER": "adidas"}, {"LOWER": "zx"}] # Token que en minúsculas encuentra "adidas" y un dígito pattern2 = [{"LOWER": "adidas"}, {"IS_DIGIT": True}] # Añade los patrones al matcher y revisa el resultado matcher.add("ROPA", None, pattern1, pattern2) for doc in nlp.pipe(TEXTS): print([doc[start:end] for match_id, start, end in matcher(doc)])
import json from spacy.lang.es import Spanish from spacy.tokens import Span from spacy.matcher import PhraseMatcher with open("exercises/es/countries.json", encoding="utf8") as f: COUNTRIES = json.loads(f.read()) with open("exercises/es/capitals.json", encoding="utf8") as f: CAPITALS = json.loads(f.read()) nlp = Spanish() matcher = PhraseMatcher(nlp.vocab) matcher.add("COUNTRY", None, *list(nlp.pipe(COUNTRIES))) def countries_component(doc): # Crea un Span de entidades con el label "LOC" para todos los resultados matches = matcher(doc) doc.ents = [ ____(____, ____, ____, label=____) for match_id, start, end in matches ] return doc # Añade el componente al pipeline ____.____(____) print(nlp.pipe_names) # El getter que busca el texto del span en un diccionario de ciudades # capitales de países
import json from spacy.lang.es import Spanish with open("exercises/es/countries.json", encoding="utf8") as f: COUNTRIES = json.loads(f.read()) nlp = Spanish() doc = nlp("La Unión Europea fue fundada por seis países de Europa occidental " "(Francia, Alemania, Italia, Bélgica, Países Bajos, y Luxemburgo) y " "se amplió en seis ocasiones.") # Importa el PhraseMatcher e inicialízalo from spacy.____ import ____ matcher = ____(____) # Crea objetos Doc patrón y añádelos al matcher # Esta es una versión más rápida de: [nlp(country) for country in COUNTRIES] patterns = list(nlp.pipe(COUNTRIES)) matcher.add("COUNTRY", None, *patterns) # Llama al matcher sobre el documento de prueba e imprime el # resultado en pantalla matches = ____(____) print([doc[start:end] for match_id, start, end in matches])
import json from spacy.lang.es import Spanish from spacy.tokens import Doc with open("exercises/es/bookquotes.json", encoding="utf8") as f: DATA = json.loads(f.read()) nlp = Spanish() # Registra la extensión del Doc, "author" (por defecto None) Doc.set_extension("author", default=None) # Registra la extensión del Doc, "book" (por defecto None) Doc.set_extension("book", default=None) for doc, context in nlp.pipe(DATA, as_tuples=True): # Añade los atributos doc._.book y doc._.author desde el contexto doc._.book = context["book"] doc._.author = context["author"] # Imprime en pantalla el texto y los datos del atributo personalizado print(f"{doc.text}\n — '{doc._.book}' by {doc._.author}\n")