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
Introdução ao PLN

bookStemming

Compreensão do Stemming

Note
Definição

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

Para ser mais preciso, 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, aplicamos a tokenização, depois filtramos as stop words e, por fim, aplicamos o stemming em nossos 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 do 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 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

Suggested prompts:

What are the main differences between the Porter and Lancaster stemmers?

Can you explain what stop words are and why we remove them?

How does stemming improve NLP tasks?

Awesome!

Completion rate improved to 3.45

bookStemming

Deslize para mostrar o menu

Compreensão do Stemming

Note
Definição

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

Para ser mais preciso, 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, aplicamos a tokenização, depois filtramos as stop words e, por fim, aplicamos o stemming em nossos 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 do 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 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