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!

Deixe uma resposta