Stemming e lematização

Autores

Jacob Murel Ph.D.

Senior Technical Content Creator

Eda Kavlakoglu

Business Development + Partnerships

IBM Research

O que são stemming e lematização?

No processamento de linguagem natural (NLP), stemming e lematização são técnicas de pré-processamento de texto que reduzem as formas flexionadas das palavras em um conjunto de dados de texto para uma palavra raiz comum ou forma de 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, medita, meditação etc.) . O stemming e a lematização visam melhorar ainda mais o processamento de texto em algoritmos de aprendizado de máquina .

Diagrama exemplificando o stemming de variantes morfológicas para dança

Por que stemming e lematização?

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

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

Stemming x lematização

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.

Como o stemming funciona

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.
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', '.']

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.

Como funciona a lematização

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

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.

Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Limitações

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.

Soluções relacionadas
IBM watsonx Orchestrate

Projete assistentes e agentes de IA escaláveis com facilidade, automatize tarefas repetitivas e simplifique processos complexos com o IBM® watsonx Orchestrate.

Conheça o watsonx Orchestrate
Ferramentas e APIs de processamento de linguagem natural

Acelere o valor comercial da inteligência artificial com um portfólio poderoso e flexível de bibliotecas, serviços e aplicativos.

Explore as soluções de PNL
Consultoria e serviços em IA

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.

Explore os serviços de IA
Dê o próximo passo

Projete assistentes e agentes de IA escaláveis com facilidade, automatize tarefas repetitivas e simplifique processos complexos com o IBM® watsonx Orchestrate.

Conheça o watsonx Orchestrate Explore as soluções de PLN