Stemming y lematización

Autores

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

¿Qué son el stemming y la lematización?

En el procesamiento del lenguaje natural (PLN), la derivación y la lematización son técnicas de preprocesamiento de textos que reducen las formas flexionadas de las palabras en un conjunto de datos de texto a una palabra raíz común o forma de diccionario, también conocida como "lema" en lingüística computacional1.

El stemming y la lematización son especialmente útiles en los sistemas de recuperación de información, como los motores de búsqueda, donde los usuarios pueden enviar una consulta con una palabra (por ejemplo, meditar) pero esperar resultados que utilicen cualquier forma declinada de la palabra (por ejemplo, medita, meditación, etc.). El stemming y la lematización también tienen como objetivo mejorar el procesamiento de texto en los algoritmos de machine learning.

Diagrama que ejemplifica el stemming de variantes morfológicas para "dance"

¿Por qué el stemming y la lematización?

Los investigadores debaten si la inteligencia artificial puede razonar, y este debate se ha extendido a la lingüística computacional. ¿Pueden los chatbots y los modelos de deep learning procesar únicamente formas lingüísticas o pueden entender la semántica?2 Independientemente de lo que se opine al respecto, lo cierto es que los modelos de machine learning deben entrenarse para reconocer distintas palabras como variantes morfológicas de una palabra base. Incluso procesar las palabras en función de la morfología, no de la semántica. Al reducir las formas derivadas de las palabras a una raíz, el stemming y la lematización ayudan a los sistemas de recuperación de información y a los modelos de deep learning a equiparar palabras morfológicamente relacionadas.

Para muchas tareas de minería de textos, como la clasificación, agrupación e indexación de textos, entre otras, el stemming y la lematización ayudan a mejorar la precisión al reducir la dimensionalidad de los algoritmos de machine learning y agrupar palabras relacionadas morfológicamente. La reducción de la dimensionalidad de los algoritmos puede, a su vez, mejorar la exactitud y precisión de los modelos estadísticos en el PLN, como los modelos temáticos y los modelos vectoriales de palabras3.

Las últimas tendencias en IA, presentadas por expertos

Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Está suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

El stemming frente a la lematización

El stemming y la lematización funcionan como una etapa en los procesos de minería de textos que convierten los datos de texto sin procesar en un formato estructurado para su procesamiento automático. Tanto el stemming como la lematización eliminan los afijos de las formas flexivas de las palabras, dejando solo una forma raíz4. Estos procesos consisten en eliminar caracteres del principio y el final de los tokens de palabra. Las raíces resultantes, o palabras base, se transmiten para su posterior procesamiento. Más allá de esta similitud básica, el stemming y la lematización tienen diferencias clave en la forma en que reducen las diferentes formas de una palabra a una forma base común.

Cómo funciona el stemming

Los algoritmos de stemming difieren ampliamente, aunque comparten algunos modos generales de funcionamiento. Los stemmers eliminan los sufijos de las palabras cotejando los tokens de las palabras de entrada con una lista predefinida de sufijos comunes. A continuación, el stemmer elimina de la palabra las cadenas de caracteres sufijo encontradas, en caso de que estas no desafíen ninguna regla o condición asociada a dicho sufijo. Algunos stemmers (por ejemplo, el stemmer de Lovins) pasan los pedacitos resultantes por un conjunto adicional de reglas para corregir las raíces malformadas.

El algoritmo más utilizado es el algoritmo stemming de Porter, y su versión actualizada, el stemmer Snowball. Para entender mejor la lematización, podemos repasar el siguiente pasaje del Hamlet de Shakespeare a través de la lematización Snowball: “No hay nada bueno o malo, pero el pensamiento lo hace así”.

El kit de herramientas de lenguaje natural de Python (NLTK) contiene funciones integradas para los stemmers Snowball y Porter. Después de tokenizar la cita de Hamlet utilizando NLTK, podemos pasar el texto tokenizado a través del lematizador Snowball utilizando este código:

from nltk.stem.snowball import SnowballStemmer
from nltk.tokenize import word_tokenize

stemmer = SnowballStemmer("english", True)
text = "There is nothing either good or bad but thinking makes it so."
words = word_tokenize(text)
stemmed_words = [stemmer.stem(word) for word in words]

print("Original:", text)
print("Tokenized:", words)
print("Stemmed:", stemmed_words)

El código genera:

Original: There is nothing either good or bad but thinking makes it so.
Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
Stemmed: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']

Los algoritmos de Snowball y Porter tienen un método más matemático para eliminar sufijos que otros stemmers. Basta decir que el stemmer compara cada token de palabra con una lista de reglas que especifican las cadenas de sufijos que se deben eliminar en función del número de grupos de vocales y consonantes en un token5. Por supuesto, como la lengua inglesa sigue reglas léxicas generales pero no absolutas, el criterio sistemático del algoritmo de stemming devuelve errores, como noth.

La raíz elimina -ing, siendo una terminación común que indica el presente progresivo. En la cita de Hamlet, sin embargo, al eliminar -ing se obtiene erróneamente la raíz noth. Esto puede impedir que el análisis lingüístico posterior asocie nothing a sustantivos similares, como anything y something. Además, el stemmer deja el verbo irregular is sin cambios. Del mismo modo, el stemmer Snowball deja otras conjugaciones de to be, como was y are, sin raíz. Esto puede impedir que los modelos asocien correctamente las conjugaciones irregulares de un verbo determinado.

Cómo funciona la lematización

La literatura define generalmente el stemming como el proceso de eliminar los afijos de las palabras para obtener cadenas de palabras derivadas, y la lematización como la empresa más amplia de reducir las variantes morfológicas a una forma base del diccionario6. La distinción práctica entre el stemming y la lematización es que, mientras que el stemming simplemente elimina los sufijos comunes del final de los tokens de palabra, la lematización garantiza que la palabra resultante sea una forma normalizada existente de la palabra (por ejemplo, lema) que se puede encontrar en el diccionario7.

Dado que el objetivo de la lematización es obtener las formas base del diccionario, requiere un análisis morfológico más sólido que la separación de palabras. El etiquetado de partes del discurso (POS) es un paso crucial en la lematización. Básicamente, POS asigna cada etiqueta de palabra a su función sintáctica en la oración. El NLTK de Python proporciona una función para el algoritmo de lematización de Word Net, mediante el cual podemos lematizar el pasaje de Hamlet:

from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
from nltk import word_tokenize, pos_tag
 
def get_wordnet_pos(tag):
    if tag.startswith('J'):
        return wordnet.ADJ
    elif tag.startswith('V'):
        return wordnet.VERB
    elif tag.startswith('N'):
        return wordnet.NOUN
    elif tag.startswith('R'):
        return wordnet.ADV
    else:         
        return wordnet.NOUN
       
def lemmatize_passage(text):
    words = word_tokenize(text)
    pos_tags = pos_tag(words)
    lemmatizer = WordNetLemmatizer()
    lemmatized_words = [lemmatizer.lemmatize(word, get_wordnet_pos(tag)) for word, tag in pos_tags]
    lemmatized_sentence = ' '.join(lemmatized_words)
    return lemmatized_sentence
 
text = "There is nothing either good or bad but thinking makes it so."
result = lemmatize_passage(text)
 
print("Original:", text)
print("Tokenized:", word_tokenize(text))
print("Lemmatized:", result)

El código devuelve:

Original: There is nothing either good or bad but thinking makes it so.
Tokenized: ['There', 'is', 'nothing', 'either', 'good', 'or', 'bad', 'but', 'thinking', 'makes', 'it', 'so', '.']
Lemmatized: There be nothing either good or bad but think make it so.

El WordNetLemmatizer, al igual que el stemmer Snowball, reduce las conjugaciones verbales a formas básicas, por ejemplo, thinking en think, makes en make. Sin embargo, a diferencia del algoritmo de stemming de Snowball, el lematizador no identifica nothing como un sustantivo y deja su terminación -ing inalterada, mientras que cambia is a su forma base be. De este modo, el lematizador combina de forma más adecuada las formas verbales irregulares.

Mixture of Experts | 12 de diciembre, episodio 85

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

Limitaciones

El stemming y la lematización sirven principalmente para normalizar los datos de texto en inglés. Ambas técnicas de normalización de texto también son compatibles con otras lenguas de escritura latina, como el francés, el alemán y el español. Otras escrituras, como la rusa, son compatibles con el stemmer de Snowball. El desarrollo de algoritmos de stemming y lematización para otros idiomas, en particular el árabe, es un área de investigación reciente y en curso. El árabe es particularmente difícil debido a su morfología aglutinante, variaciones ortográficas y ambigüedad léxica, entre otras características8. En conjunto, estos elementos dificultan la existencia de un método sistemático para identificar las formas de palabras base entre las variantes morfológicas, al menos en comparación con las palabras en inglés.

Más allá de esta limitación general, el stemming y la lematización tienen sus respectivas desventajas. Como se ilustra con el ejemplo de Hamlet, el stemming es un proceso de eliminación de cadenas de caracteres relativamente heurístico y basado en reglas. El overstemming y el understemming son dos errores comunes que surgen. El primero se da cuando dos palabras semánticamente distintas se reducen a la misma raíz (por ejemplo, de news a new); el understemming se da cuando dos palabras relacionadas semánticamente no se reducen a la misma raíz (por ejemplo, knavish y knave a knavish y knave respectivamente)9. Además, el stemming solo elimina sufijos de las palabras y, por lo tanto, no puede tener en cuenta las formas verbales irregulares o los prefijos como hace la lematización. Por supuesto, el stemming es relativamente simple y fácil de aplicar, mientras que la lematización puede ser más costosa en términos de computación y requerir más tiempo, en función del tamaño de los datos procesados.

Soluciones relacionadas
IBM watsonx Orchestrate

Diseñe asistentes y agentes de IA escalables con facilidad, automatice tareas repetitivas y simplifique procesos complejos con IBM watsonx Orchestrate.

Descubra watsonx Orchestrate
Herramientas y API de procesamiento del lenguaje natural

Acelere el valor empresarial de la inteligencia artificial con una cartera potente y flexible de bibliotecas, servicios y aplicaciones.

Explore soluciones de PLN
Consultoría y servicios de IA

Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.

Explore los servicios de IA
Dé el siguiente paso

Diseñe asistentes y agentes de IA escalables con facilidad, automatice tareas repetitivas y simplifique procesos complejos con IBM watsonx Orchestrate.

Descubra watsonx Orchestrate Explore soluciones de PLN