Você está visualizando atualmente Como reduzir uma palavra para sua forma básica em Python (Lematização)

Como reduzir uma palavra para sua forma básica em Python (Lematização)

Nessa aula você vai compreender o que é a lematização em processamento de linguagem natural e como você pode implementar um exemplo funcional em Python. O objetivo dessa aula é mostrar didaticamente como é possível utilizar essa técnica para reduzir palavras para sua forma mais básica e criar aplicações mais complexas que envolvem o processamento de textos.

Quer aprender mais sobre processamento de linguagem natural? Veja nosso curso gratuito.

O que é lematização?

 A lematização é o processo, efetivamente, de deflexionar uma palavra para determinar o seu lema (as flexões chamam-se lexemas). Por exemplo, as palavras gato, gata, gatos, gatas são todas formas do mesmo lema: gato. Igualmente, as palavras tiver, tenho, tinha, tem são do mesmo lema ter. E bom, melhor e ótimo são lexemas do lema bom.  [1]

A lematização é útil quando queremos ver os usos de palavras em contextos sem importância das flexões. Por exemplo, para a criação e uso de índices ou na investigação linguística. Ninguém quer ficar obrigado a pesquisar todas as formas duma palavra para encontrá-la num texto. Se pesquisássemos gato, seria melhor ter quaisquer das quatro formas como resultado, não só a forma masculina singular.  

Lematização versus Stemming

  As duas técnicas possuem o mesmo objetivo de inflexionar uma palavra, no entanto, os outputs de uma mesma palavra são diferentes. O Stemming não se importa com a legibilidade da palavra gerada como output. Já a lematização resulta em uma palavra no infinitivo (geralmente – não obrigatoriamente).  

Veja um exemplo da palavra andando:  

  • Porter stemmer: and
  • Lematização: anda

Lematizando com NLTK

# se queremos extrair o "lemma" de uma palavra estaremos reduzindo essa palavra a sua forma raiz
# por exemplo: intelligently - inteligent

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()

for i in range (len(sentences)):
    words = nltk.word_tokenize(sentences[i])
    newwords = [lemmatizer.lemmatize(word) for word in words]
    sentences[i] = ' '.join(newwords)
print (sentences)
['France , in Western Europe , encompasses medieval city , alpine village and Mediterranean beach .', 'Paris , it capital , is famed for it fashion house , classical art museum including the Louvre and monument like the Eiffel Tower .', 'The country is also renowned for it wine and sophisticated cuisine .', 'Lascaux ’ s ancient cave drawing , Lyon ’ s Roman theater and the vast Palace of Versailles attest to it rich history .']

Referências

[1] Adaptado de Manual do Aplicativo Iramuteq. Maria Elisabeth Salviati. 2017. Link

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Este post tem 2 comentários

  1. Leonardo

    NLTK suporta lematizar em português?

Deixe um comentário

doze − dois =