Hoy quiero compartir un proyecto muy especial que he desarrollado como parte del curso Building AI de la Universidad de Helsinki, una experiencia que recomiendo enormemente si te interesa aprender a crear de cero un modelo de IA. El objetivo final del curso, como no podía ser de otra forma, era crear un modelo de IA utilizando alguna de las técnicas de Machine Learning vistas a lo largo del programa, que fuera de código abierto, disponible para pasar una revisión por pares dentro de la comunidad de IA. En mi caso, decidí construir un modelo de IA capaz de detectar emociones en frases de texto en inglés.
Modelo de Detección de Emociones
https://github.com/ahontoria/Emotion-Detection-Model
Resumen del proyecto
El proyecto consiste en desarrollar un modelo de IA que pueda detectar la emoción subyacente en un texto proporcionado por el usuario. Este modelo clasifica el texto en categorías emocionales predefinidas como felicidad, tristeza, enfado, sorpresa, entre otras. La idea principal es mejorar las interacciones entre humanos y máquinas, haciendo que estas últimas sean más empáticas y comprensivas.
Contexto y motivación
La detección emocional en texto es una rama crucial del procesamiento de lenguaje natural (NLP), con aplicaciones en atención al cliente, análisis de salud mental, monitorización de redes sociales, etc. Entender las emociones de los usuarios puede mejorar significativamente la calidad del servicio y las interacciones.
- Atención al cliente: Los sistemas automatizados pueden usar el modelo para medir el sentimiento del cliente y ajustar sus respuestas en consecuencia.
- Aplicaciones de salud mental: Detectar signos de angustia emocional en las entradas del usuario puede activar medidas de apoyo.
- Redes sociales: Las marcas pueden analizar el sentimiento público sobre sus productos o servicios.
Mi motivación para este proyecto proviene de la creciente importancia de la inteligencia emocional en la tecnología. A medida que los sistemas de IA se integran más en la vida diaria, es vital que puedan entender y responder a las emociones humanas. Y quién sabe, ¡quizá esta sea la base para que una superinteligencia futura, como MAI o Eve de Máquinas y memorias, pueda entender y responder a nuestras emociones de manera perfecta!
Revisión por pares
El programa del curso requiere que cada proyecto pase por una revisión por pares dentro de la comunidad de IA. ¡Mi proyecto pasó la revisión con comentarios muy positivos!
Media de las evaluaciones recibidas:
- Realismo del proyecto: 4.75/5
- Necesidad del proyecto: 4.75/5
- Descripción del proyecto fácil de seguir: 4.75/5
- Descripción del proyecto fácil de entender: 4.75/5
Uso del modelo
El modelo puede integrarse en diversas plataformas. Los usuarios simplemente introducen un texto en el sistema, éste analiza el texto y devuelve la emoción detectada. Puede ser utilizado en aplicaciones en tiempo real donde la comprensión del sentimiento del usuario es crítica.
Fuentes de datos y métodos de IA
Para entrenar el modelo, utilicé un conjunto de datos público con textos etiquetados con emociones, específicamente el Emotion Dataset de Hugging Face, ideal para propósitos educativos y de investigación. Elegí el clasificador Naive Bayes debido a su simplicidad y eficacia en tareas de clasificación de texto. Respecto a los métodos:
- Preprocesamiento de texto: Tokenización, eliminación de palabras vacías y lematización.
- Extracción de características: Técnicas como TF-IDF para calcular y convertir el peso del texto en características numéricas.
- Modelado: Entrenar un clasificador Naive Bayes para predecir emociones basadas en la entrada de texto.
¿Por qué Naive Bayes?
Las razones clave:
- Simplicidad y eficiencia: Naive Bayes es conocido por su simplicidad y eficiencia, lo que permite un entrenamiento y tiempos de predicción más rápidos.
- Rendimiento en clasificación de texto: A pesar de su simplicidad, Naive Bayes funciona excepcionalmente bien para tareas de clasificación de texto.
- Interpretabilidad: Los resultados y el funcionamiento de un modelo Naive Bayes son más fáciles de interpretar en comparación con modelos más complejos.
Comparación con otras técnicas
Entre las técnicas abordadas en el curso:
- Hill climbing y vecino más cercano: No son típicamente usados para problemas de clasificación de texto.
- Regresión lineal y logística: Aunque la regresión logística podría ser una buena alternativa, generalmente requiere más recursos computacionales.
- Redes neuronales y aprendizaje profundo: Estos modelos pueden proporcionar mayor precisión, pero a costa de una mayor complejidad y requisitos computacionales.
Resultados preliminares del modelo
El modelo alcanzó una precisión del 70.875% en el conjunto de prueba. Aquí algunos detalles de las métricas de rendimiento por emoción:
- Precisión: 0.70875
- Informe de Clasificación:
- Tristeza: Precisión 0.71, Recall 0.94, F1-Score 0.81
- Alegría: Precisión 0.65, Recall 0.98, F1-Score 0.78
- Amor: Precisión 1.00, Recall 0.11, F1-Score 0.20
- Enfado: Precisión 0.92, Recall 0.47, F1-Score 0.62
- Miedo: Precisión 0.92, Recall 0.36, F1-Score 0.52
- Sorpresa: Precisión 1.00, Recall 0.02, F1-Score 0.03
Mejora del modelo
Subí un commit con una mejora de resultados:
- Expandí la búsqueda de hiperparámetros usando GridSearchCV para el clasificador MultinomialNB.
- Incluí un rango más amplio de valores ‘alpha’ y añadí el parámetro ‘fit_prior’.
- Logré una mejor precisión: 0.8171875
- Informe de clasificación actualizado:
- Tristeza: Precisión 0.82, Recall 0.92, F1-Score 0.87
- Alegría: Precisión 0.80, Recall 0.93, F1-Score 0.86
- Amor: Precisión 0.85, Recall 0.52, F1-Score 0.64
- Enfado: Precisión 0.87, Recall 0.75, F1-Score 0.80
- Miedo: Precisión 0.83, Recall 0.73, F1-Score 0.77
- Sorpresa: Precisión 0.69, Recall 0.33, F1-Score 0.44
Análisis y recomendaciones
El modelo muestra una buena precisión inicial, pero hay áreas que pueden mejorarse, especialmente en clases menos representadas como «Amor» y «Sorpresa». Algunas recomendaciones para mejorar el modelo incluyen:
- Recolección y balanceo de datos: Recolectar más datos para clases subrepresentadas y aplicar técnicas como el sobremuestreo o submuestreo.
- Ajuste de hiperparámetros: Continuar ajustando los hiperparámetros usando GridSearchCV o RandomizedSearchCV.
- Explorar modelos más complejos: Considerar el uso de modelos más avanzados como Random Forest, SVM o redes neuronales.
- Análisis de errores: Realizar un análisis detallado para entender mejor por qué el modelo falla en ciertas clases.
Desafíos y próximos pasos
Algunos de los desafíos incluyen la calidad de los datos y las consideraciones éticas al usar el sistema en áreas sensibles como la salud mental. Para mejorar el proyecto:
- Mejora del modelo: Incorporar modelos más sofisticados y conjuntos de datos más grandes.
- Despliegue: Desarrollar APIs o integrar el modelo en plataformas existentes.
- Retroalimentación de usuarios: Obtener feedback de usuarios reales para refinar el sistema continuamente.
Agradecimientos
- Emotion Dataset de Hugging Face
- Inspiración de varios proyectos de NLP e IA compartidos en la comunidad de IA.
El proyecto es de código abierto y está disponible en GitHub. ¡Espero que os guste!