Saltar al contenido
TutorialNivel inicial1-2 horas· Revisado el 18 de octubre, 2026

NLTK, spaCy y Transformers: herramientas y modelos de PLN

Qué resuelve cada herramienta, qué debes instalar y cómo elegir según la tarea, con una misma frase en español.

En esta pieza

Una biblioteca de Python pone funciones a tu disposición; no necesariamente incluye los datos o el modelo que esas funciones necesitan. En PLN conviene separar tres piezas:

  • la biblioteca, que aporta código para procesar o cargar modelos
  • los recursos, como corpus, vocabularios o paquetes de modelos, que se instalan o descargan aparte
  • la tarea y sus datos, que determinan qué significa la salida y para qué textos es razonable usarla

NLTK, spaCy y transformers viven en capas distintas. Se pueden combinar, pero no son tres versiones intercambiables de un mismo analizador. Para verlo, usaremos esta frase:

Para probar los ejemplos sin instalar Python: ábrelo en Google Colab · descarga el cuaderno · aprende a usar Colab.

La nueva ley de vivienda no convence a los inquilinos de Madrid.

1. Qué aporta cada herramienta

Compara

La misma frase en tres capas de PLN: «La nueva ley de vivienda no convence a los inquilinos de Madrid.»

Ejemplos de salida

La forma exacta de las salidas depende de los recursos y versiones instalados. La comparación muestra qué clase de resultado puede aportar cada herramienta.

Tokens:

La · nueva · ley · de · vivienda · no · convence · a · los · inquilinos · de · Madrid · .

Raíces del stemmer (recorta sufijos con reglas):

la · nuev · ley · de · viviend · no · convenc · a · los · inquilin · de · madr · .

Fíjate en «madr»: el recorte no sabe que «Madrid» es un nombre propio. Y «nuev» o «convenc» no son palabras del español.

Herramienta Aporta Recursos que suelen instalarse aparte Ejemplo de uso
NLTK Componentes de procesamiento, corpus e interfaces para explorar métodos Datos del tokenizador u otros corpus, según la función elegida Tokenizar, probar un stemmer o estudiar un corpus
spaCy Una biblioteca de procesamiento y una arquitectura de pipelines Un paquete de modelo de idioma, si necesitas lemas, etiquetas o entidades entrenadas Procesar textos de forma consistente con un analizador de español
transformers Clases para cargar y ejecutar modelos preentrenados y ajustarlos Los archivos del modelo y sus dependencias de ejecución, como PyTorch en este ejemplo Clasificar, resumir, traducir o generar texto con un modelo concreto

El Hub de Hugging Face es un catálogo donde se publican modelos y otros recursos. transformers es una de las bibliotecas que permite cargarlos. El modelo determina la tarea, los idiomas y los datos con los que se entrenó; el nombre del ecosistema, por sí solo, no dice qué análisis hará.

2. Instala solo lo que vayas a usar

Crea un entorno virtual para el proyecto y activa ese entorno antes de instalar paquetes. Los comandos siguientes son alternativas por herramienta; no hace falta instalar las tres para seguir un ejemplo.

NLTK

python -m pip install nltk

spaCy y su paquete de español

python -m pip install spacy
python -m spacy download es_core_news_sm

es_core_news_sm es un paquete de modelo con su propia versión y dependencias compatibles con spaCy. Instalar spacy sin ese paquete no descarga automáticamente el analizador entrenado. Si solo necesitas tokenizar, un pipeline vacío de spaCy puede bastar; los componentes lingüísticos entrenados sí requieren el paquete correspondiente.

Transformers con PyTorch

python -m pip install transformers torch

Al cargar un modelo desde el Hub, Transformers descarga sus archivos la primera vez y normalmente los deja en la caché local. El tamaño y los requisitos de memoria dependen del modelo: no hay un tamaño común para todo el Hub. Una GPU puede acelerar algunos modelos, pero no es necesaria para todos los ejemplos.

3. NLTK: componentes y recursos

NLTK ofrece piezas que puedes combinar. Por ejemplo, permite separar palabras y aplicar un stemmer de Snowball en español. El tokenizador necesita sus datos; con las versiones actuales, punkt_tab es el recurso que requiere este ejemplo. Descárgalo una vez en una ubicación de datos accesible para NLTK:

import nltk
from nltk.stem.snowball import SnowballStemmer

nltk.download("punkt_tab")

texto = "La nueva ley de vivienda no convence a los inquilinos de Madrid."
tokens = nltk.word_tokenize(texto, language="spanish")
stemmer = SnowballStemmer("spanish")

print(tokens)
print([stemmer.stem(token) for token in tokens])

El stemmer aplica reglas de recorte; no busca la forma de diccionario. Por eso puede producir fragmentos como «madr» o «convenc». No son lemas ni un error de ejecución: son el resultado esperado de una técnica que puede servir para agrupar variantes de palabras en ciertas tareas.

NLTK también incluye WordNetLemmatizer, pero se basa en WordNet, un recurso léxico del inglés; no equivale a tener un lematizador general del español listo para usar. Tampoco es exacto decir que NLTK solo sirva para enseñar o que no pueda procesar corpus grandes: ofrece componentes de investigación y procesamiento, aunque tendrás que elegir y coordinar más piezas según el flujo que quieras construir.

4. spaCy: una tubería de procesamiento con un modelo aparte

spaCy puede aplicar varios componentes a un texto y devolver tokens, lemas, categorías gramaticales, dependencias y entidades. Para obtener ese análisis en español, hace falta cargar el paquete entrenado:

import spacy

nlp = spacy.load("es_core_news_sm")
doc = nlp("La nueva ley de vivienda no convence a los inquilinos de Madrid.")

for token in doc:
    print(token.text, token.lemma_, token.pos_, token.dep_, sep="\t")

print([(ent.text, ent.label_) for ent in doc.ents])

La salida depende de las versiones de spaCy y del paquete de modelo. El modelo ofrece un análisis automático útil, no una verdad gramatical: puede equivocarse con ambigüedades, nombres y variedades del español. En esta oración, por ejemplo, las relaciones que propone el modelo son una hipótesis que conviene revisar, como explica el tutorial de análisis con spaCy.

El sufijo sm identifica un modelo pequeño, que ocupa menos que las variantes medianas o grandes a cambio de diferencias de rendimiento en ciertas tareas. La elección se hace según idioma, tarea, calidad necesaria, latencia y recursos disponibles; el modelo más grande no es automáticamente el más adecuado.

5. Transformers: la biblioteca no es el modelo

transformers carga arquitecturas y pesos de modelos. Una pipeline simplifica la ejecución de una tarea concreta. Este ejemplo pide clasificación de sentimiento con un modelo multilingüe que predice de una a cinco estrellas:

from transformers import pipeline

clasificador = pipeline(
    "sentiment-analysis",
    model="nlptown/bert-base-multilingual-uncased-sentiment",
)

print(clasificador(
    "La nueva ley de vivienda no convence a los inquilinos de Madrid."
))

La forma de la salida incluye una etiqueta y una puntuación. No la fijamos aquí porque depende de la ejecución y de los archivos del modelo descargados. La ficha de este modelo indica que se ajustó con reseñas de productos en seis idiomas, entre ellos el español, y que predice estrellas. Que acepte español no implica que esté validado para clasificar noticias políticas: dominio, etiqueta y datos de entrenamiento importan.

Transformers también puede cargar modelos para otras tareas, incluida clasificación por token. Por tanto, no es correcto resumirlo como «solo analiza frases enteras» ni como «solo sirve para texto generativo». Hay que indicar siempre qué tarea y qué modelo se están usando.

6. Cómo elegir

Empieza por la operación que necesitas y el tipo de salida que esperas:

Necesitas… Una opción razonable Comprueba también…
Probar cómo se tokeniza o se aplica un stemmer NLTK Qué recurso de datos necesita esa función
Obtener lemas, categorías, dependencias o entidades con un flujo integrado spaCy con un paquete de modelo para español Cobertura del idioma y errores del modelo en tus textos
Clasificar, resumir, traducir o generar texto transformers con un modelo adecuado a la tarea Idiomas, datos, licencia, tamaño y memoria del modelo
Ajustar un modelo preentrenado a tus datos transformers u otra herramienta de entrenamiento Calidad y permisos de los datos, evaluación y coste de ejecución

También puedes combinar herramientas: por ejemplo, NLTK para preparar o explorar corpus y spaCy para anotar textos. spaCy puede integrarse con modelos de tipo Transformer mediante paquetes adicionales. Cada combinación añade dependencias y puntos que mantener; inclúyela cuando resuelva una necesidad concreta.

¿Lo tienes?

Quieres lemas, categorías gramaticales y dependencias para revisar un corpus de cartas en español. ¿Por dónde empezar?

7. ¿Y los modelos de lenguaje grandes?

Un modelo como Claude, GPT o Gemini puede ejecutarse en un servicio remoto mediante la API de su proveedor. En ese caso, el acoplamiento principal es el cliente/API, las credenciales y el servicio elegido. Un modelo publicado para ejecución local puede cargarse con transformers si su arquitectura y formato son compatibles; el acoplamiento pasa a incluir los pesos, el tokenizer, el entorno de ejecución y los requisitos de memoria. La elección afecta a coste, latencia, privacidad, licencia y mantenimiento.

spaCy y NLTK siguen siendo útiles en esos flujos para segmentar, normalizar o analizar textos de forma reproducible. No hay que escoger una sola biblioteca para todo: cada componente debe corresponder a una tarea definida.

Para seguir

Referencias

Dónde encaja en el recorrido