Las cápsulas son recursos cortos y prácticos para reforzar conceptos clave de NLP. Incluyen ejemplos, mini-retos y material audiovisual para afianzar el aprendizaje.
Dividir un texto en palabras o subpalabras es el primer paso del NLP.
import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenize
texto = "¡El NLP es increíble!"
print(word_tokenize(texto))
# ['¡', 'El', 'NLP', 'es', 'increíble', '!']
Mini-reto: Tokeniza 5 frases diferentes y cuenta cuántas palabras tiene cada una.
La lematización reduce palabras a su forma base (ejemplo: "corriendo" → "correr").
import spacy
nlp = spacy.load("es_core_news_sm")
doc = nlp("Los estudiantes estaban corriendo rápidamente")
print([token.lemma_ for token in doc])
# ['el', 'estudiante', 'estar', 'correr', 'rápidamente']
Mini-reto: Aplica lematización a un párrafo de una noticia.
Identificar la polaridad de un texto.
from textblob import TextBlob
print(TextBlob("I love NLP!").sentiment)
# Sentiment(polarity=0.5, subjectivity=0.6)
Mini-reto: Evalúa 10 tuits y clasifícalos en positivos o negativos.
Extraer nombres de personas, organizaciones o lugares.
doc = nlp("Lionel Messi juega para el Inter de Miami en Estados Unidos.")
for ent in doc.ents:
print(ent.text, ent.label_)
# Lionel Messi PERSON
# Inter de Miami ORG
# Estados Unidos LOC
Mini-reto: Extrae todas las entidades de un artículo periodístico.
Las nubes de palabras permiten visualizar la frecuencia de términos.
from wordcloud import WordCloud
import matplotlib.pyplot as plt
texto = "El NLP es útil en análisis de texto y extracción de información"
wc = WordCloud(background_color="white").generate(texto)
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
Mini-reto: Genera una nube de palabras de un corpus de reseñas.
Construcción de un clasificador sencillo con Scikit-learn.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
X = ["me gusta", "no me gusta", "excelente", "horrible"]
y = [1, 0, 1, 0]
vec = CountVectorizer()
X_vec = vec.fit_transform(X)
model = MultinomialNB().fit(X_vec, y)
print(model.predict(vec.transform(["me encanta"])))
# [1] → positivo
Mini-reto: Entrena un clasificador con 20 frases propias.
Uso de modelos preentrenados para traducir texto.
from transformers import pipeline
traductor = pipeline("translation_es_to_en", model="Helsinki-NLP/opus-mt-es-en")
print(traductor("El procesamiento de lenguaje natural es poderoso"))
Mini-reto: Traduce 5 frases de español a inglés y verifica los resultados.
Reducir un texto largo a una versión corta manteniendo el sentido.
resumidor = pipeline("summarization")
texto = """
El procesamiento de lenguaje natural permite a las máquinas comprender
el lenguaje humano. Sus aplicaciones incluyen chatbots, asistentes virtuales y
análisis de sentimientos en redes sociales.
"""
print(resumidor(texto, max_length=30, min_length=10))
Mini-reto: Resume un artículo de periódico en 3 frases.
Las cápsulas permiten reforzar conocimientos a través de ejemplos rápidos y retos prácticos. Son ideales para consolidar el aprendizaje entre clases más extensas.