Mi IBM Iniciar sesión Suscríbase

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

10 de diciembre de 2023

Autores

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Program Manager

El stemming y la lematización son técnicas de preprocesamiento de texto que reducen las variantes de las palabras a una forma básica.

Elstemming y la lematización son técnicas de preprocesamiento de texto en el procesamiento de lenguaje natural (PLN). Específicamente, 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

El stemming 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.

¿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

Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA 


Descubra insights y noticias de expertos sobre IA, la nube y mucho más en el boletín semanal Think. 

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.

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.

Mixture of Experts | Podcast

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.

Soluciones relacionadas

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
Notas de pie de página

1 Nitin Indurkhya and Fred Damerau, Handbook of Natural Language Processing, 2nd edition, CRC Press, 2010.

2 Zhaofeng Wu, Linlu Qiu, Alexis Ross, Ekin Akyürek, Boyuan Chen, Bailin Wang, Najoung Kim, Jacob Andreas, Yoon Kim, "Razoning or Reciting? Explorando las Capacidades y Limitaciones de los Modelos de Lenguaje a Través de Tareas Contrafácticas," 2023, https://arxiv.org/abs/2307.02477. Gati Aher, Rosa Arriaga, Adam Kalai, "Usando modelos de lenguaje grandes para simular múltiples humanos y replicar estudios de sujetos humanos", Actas de la 40.ª Conferencia Internacional sobre Aprendizaje Automático, PMLR, vol. 202, 2023, págs. 337-371, https://proceedings.mlr.press/v202/aher23a.html. Emily Bender y Alexander Koller, “Climbing to NLU: On Meaning, Form and Understanding in the Age of Data”, Minutas de la 58ª reunión anual de la Association for Computational Linguistics, 2020, págs. 5185-5198, 10.18653/v1/2020.acl-main.463.

3 Gary Miner, Dursun Delen, John Elder, Andrew Fast, Thomas Hill, and Robert A. Nisbet, Practical Text Mining and Statistical Analysis for Non-Structured Text Data Applications, Academic Press, 2012.

4 Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, MIT Press, 1999.

5 Martin Porter, "An algorithm for suffix stripping", Program: electronic library and information systems, Vol. 14, No. 3, 1980, pp. 130-137, https://www.emerald.com/insight/content/doi/10.1108/eb046814/full/html. Martin Porter, “Snowball: A language for stemming algorithms,” 2001, https://snowballstem.org/texts/introduction.html.

6 Nitin Indurkhya y Fred Damerau, Manual de procesamiento de lenguaje natural,  edición, CRC Press, 2010. Christopher Manning y Hinrich Schütze, Fundamentos del Procesamiento de Lenguaje Estadístico, MIT Press, 1999.

7 Janez Brank, Dunja Mladenic and Marko Grobelnik, “Feature Construction in Text Mining,” Encyclopedia of Machine Learning and Data Mining, Springer, 2017.

8 Abed Alhakim Freihat, Gábor Bella, Mourad Abbas, Hamdy Mubarak, and Fausto Giunchiglia, "ALP: An Arabic Linguistic Pipeline," Analysis and Application of Natural Language and Speech Processing, 2022, pp.67-99, https://link.springer.com/chapter/10.1007/978-3-031-11035-1_4. Abdul Jabbar, Sajid Iqbal, Manzoor Ilahi Tamimy, Shafiq Hussain and Adnan Akhunzada, "Empirical evaluation and study of text stemming algorithms," Artificial Intelligence Review, Vol. 53, 2020, pp. 5559–5588, https://link.springer.com/article/10.1007/s10462-020-09828-3. Abed Alhakim Freihat, Mourad Abbas, G'abor Bella, Fausto Giunchiglia, "Towards an Optimal Solution to Lemmatization in Arabic," Procedia Computer Science, Vol. 142, 2018, pp. 132-140, https://www.sciencedirect.com/science/article/pii/S1877050918321707?via%3Dihub.

9 Chris Paice, “Stemming,” Encyclopedia of Database Systems, Springer, 2020.