MISIÓN 1 · Lección 5

Aplicación de Análisis de Sentimientos

En esta lección construiremos una aplicación práctica de análisis de sentimientos usando un dataset de reseñas. El objetivo es implementar un flujo completo: preprocesamiento, modelado, predicción y despliegue.

Objetivos de la aplicación

Preprocesamiento de datos

import pandas as pd
from sklearn.model_selection import train_test_split

# Dataset de ejemplo
reviews = pd.DataFrame({
    "texto": ["me encanta este producto", "es horrible", "muy bueno", "terrible experiencia"],
    "sentimiento": [1, 0, 1, 0]
})

X_train, X_test, y_train, y_test = train_test_split(
    reviews["texto"], reviews["sentimiento"], test_size=0.2, random_state=42
)

Entrenamiento del modelo

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
  ("tfidf", TfidfVectorizer()),
  ("clf", LogisticRegression(max_iter=1000))
])

pipe.fit(X_train, y_train)
print("Accuracy en test:", pipe.score(X_test, y_test))

Función de predicción

def predict_sentiment(text: str) -> dict:
    proba = pipe.predict_proba([text])[0, 1]
    return {
        "label": "positivo" if proba > 0.5 else "negativo",
        "score": float(proba)
    }

print(predict_sentiment("no me gustó"))
# {'label': 'negativo', 'score': 0.32}

Exponer el modelo con FastAPI

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    text: str

@app.post("/predict")
async def predict(item: Item):
    return predict_sentiment(item.text)

Ejecutar con: uvicorn app:app --reload

Visualización de resultados

Podemos añadir gráficos con matplotlib o seaborn para mostrar la distribución de polaridad en un conjunto de textos.

import matplotlib.pyplot as plt

preds = [predict_sentiment(t)["label"] for t in X_test]
plt.bar(["positivo", "negativo"], [preds.count("positivo"), preds.count("negativo")])
plt.show()

Mejoras posibles

Aplicaciones reales

Reflexión final

Una aplicación de análisis de sentimientos permite transformar datos de texto en información accionable. Esto genera valor en sectores como marketing, atención al cliente y desarrollo de productos.