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.
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
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.
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.
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.
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.
Diseñe asistentes y agentes de IA escalables con facilidad, automatice tareas repetitivas y simplifique procesos complejos con IBM watsonx Orchestrate.
Acelere el valor de negocio de la inteligencia artificial con una cartera potente y flexible de bibliotecas, servicios y aplicaciones.
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.
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, 2ª 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.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io