1. Presentación del Tema
Introducción al Análisis de Sentimiento
El análisis de sentimiento es una técnica de procesamiento de lenguaje natural (NLP) que busca identificar y extraer opiniones subjetivas de textos. Se utiliza comúnmente para determinar si un fragmento de texto expresa una opinión positiva, negativa o neutral. En el contexto de las películas, el análisis de sentimiento nos permite comprender mejor cómo percibe el público una película, lo que es valioso tanto para los cineastas como para los estudios de mercado.
Además, presentamos otro concepto, el Transfer Learning. Este es una técnica en el campo del aprendizaje automático y la inteligencia artificial que aprovecha el conocimiento adquirido previamente por un modelo entrenado en una tarea para mejorar el rendimiento en otra tarea relacionada. Es decir, la idea es aprovechar el conocimiento adquirido durante el entrenamiento inicial del modelo, evitando entrenar un modelo desde cero y, por lo tanto, ahorrando tiempo y recursos computacionales.
Objetivos del Blog
En este blog, nuestro objetivo es realizar un análisis de sentimiento en reseñas de películas. Dicho análisis lo enfocamos en hacer una clasificación de sentimientos de la mano del Transfer Learning. Esto lo vamos a llevar a cabo trabajando con el modelo BERT, ya entrenado.
2. Revisión del Estado del Arte
Investigación Previa
El análisis de sentimiento ha sido ampliamente estudiado en diversas áreas. Para las reseñas de películas, los enfoques más comunes incluyen el uso de modelos basados en reglas, métodos estadísticos y técnicas de aprendizaje automático. Entre los modelos más relevantes se encuentran los modelos basados en Transformers como BERT. En este Blog nos vamos a centrar en este último.
[Ref1], [Ref2]
3. Análisis Matemático
RoBERTa es un modelo que ha sido entrenado en un gran conjunto de datos de tweets para clasificar el sentimiento de los textos. Este modelo puede clasificar textos en tres categorías: positivo, neutral y negativo.
Podemos acceder a dicho modelo a través de la interfaz de Hugging Face. [Ref3]
Este es un modelo basado en roBERTa entrenado en aproximadamente 58 millones de tweets y ajustado para el análisis de sentimiento con el punto de referencia TweetEval. Siendo un modelo adecuado para inglés.
Además, lo que podemos observar en la imagen inferior es el grafo computacional del modelo RoBERTa. Pudiendo observar a los parámetros del modelo classifier.dense.weight y classifier.dense.bias que se corresponden a la capa densa del clasificador. También classifier.out_proj.weight y classifier.out_proj.bias que corresponden a la capa de proyección de salida del clasificador. Además, se observan las operaciones AddmmBackward0 y TanhBackward0, las cuáles son operaciones de retropropagación relacionadas con las funciones de activación y las multiplicaciones de matriz en las capas del modelo.
4. Descripción de las Pruebas Realizadas y Resultados
Teniendo el concepto claro, vamos a realizar un enfoque previo para poder llegar al objetivo del Blog.
Este enfoque es aprovechar el conocimiento adquirido previamente por un modelo entrenado en una tarea de clasificación de sentimiento de reviews de Amazon, es decir, otro conjunto de datos.
De esta forma, procesamos un fragmento de DataFrame de reseñas de Amazon y generamos puntuaciones de polaridad con RoBERTa para cada reseña. A continuación visualizamos el gráfico de pares que visualiza la relación entre las puntuaciones de polaridad y el Score de las reseñas.
El segundo enfoque es hacer un Fine Tuning de RoBERTa. Volvemos al objetivo inicial del Blog.
Para ello, dividimos los datos en tres conjuntos distintos: entrenamiento, validación y prueba.
Antes de todo realizaremos un análisis donde observaremos como de bueno es el modelo escogido para realizar las predicciones de las reviews de nuestro dataset. Esto nos permitirá comparar los resultados.
Roberta está entrenada para hacer una clasificación de tres clases: positiva negativa y neutral. Una vez pasados nuestros datos, podemos observar lo siguiente:
Con esto concluimos que se acierta el 50% lo que equivaldria a elegir los resultados al azar, siendo mejores los resultados de clasificar las instancias negativas que las positivas. Esto podría deberse a la eliminación de la clase neutra
Pasaremos ahora a cargar el modelo preentrenado y configurar el entrenamiento. El conjunto de entrenamiento lo utilizamos para ajustar los parámetros del modelo. Aquí es donde el modelo aprende a predecir la salida a partir de las características de entrada. En cuanto al conjunto de validación, durante el entrenamiento, este conjunto se utiliza para ajustar los hiperparámetros del modelo y seleccionar el mejor modelo posible. Además, evaluamos el rendimiento del modelo en datos no vistos durante el entrenamiento, lo que ayuda a evitar el sobreajuste. El conjunto de prueba se utiliza, una vez que el modelo ha sido completamente entrenado, para una evaluación final e imparcial del rendimiento del modelo en datos completamente nuevos, que no se han utilizado ni para el entrenamiento ni para la validación.
Paréntesis conceptual
Recordando conceptos, el fine-tuning te permite adaptar un modelo preentrenado a una tarea específica ajustando sus parámetros, mientras que el freezing te ayuda a preservar el conocimiento adquirido durante el preentrenamiento, reduciendo al mismo tiempo el costo computacional del entrenamiento. Además, configuramos el entrenador utilizando la clase Trainer de Hugging Face. El Trainer es responsable de manejar el bucle de entrenamiento, incluyendo la evaluación y el guardado del modelo.
Reanudamos …
Ahora sí, una vez que los datos están preparados, cargamos el modelo preentrenado, RoBERTa, y configuramos los parámetros de entrenamiento. Esto implica ajustar la configuración del modelo para el proceso de fine-tuning. También el congelamiento de algunas capas del modelo preentrenado para reducir el tiempo de entrenamiento y los recursos computacionales necesarios.
Posteriormente, entrenamos el modelo y lo evaluamos obteniendo los siguientes resultados:
¿Ha servido todo esto de algo?
Ahora llega el momento de la verdad. Queremos comprobar realmente qué tan bueno es nuestro modelo al cual se le ha aplicado un fine-tuning. Por ello, realizamos predicciones sobre nuevas reseñas.
Como podemos ver en las siguientes figuras, nuestro modelo tuneado ha sido capaz de realizar buenas predicciones:
5. Discusiones
La precisión indica la proporción de verdaderos positivos sobre el total de positivos predichos. Con una precisión del 88% para la clase negative y del 90% para la clase positive, el modelo muestra una alta capacidad para identificar correctamente las instancias positivas, aunque también tiene un buen desempeño en la clase negativa. Este argumento se corrobora en las gráficas presentadas donde observamos que el modelo de clasificación exhibe un alto rendimiento con un AUC de 0.96, una precisión del 91%, y un equilibrio razonable entre precisión y sensibilidad. Las predicciones correctas superan ampliamente a las incorrectas, lo que sugiere que el modelo es fiable y efectivo para las tareas de clasificación evaluadas.
6. Conclusiones
El modelo RoBERTa preentrenado y afinado ha demostrado ser altamente eficaz en la tarea de clasificación de sentimientos, con un rendimiento balanceado entre precisión y recall para ambas clases negative y positive. Con una exactitud general del 89%, el modelo ha mostrado una fuerte capacidad de generalización y precisión en sus predicciones.
Para mejorar estos resultados y explorar nuevas posibilidades, podemos considerar aplicar técnicas de Data Augmentation, y así generar más ejemplos de entrenamiento con el fin de ayudar a mejorar la capacidad de generalización del modelo. También podríamos hacer un Ensamblaje de Modelos (Ensemble), es decir, combinar múltiples modelos para reducir errores y mejorar la precisión general. Por último, pensamos que una futura mejora sería explorar otras arquitecturas. Con esto, probar diferentes modelos preentrenados como GPT o T5 para comparar y potencialmente mejorar el rendimiento.
Bibliografía y Referencias
[Ref1]: Bredava, Anna. “Análisis de Sentimiento: ¿Qué es y cómo funciona?” Awario, 10 noviembre 2022, https://awario.com/es/blog/sentiment-analysis/ . Accessed 30 May 2024.
[Ref2]: Navarro Bellido, Joan. “Modelos de aprendizaje automático en análisis de sentimiento: comparativa de rendimiento.” RiuNet, 2022/2023, https://m.riunet.upv.es/bitstream/handle/10251/198111/Navarro%20-%20Modelos%20de%20aprendizaje%20automatico%20en%20analisis%20de%20sentimiento%20comparativa%20de%20rendimiento.pdf?sequence=1&isAllowed=y . Accessed 30 May 2024.
[Ref3]: https://huggingface.co/cardiffnlp/twitter-roberta-base-sentiment
Mulla, Rob. YouTube, https://www.youtube.com/watch?v=QpzMWQvxXWk
Jupyter Notebook donde aparece todo el código utilizado para el desarrollo del Blog: https://colab.research.google.com/drive/1YQDKkghUCRIU0NefupndT7Jta2C-S-M-#scrollTo=iaSJ7fan-0ey
Dataset movies.csv: https://www.kaggle.com/datasets/yasserh/imdb-movie-ratings-sentiment-analysis?select=movie.csv
Dataset reviews.csv: https://www.kaggle.com/datasets/snap/amazon-fine-food-reviews?resource=download