O stemming e a lematização são técnicas de pré-processamento de texto que reduzem as variantes de palavras a uma forma básica.
Stemming e lematização são técnicas de pré-processamento de texto no processamento de linguagem natural (NLP). Mais especificamente, elas reduzem as formas flexionadas de palavras em um conjunto de dados de texto para um radical comum ou para a forma do dicionário, também conhecida como "lema" em linguística computacional.1
O stemming e a lematização são particularmente úteis em sistemas de recuperação de informações, como mecanismos de pesquisa, onde os usuários podem enviar uma consulta com uma palavra (por exemplo, meditar), mas esperam resultados que usem qualquer forma flexionada da palavra (por exemplo, meditou, meditação etc.) . O stemming e a lematização visam melhorar ainda mais o processamento de texto em algoritmos de aprendizado de máquina .
Os pesquisadores debatem se a inteligência artificial pode raciocinar, e esse debate se estendeu à linguística computacional. Os chatbots e os modelos de deep learning podem processar apenas formas linguísticas ou podem entender a semântica?2 Independentemente do que se acredite sobre isso, é fato que os modelos de aprendizado de máquina devem ser treinados para reconhecer diferentes palavras como variantes morfológicas de uma palavra base. Até mesmo processar palavras de acordo com a morfologia, não a semântica. Ao reduzir as formas derivacionais das palavras a um radical, o stemming e a lematização ajudam os sistemas de recuperação de informações e modelos de deep learning a equiparar palavras morfologicamente relacionadas.
Em muitas tarefas de mineração de texto, incluindo classificação de texto, agrupamento, indexação e muito mais, o stemming e a lematização ajudam a melhorar a precisão, ao reduzir a dimensionalidade dos algoritmos de aprendizado de máquina e agrupar palavras morfologicamente relacionadas. A redução da dimensionalidade do algoritmo pode, por sua vez, melhorar a exatidão e a precisão dos modelos estatísticos no NLP, como modelos de tópicos e modelos vetoriais de palavras.3
O stemming e a lematização funcionam como um estágio em pipelines de mineração de texto que convertem dados de texto bruto em um formato estruturado para o processamento por máquina. Tanto o stemming quanto a lematização retiram os afixos das formas flexionadas das palavras, deixando apenas uma forma raiz.4 Esses processos equivalem a remover caracteres do início e do final dos tokens de palavras. As raízes resultantes, ou palavras base, são então passadas para processamento posterior. Além dessa semelhança básica, o stemming e a lematização têm diferenças importantes na forma como reduzem diferentes formas de uma palavra a uma forma base comum.
Os algoritmos de stemming diferem amplamente, embora compartilhem alguns modos gerais de operação. Os stemmers eliminam sufixos de palavras executando tokens de palavras de entrada em uma lista predefinida de sufixos comuns. O stemmer então remove todas as cadeias de caracteres de sufixos encontradas na palavra, caso esta última não desafie nenhuma regra ou condição associada a esse sufixo. Alguns stemmers (por exemplo, o stemmer de Lovins) submetem os radicais resultantes a um conjunto adicional de regras para corrigir raízes malformadas.
O algoritmo mais amplamente utilizado é o algoritmo de stemming de Porter, e sua versão atualizada é o stemmer Snowball. Para entender melhor o stemming, podemos ler a seguinte passagem de Hamlet, de Shakespeare, por meio do stemmer Snowball: "There is nothing either good or bad but thinking makes it so" (Não há nada bom ou nada mau, mas o pensamento o faz assim).
A biblioteca Natural Language Toolkit (NLTK) do Python contém funções integradas para os stemmers Snowball e de Porter. Depois de tokenizar a citação de Hamlet usando NLTK, podemos passar o texto tokenizado pelo 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." words = word_tokenize(text) stemmed_words = [stemmer.stem(word) for word in words] print("Original:", text) print("Tokenized:", words) print("Stemmed:", stemmed_words)
O código produz:
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', '.'] Após o stemming: ['there', 'is', 'noth', 'either', 'good', 'or', 'bad', 'but', 'think', 'make', 'it', 'so', '.']
Os algoritmos de stemmer de Snowball e Porter têm um método mais matemático de eliminar sufixos do que outros stemmers. Basta dizer que o stemmer submete cada token de palavra a uma lista de regras que especificam cadeias de sufixo a serem removidas de acordo com o número de grupos de vogais e consoantes em um token.5 É claro que, como o idioma inglês segue regras léxicas gerais, mas não absolutas, o critério sistemático do algoritmo de stemming retorna erros, como noth.
O stemmer remove -ing, que é o sufixo usado no tempo presente contínuo do inglês. Na citação de Hamlet , no entanto, remover -ing produz erroneamente noth. Isso pode impedir que análises linguísticas subsequentes associem nothing a substantivos semelhantes, como anything e something. Além disso, o stemmer deixa o verbo irregular inalterado. Da mesma forma, o stemmer Snowball deixa outras conjugações de to be, como was e are, sem radical. Isso pode impedir que os modelos associem adequadamente conjugações irregulares de um determinado verbo.
A literatura geralmente define o stemming como o processo de remover afixos de palavras para obter sequências de palavras reduzidas ao radical, e a lematização como o maior esforço de reduzir as variações morfológicas à forma base do dicionário.6 A distinção prática entre o stemming e lematização é que, enquanto o stemming simplesmente remove sufixos comuns do final dos tokens de palavras, a lematização garante que a palavra de saída seja uma forma normalizada existente da palavra (por exemplo, lema) que pode ser encontrada no dicionário.7
Como a lematização tem por objetivo produzir as formas básicas do dicionário, ela exige uma análise morfológica mais robusta do que o stemming. A etiquetagem morfossintática (POS) é uma etapa crucial na lematização. Essencialmente, a POS atribui a cada palavra uma tag correspondente à sua função sintática na oração. O Python NLTK fornece uma função para o algoritmo Word Net Lemmatization, por meio do qual podemos lematizar a passagem 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)
O código retorna:
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', '.'] Lematizado: There be nothing either good or bad but think make it so .
O WordNetLemmatizer, bem como o stemmer Snowball, reduzem as conjugações dos verbos a formas básicas — por exemplo, thinking para think, makes para make. No entanto, diferentemente do algoritmo de stemming Snowball, o lematizador não só identifica nothing como substantivo e deixa adequadamente seu final -ing inalterado, como também altera is para sua forma básica be. Dessa forma, o lematizador organiza de forma mais apropriada as formas dos verbos irregulares.
O stemming e a lematização são compatíveis principalmente com a normalização de dados de textos no idioma inglês. Ambas as técnicas de normalização de textos também são compatíveis com vários outros idiomas com alfabeto romano, como francês, alemão e espanhol. Outros alfabetos, como o russo, são mais compatíveis com o stemmer de Snowball. O desenvolvimento de algoritmos de stemming e lematização para outros idiomas, principalmente o árabe, é uma área de pesquisa recente e em andamento. O árabe é particularmente desafiador devido à sua morfologia aglutinativa, variações ortográficas e ambiguidade léxica, entre outras características.8 Em suma, esses elementos impõem dificuldades para um método sistemático de identificação das formas básicas das palavras entre variantes morfológicas, pelo menos quando comparadas com palavras em inglês.
Além dessa limitação geral, o stemming e a lematização têm suas respectivas desvantagens. Conforme ilustrado no exemplo de Hamlet, o stemming é um processo relativamente heurístico e baseado em regras de remoção de sequências de caracteres. Dois erros comuns que surgem são: overstemming e understemming. O primeiro é quando duas palavras semanticamente distintas são reduzidas à mesma raiz (por exemplo, news para new); o understemming é quando duas palavras semanticamente relacionadas não são reduzidas à mesma raiz (por exemplo, knavish e knave para knavish e knave, respectivamente).9 Além disso, o stemming apenas retira sufixos das palavras e, portanto, não pode levar em conta formas verbais irregulares ou prefixos como a lematização o faz. Obviamente, o stemming é relativamente simples e direto de implementar, enquanto a lematização pode ser mais cara e demorada em termos computacionais, dependendo do tamanho dos dados processados.
Projete assistentes e agentes de IA escaláveis com facilidade, automatize tarefas repetitivas e simplifique processos complexos com o IBM® watsonx Orchestrate.
Acelere o valor comercial da inteligência artificial com um portfólio poderoso e flexível de bibliotecas, serviços e aplicativos.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.
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, "Reasoning or Reciting? Exploring the Capabilities and Limitations of Language Models Through Counterfactual Tasks," 2023, https://arxiv.org/abs/2307.02477. Gati Aher, Rosa Arriaga, Adam Kalai, "Using Large Language Models to Simulate Multiple Humans and Replicate Human Subject Studies," Proceedings of the 40th International Conference on Machine Learning, PMLR, Vol. 202, 2023, pp. 337-371, https://proceedings.mlr.press/v202/aher23a.html. Emily Bender and Alexander Koller, “Climbing towards NLU: On Meaning, Form and Understanding in the Age of Data,” Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, 2020, pp. 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 and Fred Damerau, Handbook of Natural Language Processing, 2nd edition, CRC Press, 2010. Christopher Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing, 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