El análisis de sentimientos busca determinar la polaridad de un texto (positivo, negativo o neutro). Se aplica en redes sociales, reseñas de productos, encuestas y más.
from textblob import TextBlob
texto = "I really love this course, it's amazing!"
resultado = TextBlob(texto).sentiment
print(resultado)
# Sentiment(polarity=0.85, subjectivity=0.75)
Nota: TextBlob funciona mejor con inglés. Para español se recomiendan librerías como spacy o modelos específicos como BETO.
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
X = ["me encanta", "lo odio", "genial", "terrible"]
y = [1, 0, 1, 0] # 1 = positivo, 0 = negativo
pipe = Pipeline([
("tfidf", TfidfVectorizer()),
("clf", LogisticRegression(max_iter=1000))
])
pipe.fit(X, y)
print(pipe.predict(["esto está bien"]))
# [1] → positivo
from sklearn.metrics import classification_report
print(classification_report(y, pipe.predict(X)))
from transformers import pipeline
clasificador = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")
resultado = clasificador("Este curso es excelente!")
print(resultado)
# [{'label': '5 stars', 'score': 0.81}]
Estos modelos multilingües permiten análisis más precisos en varios idiomas, incluido el español.
El análisis de sentimientos es un pilar del NLP aplicado. Comprender diferentes enfoques y herramientas permitirá elegir la mejor estrategia para cada proyecto.