Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Stemming | Seção
Processamento de Linguagem Natural

bookStemming

Deslize para mostrar o menu

Note
Definição

Stemming é uma técnica de normalização de texto utilizada em PLN para reduzir palavras flexionadas ao seu radical.

De forma mais precisa, stemming envolve a remoção de afixos (geralmente apenas sufixos) das palavras para obter sua forma raiz, conhecida como radical. Por exemplo, os radicais de "running", "runs" e "run" são todos "run".

O objetivo do stemming é simplificar a análise tratando palavras semelhantes como a mesma entidade, melhorando assim a eficiência em várias tarefas de PLN.

Stemming com NLTK

O NLTK oferece vários algoritmos de stemming, sendo os mais populares o Porter Stemmer e o Lancaster Stemmer. Esses algoritmos aplicam regras específicas para remover afixos e derivar o radical de uma palavra.

Todas as classes de stemmer no NLTK compartilham uma interface comum. Primeiro, é necessário criar uma instância da classe stemmer e, em seguida, utilizar seu método stem() para cada um dos tokens.

1234567891011121314151617181920212223242526272829
import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
copy

Primeiro, aplicou-se a tokenização, depois filtraram-se as stop words e, por fim, realizou-se o stemming nos tokens utilizando list comprehension. Quanto aos resultados, esses dois stemmers produziram resultados bastante diferentes. Isso ocorre porque o Lancaster Stemmer possui cerca do dobro de regras em comparação ao Porter Stemmer e é considerado um dos stemmers mais "agressivos".

Note
Nota

De modo geral, o Porter Stemmer é a opção mais popular, produzindo resultados mais significativos do que o Lancaster Stemmer, que tende a realizar overstemming nas palavras.

question mark

Quais das seguintes afirmações sobre os stemmers de Porter e Lancaster são verdadeiras?

Select all correct answers

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 10

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 10
some-alt