Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Derivación | Stemming y Lematización
Introducción al PLN

bookDerivación

Comprensión del stemming

Note
Definición

Stemming es una técnica de normalización de texto utilizada en PLN para reducir palabras flexionadas a su raíz.

De manera más precisa, el stemming implica eliminar afijos (generalmente solo sufijos) de las palabras para obtener su forma raíz, conocida como raíz. Por ejemplo, las raíces de "running", "runs" y "run" son todas "run".

El propósito del stemming es simplificar el análisis tratando palabras similares como la misma entidad, mejorando en última instancia la eficiencia en diversas tareas de PLN.

Stemming con NLTK

NLTK proporciona varios algoritmos de stemming, siendo los más populares el Porter Stemmer y el Lancaster Stemmer. Estos algoritmos aplican reglas específicas para eliminar afijos y derivar la raíz de una palabra.

Todas las clases de stemmer en NLTK comparten una interfaz común. Primero, se debe crear una instancia de la clase stemmer y luego utilizar su método stem() para cada uno de los 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

Primero, se aplicó la tokenización, luego se filtraron las stop words y finalmente se realizó el stemming sobre los tokens utilizando comprensión de listas. En cuanto a los resultados, estos dos stemmers produjeron resultados bastante diferentes. Esto se debe a que el Lancaster Stemmer tiene aproximadamente el doble de reglas que el Porter Stemmer y es uno de los stemmers más "agresivos".

Note
Nota

En general, el Porter Stemmer es la opción más popular y produce resultados más significativos que el Lancaster Stemmer, que tiende a sobre-reducir las palabras.

question mark

¿Cuáles de las siguientes afirmaciones sobre los stemmers de Porter y Lancaster son verdaderas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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

bookDerivación

Desliza para mostrar el menú

Comprensión del stemming

Note
Definición

Stemming es una técnica de normalización de texto utilizada en PLN para reducir palabras flexionadas a su raíz.

De manera más precisa, el stemming implica eliminar afijos (generalmente solo sufijos) de las palabras para obtener su forma raíz, conocida como raíz. Por ejemplo, las raíces de "running", "runs" y "run" son todas "run".

El propósito del stemming es simplificar el análisis tratando palabras similares como la misma entidad, mejorando en última instancia la eficiencia en diversas tareas de PLN.

Stemming con NLTK

NLTK proporciona varios algoritmos de stemming, siendo los más populares el Porter Stemmer y el Lancaster Stemmer. Estos algoritmos aplican reglas específicas para eliminar afijos y derivar la raíz de una palabra.

Todas las clases de stemmer en NLTK comparten una interfaz común. Primero, se debe crear una instancia de la clase stemmer y luego utilizar su método stem() para cada uno de los 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

Primero, se aplicó la tokenización, luego se filtraron las stop words y finalmente se realizó el stemming sobre los tokens utilizando comprensión de listas. En cuanto a los resultados, estos dos stemmers produjeron resultados bastante diferentes. Esto se debe a que el Lancaster Stemmer tiene aproximadamente el doble de reglas que el Porter Stemmer y es uno de los stemmers más "agresivos".

Note
Nota

En general, el Porter Stemmer es la opción más popular y produce resultados más significativos que el Lancaster Stemmer, que tiende a sobre-reducir las palabras.

question mark

¿Cuáles de las siguientes afirmaciones sobre los stemmers de Porter y Lancaster son verdaderas?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1
some-alt