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 de lenguaje natural (PLN), la derivación y la lematización son técnicas de preprocesamiento de texto 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 computacional.1

La derivación y la lematización son particularmente ú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 usen cualquier forma flexionada de la palabra (por ejemplo, medita, meditación, etc.). El stemming y la lematización tienen como objetivo mejorar el procesamiento de texto en algoritmos de machine learning.

Diagrama que ejemplifica el origen de las variantes morfológicas de la danza

¿Por qué stemming y lematización?

Los investigadores debaten si la inteligencia artificial puede razonar, y este debate se extendió a la lingüística computacional. ¿Pueden los chatbots y los modelos de aprendizaje profundo procesar únicamente formas lingüísticas o pueden comprender la semántica?2 Independientemente de lo que uno crea sobre este asunto, los modelos de machine learning deben entrenarse para reconocer diferentes palabras como variantes morfológicas de una palabra base. Incluso procesan palabras según la morfología, no la semántica. Al reducir las formas derivativas de las palabras a una palabra raíz, el stemming y la lematización ayudan a los sistemas de recuperación de información y a los modelos de aprendizaje profundo a equiparar palabras morfológicamente relacionadas.

En muchas tareas de minería de textos, como la clasificación, la agrupación o la indexación, 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 morfológicamente relacionadas. La reducción de la dimensionalidad del algoritmo puede, a su vez, mejorar la exactitud y precisión de los modelos estadísticos en NLP, como los modelos temáticos y los modelos vectoriales de palabras.3

Las últimas tendencias de IA presentadas por expertos

Obtenga insights curados 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! Ya está suscrito.

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

Stemming versus lematización

El stemming y la lematización son una de las etapas de la minería de textos que convierte los datos de texto en bruto en un formato estructurado para su procesamiento automático. Tanto el stemming como la lematización eliminan los afijos de las formas de palabras flexionadas, dejando solo una forma raíz.4 Estos procesos consisten en eliminar caracteres del principio y el final de las palabras token. Las raíces resultantes, o palabras base, se pasan para su posterior procesamiento. Más allá de esta similitud básica, el stemming y la lematización presentan diferencias clave en el modo en que reducen las distintas 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 ejecutando tokens de palabras de entrada contra una lista predefinida de sufijos comunes. Luego, el stemming elimina cualquier cadena de caracteres de sufijo encontrada en la palabra, siempre que esta no desafíe ninguna regla o condición asociada a ese sufijo. Algunos stemmers (por ejemplo, el stemmer Lovins) ejecutan los bits resultantes a través de un conjunto adicional de reglas para corregir raíces malformadas.

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

El kit de herramientas de lenguaje natural de Python (NLTK) contiene funciones integradas para los stemmers Snowball y Porter. Luego de tokenizar la cita de Hamlet usando NLTK, podemos pasar el texto tokenizado a través del stemmer Snowball usando 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."
palabras = word_tokenize(text) stemmed_words = [stemmer.stem(word) for word inwords] print("Original:", text) print("Tokenized:",words) print("Stemmed:", stemmed_words)

El código da como resultado:

Original: There is nothing either good or bad but thinking makes it so.
Tokenizado: ['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 stemmer de Snowball y Porter tienen un método más matemático para eliminar sufijos que otros stemmers. Baste decir que el stemmer ejecuta cada token de palabra contra una lista de reglas que especifican cadenas de sufijos para eliminar de acuerdo con la cantidad de grupos de vocales y consonantes en un token.5 Por supuesto, debido a que el idioma inglés sigue reglas léxicas generales pero no absolutas, el criterio sistemático del algoritmo de stemming devuelve errores, como noth.

El stemmer elimina -ing, ya que es una terminación común que significa el presente progresivo. En la cita de Hamlet , sin embargo, eliminar -ing erróneamente produce 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 sin cambios. De manera similar, el stemmer Snowball deja otras conjugaciones de to be, como was y are, sin derivación. Esto puede impedir que los modelos asocien correctamente las conjugaciones irregulares de un verbo determinado.

Cómo funciona la lematización

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

Debido a que la lematización tiene como objetivo generar formas basadas en diccionarios, requiere un análisis morfológico más estable que el stemming. El etiquetado de parte del discurso (POS) es un paso crucial en la lematización. POS esencialmente asigna cada etiqueta de palabra que significa 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_sentence) 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 entrega lo siguiente:

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

WordNetLemmatizer, al igual que Snowball stemmer, reduce las conjugaciones de verbos a formas básicas; por ejemplo, thinking to think, does to make. Sin embargo, a diferencia del algoritmo de stemming de Snowball, el lematizador no identifica nada como un sustantivo y, de manera apropiada, deja su terminación -ing inalterada mientras que la alteración adicional es a su forma base be. De esta manera, el lematizador combina de manera más apropiada las formas verbales irregulares.

Mixture of Experts | 12 de diciembre, episodio 85

Decodificación de 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 revuelo de la IA para ofrecerle las últimas noticias e insights al respecto.

Limitaciones

El stemming y la lematización respaldan principalmente la normalización de datos de texto en idioma inglés. Ambas técnicas de normalización de texto también admiten otros idiomas con escritura romana, como el francés, el alemán y el español. El stemmer Snowball también es compatible con otros sistemas de escritura, como el ruso. El desarrollo de algoritmos de stemming y lematización para otros idiomas, especialmente el árabe, es un área de investigación reciente y en curso. El árabe es particularmente desafiante debido a su morfología aglutinante, variaciones ortográficas y ambigüedad léxica, entre otras características.8 En conjunto, estos elementos problematizan un método sistemático para identificar formas básicas de palabras entre variantes morfológicas, al menos cuando se comparan con 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 relativamente heurístico basado en reglas de eliminación de cadenas de caracteres. El over-stemming y under-stemming son dos errores comunes. La primera es cuando dos palabras semánticamente distintas se reducen a la misma raíz (por ejemplo, de news a new); el under-stemming es cuando dos palabras relacionadas semánticamente no se reducen a la misma raíz (por ejemplo, de knavish y knave a knavish y knave respectivamente).9 Además, el stemming solo borra los sufijos de las palabras y, por lo tanto, no puede explicar formas verbales irregulares o prefijos como lo hace la lematización. Por supuesto, el stemming es relativamente simple y fácil de implementar, mientras que la lematización puede ser más costosa computacionalmente y consumir mucho tiempo dependiendo 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 de lenguaje natural

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

Explorar las soluciones de PLN
Consultoría y servicios de IA

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

Conozca 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 Explorar las soluciones de PLN