QUIERO APRENDER
04. Análisis de Sentimientos en IA
Machine Learning for Kids
Machine Learning for Kids (ML4K) es una herramienta online gratuita que extiende Scratch con capacidades de Machine Learning. Podéis encontrarla en la dirección (https://machinelearningforkids.co.uk/).
La primera pantalla de la herramienta explica los tres pasos que tienes que seguir para crear tu modelo de aprendizaje automático: agregar ejemplos, entrenar el modelo para que aprenda, y usar el modelo desde cualquier aplicación en Scratch.
Al pulsar sobre el botón ‘Empezar’, verás que tienes la opción de registrarte, pero también puedes probar sin registrarte. La principal diferencia es que, si te registras, podrás guardar los modelos de aprendizaje automático para poderlos utilizar más adelante. De momento, como solo quiero que pruebes cómo funciona, debes pulsar sobre el botón ‘pruébalo ahora’.
Una vez dentro, verás que te aparece una pantalla sin ningún proyecto de aprendizaje automático. Vamos a añadir nuestro primer proyecto.
Cuando pulses sobre ‘Añadir un nuevo proyecto’ verás que te pide un nombre para el proyecto (por ejemplo, ‘Análisis de sentimientos’). También te pide que digas si quieres reconocer texto, imágenes, números o sonidos. ¿Qué tendrás que elegir en este caso?
PASO 1 DE 3
El primer paso para crear un modelo de aprendizaje automático consiste en entrenar el modelo, es decir, mostrar ejemplos de lo que quieres que el ordenador identifique.
Pulsa sobre el botón ‘Entrenar’, y el ordenador te llevará a una pantalla donde puedes añadir tantas etiquetas como categorías de emociones quieres que reconozca el ordenador.
¿Cuántas etiquetas crees que tendrás que añadir?
En la aplicación de análisis de sentimientos que estás construyendo hay dos categorías: bonita y fea, por lo que definirás dos etiquetas. Recuerda que puedes ponerles a las categorías el nombre que quieras, siempre que sepas lo que significa cada una.
Ahora ya sólo te queda añadir ejemplos a cada categoría. Como ejemplo, aquí te muestro los que he añadido yo. Es importante que los comentarios sean variados, para ayudar a que el ordenador reconozca más fácilmente nuevas expresiones. Mientras más frases distintas añadas a cada categoría, mejor funcionará el modelo. Para que funcione razonablemente bien, ML4K te pide que, al menos, introduzcas cinco frases de cada tipo.
Ves el numerito que aparece en la esquina inferior derecha de cada contenedor? Te está diciendo el número de ejemplos que llevas introducidos en cada categoría. A cada grupo de frases se le llama ‘conjunto de entrenamiento’ de esa clase o categoría.
¡Ahora te voy a enseñar cómo se le dice al modelo que aprenda a partir de los ejemplos!
PASO 2 DE 3: APRENDER Y PROBAR
El segundo paso para crear tu aplicación consiste en hacer que el modelo aprenda a partir de los ejemplos que le diste en el paso anterior.
Para ello, basta con que vuelvas a la pantalla donde estaban los tres pasos pinchando sobre la opción ‘Volver al proyecto’ en la esquina superior izquierda de la pantalla de ejemplos. Una vez en la pantalla de pasos, pulsa sobre el botón ‘Aprender y Probar’.
Verás que te aparece una pantalla donde te resume lo que has hecho hasta ahora (añadir ejemplos) y lo que vas a hacer a continuación: empezar con el entrenamiento. Debajo, tienes un botón azul que pone ‘Entrena un nuevo modelo’. ¡Pincha sobre él!
Verás que aparece un texto que pone ‘Información del entrenamiento’, y un botón rojo que pone ‘Cancelar el entrenamiento’. Esto indica que el modelo se está entrenando, así que tendrás que tener un poco de paciencia.
Cuando acabe el entrenamiento, esta información cambia, y ahora aparece un botón que dice ‘Borrar el modelo’. Esto indica que el modelo ya está entrenado.
En la misma pantalla aparece además un cuadro de texto con el título ‘Añada texto para ver cómo lo identifica tras el entrenamiento’. Aquí podemos introducir frases y ver qué respuesta nos da el modelo. ¡Vamos a probarlo!
En primer lugar introduce una frase que hayas usado para entrenar el modelo. Yo voy a poner la frase ‘estoy harto de ti’.
Si te fijas en el resultado, veréis que el modelo lo ha identificado como un comentario feo con un 100% de seguridad (confidence, en inglés). Lo ha hecho bien, pero… no te he dejado muy impresionado, ¿verdad? Al fin y al cabo, ¡que esa frase era un comentario feo ya se lo había dicho yo durante el entrenamiento!
Vamos a ver qué pasa si introducimos una frase que el modelo no ha visto antes, como, por ejemplo, ‘qué lindo eres’.
¡Bien! El modelo lo ha identificado como un comentario bonito, aunque con un poco menos de certeza: un 86%. En general, cualquier cosa que supere un 70% de certeza está bastante bien.
Vamos a probar con otra frase: ‘eres muy molona’.
¡Upps! ¿Qué ha pasado? El modelo lo ha identificado como un comentario feo, aunque con algo menos de certeza (un 64%).
Como ves, el modelo no es infalible: aún hay frases que le cuesta clasificar correctamente. ¿Cómo piensas que se puede mejorar el modelo?
¡Claro! Puedes volver al paso 1 de introducción de ejemplos, y meter este nuevo ejemplo en el contenedor de ‘frases bonitas’, para que la próxima vez no se equivoque. ¿Pero bastaría con eso?
En realidad, introducir ejemplos en ML4K no sirve para nada si luego no vuelves a entrenar el modelo con ellos. Es para eso para lo que sirve el botón ‘Entrenar de nuevo el modelo’ de la pantalla de entrenamiento y prueba. ¡Hazlo y mira a ver qué pasa ahora!
Puedes repetir este proceso tantas veces como quieras, mientras sigas probando y encontrando frases que no identifica correctamente.
PASO 3 DE 3: CREAR
¡Ya solo te queda crear la aplicación que llame a tu modelo de ML!
Cuando pulses sobre el botón ‘Crea’ verás que la herramienta ML4K te permite crear aplicaciones en distintos lenguajes: Scratch, Python y AppInventor.
Aquí te voy a enseñar cómo interactuar con tu modelo usando Scratch 3. ¿Qué no sabes lo que es Scratch 3? No te preocupes: te voy a guiar paso a paso. Si tienes más dudas, o simplemente curiosidad por saber más, te explico algunos conceptos básicos de este lenguaje en la última sección del tema.
Lo primero que tienes que hacer es abrir Scratch 3.
En esta pantalla, ML4K te explica los bloques que ha añadido al entorno ‘normal’ de Scratch, y que son los que te van a permitir interactuar con el modelo. Son los bloques negros, que se agrupan en una categoría que se llama igual que tu proyecto.
Estas instrucciones incluyen:
1: Instrucción que, dada una frase, te devuelve la etiqueta (categoría o clase) que le asigna el modelo
2: Instrucción que, dada una frase, te devuelve la confianza con la que el modelo asigna la frase a una categoría
3 y 4: etiquetas (categorías o clases) que has definido en tu modelo durante el paso 1. Habrá tantas instrucciones de este tipo como etiquetas hayas definido.
5: Instrucción para añadir una frase al conjunto de entrenamiento de una categoría.
6: Instrucción para pedirle a ML4K que vuelva a entrenar el modelo con los nuevos conjuntos de entrenamiento
7: Instrucción para saber si ML4K ha terminado ya de reentrenar el modelo.
Ahora vas a crear un programa donde el gato de Scratch pregunte ‘Qué me quieres decir hoy’. A continuación, esperará a que escribas la frase que le quieres decir. Si es bonita, el gato te dirá ‘¡Gracias!’. Si es una fase fea, el gato te dirá ‘Eso me ha dolido…’.
¿Lo intentas?
Aquí te muestro cómo podría ser el código. Recuerda que, cuando estás programando, hay muchas maneras de conseguir lo mismo, por lo que no te preocupes mucho si tu código no es exactamente igual a este. Lo importante es que funcione como debe.
¿Qué hace este código?
En primer lugar, espera a que pulses la bandera verde. El evento bandera verde (instrucciones amarillas) indica a Scratch el comienzo del programa. A continuación, en las instrucciones azules (sensores) se encuentra la instrucción que permite decir a Scratch que haga aparecer un cuadro de texto para que introduzcas tu frase. Una vez introducida, el código incluye el bloque si.. si no, que es un bloque condicional que se encuentra en la categoría ‘Control’ (instrucciones naranjas).
Ahora viene lo más complicado. Tenemos que decidir si el gato debe decir ‘Gracias’ o ‘Eso me ha dolido’ en función de la etiqueta que devuelva el modelo de ML4K previamente entrenado. Para eso seleccionamos la instrucción de comparación (x=y) que se encuentra en la categoría verde (Operadores). En la parte izquierda del igual arrastramos la instrucción de ML4K ‘recognise text (label)’. ¿Qué texto tienes que reconocer? Obviamente, el que has introducido antes. Ese texto se ha guardado en una variable ‘respuesta’ que se encuentra también dentro de la categoría ‘Sensores’, por lo que solo tienes que arrastrarla al lugar correcto. En la parte derecha del igual arrastrarás la etiqueta ‘bonito’.
Si el modelo de ML4K dice que el comentario es bonito, el gato debe decir ‘Gracias’. La instrucción decir se encuentra en la categoría de Apariencia (instrucciones lilas). Si no dice que es bonito, el gato tendrá que decir ‘Eso me ha dolido’. Ten en cuenta que puedes cambiar los mensajes que dice el gato como quieras. ¡Es tu proyecto!
¡Enhorabuena! ¡Acabas de crear un modelo que reconoce los sentimientos ocultos tras las frases, y una aplicación que es capaz de usar el modelo y reaccionar en función de tu frase!
No te olvides de guardar tu proyecto si quieres poderlo volver a abrir en un futuro. Para ello, debes acceder a la opción Archivo->Guardar en tu ordenador.
FLUJO DE APLICACIÓN
Como ya te habrás dado cuenta, en este proyecto hemos creado dos elementos (o artefactos software, como dicen las informáticas como yo): un modelo de aprendizaje automático, que has creado en ML4K, y una aplicación, que has creado en Scratch.
El flujo de ejecución de la aplicación es como sigue: partimos del código Scratch. Al pulsar en la bandera verde, el gato te pregunta lo que le quieres decir. Cuando introduces tu frase, el código de Scratch llama al modelo IA de ML4K, que devuelve la categoría (etiqueta o clase) a la que piensa que pertenece la clase. En función de ese valor, el programa de Scratch decide si el gato debe decir gracias o, por el contrario, mostrarse dolido… ¡Fácil! ¿No?