Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Stemming | Stemming e Lematização
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Introdução ao PLN com Python

bookStemming

Compreendendo o Stemming

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 diversos algoritmos de stemming, sendo os mais populares o Porter Stemmer e o Lancaster Stemmer. Esses algoritmos aplicam regras específicas para remover afixos e obter 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 o 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. Em relação 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

No geral, o Porter Stemmer é a opção mais popular, produzindo resultados mais significativos do que o Lancaster Stemmer, que tende a reduzir excessivamente as palavras.

question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

bookStemming

Deslize para mostrar o menu

Compreendendo o Stemming

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 diversos algoritmos de stemming, sendo os mais populares o Porter Stemmer e o Lancaster Stemmer. Esses algoritmos aplicam regras específicas para remover afixos e obter 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 o 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. Em relação 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

No geral, o Porter Stemmer é a opção mais popular, produzindo resultados mais significativos do que o Lancaster Stemmer, que tende a reduzir excessivamente as palavras.

question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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