Lematización en spaCy

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

La lematización en spaCy, al igual que en Python y en otras áreas, es una técnica de normalización de textos que busca reducir las palabras a su raíz o lema. Esta técnica es muy utilizada para reducir la cardinalidad del vocabulario, por lo que se asocia un único token para diferentes formas flexionadas (‘entreno’, ‘entrenarás’, ‘entrenaría’ → ‘entrenar’).

Estas técnicas también son muy empleadas en motores de búsqueda para reducir la búsqueda como tal, ya que, al emplear solo el lema, estamos minimizando la posibilidad de error en nuestros resultados.

Ejemplos de lematización en spaCy

Ejemplo 1

Es posible que hasta ahora hayas hecho este proceso a mano por medio de un mapeo, pero esta es una tarea un poco engorrosa. En spaCy ya viene incluida esta funcionalidad y se puede emplear a través del atributo lemma.

Veamos un ejemplo de lematización en spaCy para entender un poco mejor cómo funciona. Este ejemplo lo haremos con la siguiente frase:

Mi nombre es Fran y vivo en Madrid. Hoy es lunes 31 de enero de 2022

#lematización en spaCy
print ('{0 : 10} {1 : 10} {2 : 10}'.format ('Token', 'Lemma', 'PoS Tag'))
for idx, token in enumerate (doc):
      print ('{0 : 10} {1 : 10} {2 : 10}'.format (token.text, token.lemma_, token.pos_))
TokenLemmaPoS Tag
MiMiDET
nombrenombrarNOUN
esserAUX
FranFranPROPN
yyCONJ
vivovivirVERB
enenADP
MadridMadridPROPN
..PUNCT
HoyHoyADV
esserAUX
luneslunesNOUN
3131NUM
dedeADP
eneroeneroNOUN
dedeADP
20222022NUM

Para hacer el análisis del NER, así como el PoS, podemos obtener el propio lema, la palabra lematizada de cada uno de los tokens presentes en la frase. De este modo, tenemos que los lemas que cambian son, casi de forma exclusiva, los verbos, los cuales se ponen en infinitivo (caminar, comer, hablar, entrenar).

Tenemos un caso particular: el del token nombre. Este se categoriza como sustantivo (NOUN), pero se lematiza como verbo (nombrar). SpaCy tiene la capacidad de hacer estas desambiguaciones.

Ejemplo 2

Veamos otro ejemplo de lematización en spaCy. En este caso, tenemos distintas formas del mismo verbo, comer. También tenemos, en el segundo ejemplo, la variación comerás.

#Lematización en spaCy
text_2 = 'comer comiendo comieron comedor comeré comerá comerás'
text_3 = 'comerás'
doc_2 = nlp_es (text_2)
doc_3 = nlp_es (text_3)

print ('Text 2')
print ('{0 : 10} {1 : 10} {2 : 10}'.format ('Token', 'Lemma', 'PoS Tag'))
for idx, token in enumerate (doc_2):
      print ('{0 : 10} {1 : 10} {2 : 10}'.format (token.text, token.lemma_, token.pos_))

print ('\nText 3')
print ('{0 : 10} {1 : 10} {2 : 10}'.format ('Token', 'Lemma', 'PoS Tag'))
for idx, token in enumerate (doc_3):
      print ('{0 : 10} {1 : 10} {2 : 10}'.format (token.text, token.lemma_, token.pos_))

Lo que hemos hecho, por tanto, ha sido aplicar el modelo en español para el texto 2 y para el texto 3. Observemos el resultado:

TokenLemmaPoS Tag
comercomerAUX
comiendocomerVERB
comieroncomerVERB
comedorcomedorNOUN
comerécomerPROPN
comerácomerVERB
comeráscomerADJ
Text 2: : lematización en spaCy

TokenLemmaPoS Tag
comeráscomerINTJ
Text 3: lematización en spaCy

Vemos que el lema o lemma es constante, excepto en un caso, comedor, en el que es, igualmente, comedor y se cataloga como sustantivo o NOUN.

Lematización vs stemming

Seguro que habrás escuchado hablar de que ambas tienen como objetivo reducir las palabras a su raíz léxica, pero veamos algunas particularidades de cada uno de estos procesos:

Lematización

Tiene en consideración el análisis morfológico de las palabras. Son necesarios diccionarios completos de formas flexionadas y raíces (lemmas).

A veces es necesario desambiguar. Por ejemplo, en el caso de planta (planta vs plantar) o de nombre (nombre vs nombrar).

Lematización en SpaCy

Stemming

Son algoritmos que mediante heurísticos/reglas tratan de reducir las palabras a una posible raíz (stem) a través de la eliminación de algunos prefijos y sufijos. Este proceso es más sencillo que un lemmatizer.

No hay garantía de que el resultado sea una palabra real.

El algoritmo más utilizado en inglés es el de Porter, que consiste en 5 fases de reducción de la palabra aplicadas de manera secuencial.

Lematización en spaCy

¿Quieres seguir avanzando?

Para poder acceder a las opciones laborales del Big Data, una de las áreas mejor pagadas, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva adquirirás los conocimientos teóricos y prácticos necesarios para conseguir el empleo de tus sueños en pocos meses. ¡No esperes más para impulsar tu carrera y pide más información ya mismo!

Posts Relacionados

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado