Clasificación de Emociones en Textos con Machine Learning
von sgf_13v @sgf_13v
- 59
- 0
- 0
Introducción
En este proyecto, desarrollaremos un modelo de Machine Learning para clasificar textos según la emoción que expresan. Utilizaremos un conjunto de datos sintético con frases etiquetadas en diferentes emociones y aplicaremos un modelo de clasificación para realizar las predicciones.
Este tipo de modelo es útil en diversas aplicaciones como el análisis de sentimientos en redes sociales, la atención al cliente y la moderación de comentarios en plataformas digitales.

Materiales
Para realizar este proyecto, utilizaremos las siguientes herramientas:
Google Colab: para ejecutar el código en la nube.
Python: lenguaje de programación principal.
Librerías de Machine Learning: utilizaremos Pandas, NumPy, Scikit-learn y TfidfVectorizer para la vectorización de texto.
Importar Librerías
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report

Generar Datos
Cargamos los datos para el entrenamiento
# Datos
data = {
'texto': [
"Estoy muy feliz hoy", "Me siento triste y sin energía", "Esto es increíble, qué emoción!",
"No me gusta lo que está pasando", "Estoy enojado con esta situación", "Amo este lugar!",
"Odio la forma en que me trataron", "Estoy realmente decepcionado", "Qué gran noticia!",
"Esto es horrible, no lo soporto"
],
'emocion': ["feliz", "triste", "feliz", "triste", "enojado", "feliz", "enojado", "triste", "feliz", "enojado"]
}
df = pd.DataFrame(data)
df.head()

Preprocesamiento de Datos
def preprocess_text(text):
text = text.lower() # Convertir a minúsculas
text = ''.join(char for char in text if char.isalnum() or char.isspace()) # Eliminar caracteres especiales
return text
df['texto_procesado'] = df['texto'].apply(preprocess_text)

Transformar Texto en Vectores
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df['texto_procesado'])
y = df['emocion']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Entrenar el Modelo
modelo = MultinomialNB()
modelo.fit(X_train, y_train)

Evaluar el Modelo
y_pred = modelo.predict(X_test)
print("Precisión:", accuracy_score(y_test, y_pred))
print("Reporte de clasificación:")
print(classification_report(y_test, y_pred))

Probar el Modelo con Nuevos Textos
def predecir_emocion(texto):
texto_procesado = preprocess_text(texto)
texto_vectorizado = vectorizer.transform([texto_procesado])
return modelo.predict(texto_vectorizado)[0]
nuevas_frases = ["Qué día más hermoso", "Odio cuando esto sucede", "Estoy emocionado por la noticia"]
for frase in nuevas_frases:
print(f"Texto: {frase} -> Emoción: {predecir_emocion(frase)}")

+0 Kommentare
Melden Sie sich an oder melden Sie sich kostenlos an, um zu kommentieren