Derivación y lematización en Python NLTK con ejemplos
⚡ Resumen inteligente
La derivación y la lematización son técnicas de normalización de texto en Python NLTK que reduce las variaciones de las palabras a una base común, donde el desarraigo recorta los sufijos rápidamente sin contexto y la lematización devuelve una palabra de diccionario verdadera usando el significado.

¿Qué es la lematización y la lematización? Python ¿NTK?
Stemming y Lematización in Python NLTK son técnicas de normalización de texto para el procesamiento del lenguaje natural. Estas técnicas se utilizan ampliamente para el preprocesamiento de texto. La diferencia entre la derivación y la lematización radica en que la derivación es más rápida porque elimina palabras sin conocer el contexto, mientras que la lematización es más lenta porque conoce el contexto de las palabras antes de procesarlas.
¿Qué es la derivación?
Stemming es un método de normalización de palabras en Procesamiento natural del lenguajeEs una técnica en la que un conjunto de palabras en una oración se convierten en una secuencia para acortar la búsqueda. En este método, las palabras que tienen el mismo significado pero algunas variaciones según el contexto o la oración se normalizan. En otras palabras, hay una palabra raíz, pero hay muchas variaciones de la misma palabra. Por ejemplo, la palabra raíz es "comer" y sus variaciones son "come, comiendo, comido, etc." De la misma manera, con la ayuda de Stemming en Python, podemos encontrar la palabra raíz de cualquier variación.
Por ejemplo:
He was riding. He was taking the ride.
En las dos oraciones anteriores, el significado es el mismo: una actividad de equitación en el pasado. Un ser humano puede comprender fácilmente que ambos significados son iguales. Sin embargo, para las máquinas, ambas oraciones son diferentes. Por lo tanto, resulta difícil convertirlas en la misma fila de datos. Si no proporcionamos el mismo conjunto de datos, la máquina no podrá predecir. Así pues, es necesario diferenciar el significado de cada palabra para preparar el conjunto de datos para el aprendizaje automático. Aquí se utiliza la lematización para categorizar el mismo tipo de datos mediante la obtención de su palabra raíz.
Implementemos esto con un Python programa. NLTK tiene un algoritmo llamado PorteroStemmerEste algoritmo acepta la lista de palabras tokenizadas y las reduce a palabras raíz.
Programa para comprender la raíz
from nltk.stem import PorterStemmer e_words= ["wait", "waiting", "waited", "waits"] ps =PorterStemmer() for w in e_words: rootWord=ps.stem(w) print(rootWord)
Salida:
wait wait wait wait
Code Explicación:
- NLTK incluye un módulo llamado stem que se importa. Si se importa el módulo completo, el programa se vuelve pesado, ya que contiene miles de líneas de código. Por lo tanto, del módulo stem completo, solo importamos "PorterStemmer".
- Preparamos una lista ficticia de datos de variación de la misma palabra.
- Se crea un objeto que pertenece a la clase nltk.stem.porter.PorterStemmer.
- Pasamos los elementos a PorterStemmer uno por uno usando un bucle "for". Finalmente, obtuvimos la palabra raíz de cada palabra mencionada en la lista.
De lo anterior se desprende que la lematización es un paso importante del preprocesamiento, ya que elimina la redundancia y las variaciones dentro de una misma palabra. Como resultado, los datos se filtran, lo que facilita un mejor entrenamiento de la máquina. Ahora introducimos una oración completa y comprobamos su resultado.
from nltk.stem import PorterStemmer from nltk.tokenize import sent_tokenize, word_tokenize sentence="Hello Guru99, You have to build a very good site and I love visiting your site." words = word_tokenize(sentence) ps = PorterStemmer() for w in words: rootWord=ps.stem(w) print(rootWord)
Salida:
hello
guru99
,
you
have
build
a
veri
good
site
and
I
love
visit
your
site
Code Explicación:
- El paquete PorterStemmer se importa desde el módulo stem.
- Se importan paquetes para la tokenización de oraciones y palabras.
- Se escribe una oración que se tokenizará en el siguiente paso.
- Aquí se crea un objeto para PorterStemmer.
- Se ejecuta un bucle y se realiza la lematización de cada palabra utilizando el objeto creado en la línea de código 5.
En resumen, la lematización es un módulo de preprocesamiento de datos. El idioma inglés tiene muchas variaciones de una misma palabra, lo que genera ambigüedad en el entrenamiento y la predicción del aprendizaje automático. Para construir un modelo exitoso, es fundamental filtrar estas palabras en los mismos datos secuenciados mediante la lematización. Esto también se conoce como normalización.
¿Qué es la lematización?
Lematización En NLTK, la lematización es el proceso algorítmico de encontrar el lema de una palabra según su significado y contexto. Generalmente, se refiere al análisis morfológico de las palabras, cuyo objetivo es eliminar las terminaciones flexivas. Esto ayuda a obtener la forma base o de diccionario de una palabra, conocida como lema. El método de lematización de NLTK se basa en la función morph integrada de WordNet. El preprocesamiento de texto incluye tanto la derivación como la lematización. Muchas personas encuentran confusos estos dos términos. Algunos los tratan como si fueran lo mismo, pero existe una diferencia entre derivación y lematización. La lematización se prefiere a la primera por la razón que se indica a continuación.
¿Por qué la lematización es mejor que la lematización?
El algoritmo de derivación funciona cortando el sufijo de la palabra. En un sentido más amplio, corta el principio o el final de la palabra. Por el contrario, la lematización es una operación más potente y tiene en cuenta el análisis morfológico de las palabras. Devuelve el lema, que es la forma base de todas sus formas flexivas. Se requiere un conocimiento lingüístico profundo para crear diccionarios y buscar la forma correcta de la palabra. La derivación es una operación general, mientras que la lematización es una operación inteligente donde se busca la forma correcta en el diccionario. Por lo tanto, la lematización ayuda a formar mejores palabras. aprendizaje automático características.
Code para distinguir entre lematización y derivación
Stemming Code:
import nltk from nltk.stem.porter import PorterStemmer porter_stemmer = PorterStemmer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Stemming for {} is {}".format(w,porter_stemmer.stem(w)))
Salida:
Stemming for studies is studi Stemming for studying is studi Stemming for cries is cri Stemming for cry is cri
Lematización Code:
import nltk from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Lemma for {} is {}".format(w, wordnet_lemmatizer.lemmatize(w)))
Salida:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
Discusión sobre la producción
Si analizamos la derivación de "studies" y "studying", el resultado es el mismo (studi), pero el lematizador de NLTK proporciona un lema diferente para ambos tokens: "study" para "studies" y "studying" para "studying". Por lo tanto, cuando necesitamos crear un conjunto de características para entrenar una máquina, sería ideal que se priorizara la lematización.
Caso de uso de Lematizer
El Lematizador minimiza la ambigüedad del texto. Palabras como bicicleta o bicicletas se convierten a la palabra base bicicleta. Convierte todas las palabras con el mismo significado pero diferente representación a su forma base, reduciendo la densidad de palabras y ayudando aping Prepara características precisas para entrenar una máquina. Cuanto más limpios estén los datos, más preciso será tu modelo de aprendizaje automático. El lematizador NLTK también ahorra memoria y costes computacionales.
Ejemplo en tiempo real que muestra el uso de la lematización de WordNet y el etiquetado POS en Python:
from nltk.corpus import wordnet as wn from nltk.stem.wordnet import WordNetLemmatizer from nltk import word_tokenize, pos_tag from collections import defaultdict tag_map = defaultdict(lambda : wn.NOUN) tag_map['J'] = wn.ADJ tag_map['V'] = wn.VERB tag_map['R'] = wn.ADV text = "guru99 is a totally new kind of learning experience." tokens = word_tokenize(text) lemma_function = WordNetLemmatizer() for token, tag in pos_tag(tokens): lemma = lemma_function.lemmatize(token, tag_map[tag[0]]) print(token, "=>", lemma)
Salida:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Code Explicación:
- Se importa el lector de corpus wordnet, y WordNetLemmatizer se importa desde wordnet.
- La tokenización de palabras y la etiqueta de partes de la oración se importan de nltk, y el diccionario predeterminado de collections.
- Se crea un diccionario donde la primera letra de pos_tag es la clave, que se asigna al valor del diccionario wordnet.
- El texto se escribe y se tokeniza, y se crea el objeto lemma_function para su uso dentro del bucle.
- El bucle se ejecuta y lematizar toma dos argumentos: el token y un mapa.ping de pos_tag con el valor wordnet.
Python La lematización tiene una estrecha relación con la Diccionario WordNetPor lo tanto, es esencial estudiar ese tema a continuación.
