La lematización en Python es un proceso que reduce las palabras a su forma base o "lema". Es útil en procesamiento de lenguaje natural (NLP) para normalizar palabras, mejorando la precisión en tareas como análisis de texto o clasificación.
Una de las bibliotecas más populares para realizar lematización en Python es NLTK (Natural Language Toolkit). Esta herramienta cuenta con un lematizador basado en WordNet, que permite reducir las palabras a su forma base teniendo en cuenta su parte de discurso (sustantivo, verbo, etc.).
1. Instala la biblioteca NLTK si no la tienes:
pip install nltk
2. Código para lematizar palabras usando NLTK:
import nltk
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
# Descarga recursos necesarios
nltk.download('wordnet')
nltk.download('omw-1.4')
# Inicializar el lematizador
lemmatizer = WordNetLemmatizer()
# Ejemplo de lematización
palabras = ["amigos", "corriendo", "mejor", "pies"]
for palabra in palabras:
lema = lemmatizer.lemmatize(palabra)
print(f'Palabra: {palabra} -> Lema: {lema}')
En este ejemplo, el lematizador transformará palabras como "corriendo" a "correr". Sin embargo, NLTK usa "sustantivo" como categoría por defecto. Para mejores resultados, es recomendable especificar la parte de discurso (POS).
Para obtener mejores resultados, podemos incluir el tipo de palabra:
# Especificar que "corriendo" es un verbo
print(lemmatizer.lemmatize("corriendo", pos='v')) # Salida: 'correr'
NLTK utiliza las siguientes etiquetas para partes del discurso:
n
: sustantivo
v
: verbo
a
: adjetivo
r
: adverbio
Otra opción es usar Spacy, una biblioteca avanzada de NLP. Spacy ofrece un enfoque más rápido y preciso, aunque es más pesado que NLTK. Para usarlo, sigue estos pasos:
1. Instala Spacy:
pip install spacy
python -m spacy download es_core_news_sm # Modelo para español
2. Código para lematizar con Spacy:
import spacy
nlp = spacy.load("es_core_news_sm")
doc = nlp("Los niños están jugando en el parque.")
# Extraer lemas
lemas = [token.lemma_ for token in doc]
print(lemas)
Para más información sobre NLTK y la lematización, visita la documentación oficial de NLTK.
Jorge García
Fullstack developer