Como habrás visto, el asistente turístico con listas es mucho más eficiente que el básico que hicimos inicialmente.
Aún se podría mejorar si el propio asistente fuese capaz de aprender de la información que proporciona el usuario. Esto ya entra en el campo de la Inteligencia Artificial.
¿Cómo podemos conseguir que aprenda? ¡Seguro que te resulta interesante!
Hasta ahora hemos trabajado en grupo y hemos comprobado que todo resulta más fácil cuando pedimos ayuda.
A partir de ahora deberás presentar las actividades de forma individual, no te preocupes si no te sale bien a la primera, seguro que aprenderás a resolverlo. Y siempre puedes comentar las tareas con tus compañeros para obtener ideas.
¡Te invito a que siempre lo intentes!
1. La lista abierta
Una lista abierta es aquélla en la que se van añadiendo elementos que no se eliminan.
Vamos a recordar el trabajo con listas para entender el concepto de listas abiertas
Crear una lista
Para comenzar a trabajar con listas, lo primero que tenemos que hacer es crear una. Esto se hace desde el menú de Scratch (o mBlock) en el apartado de "Datos" (o "Datos y Bloques")
Añadir elementos a la lista
Cualquier programa de Scratch o mBlock que utilice listas permite añadir elementos continuamente usando la instrucción
"añade ... a la lista..." por ejemplo:
Los elementos que se añaden permanecen en la lista mientras no se eliminen. Por este motivo se dice que las listas en Scratch (y mBlock) son abiertas.
De este modo, si quiero que un programa contenga desde el principio unos elementos en la lista, hay que indicárselo usando instrucciones como las siguientes:
Si dejamos visible la lista, aparece en la pantalla de visualización junto al personaje escogido:
Cada vez que se utiliza esta instrucción inicial se repiten los elementos de la lista sin borrar los anteriores. Copia el programa y compruébalo tú mismo pulsando varias veces la bandera verde.
Eliminar elementos de la lista
Para borrar elementos de una lista se utiliza la instrucción
"borrar... de la lista..."
Esta orden nos permite borrar el primero, el último, o todos los elementos de la lista, como se ve en el siguiente ejemplo:
Reiniciar una lista
Hemos visto antes que, al usar sólo la instrucción de añadir elementos a la lista, cada vez que se pulsaba la bandera verde se repetía los elementos.
Para solucionarse se puede usar una combinación de las órdenes "añadir" y "borrar" con el evento de "Al pulsar la bandera verde":
Esto es lo que se conoce como "reiniciar la lista".
Aprendizaje con listas
Si usamos la orden de "preguntar" y guardamos la consiguiente "respuesta" en una lista podemos hacer que el programa vaya "aprendiendo" nuevas palabras.
[Pincha con el botón derecho del ratón y escoge "Guardar enlace como"]
El "truco" del programador
Muchas veces, quien hace el programa deja algunos "trucos" (también llamados "cheat codes"). Estos trucos no son para que los conozca el usuario, la mayoría de las veces sólo son atajos que deja el programador para facilitar su propio trabajo y poder probar efectos sin necesidad de superar los retos del juego.
En nuestro caso, se ha añadido una orden más para poder borrar la lista al pulsar la flecha ↓ (abajo) del teclado:
A continuación tienes el programa completo:
Tal como está diseñado el programa, el "truco" sólo funciona con el programa parado. ¿Por qué ocurre esto?
Comprueba el funcionamiento del programa en la ventana siguiente:
Comprueba cómo funciona este nuevo programa:
Pulsa la bandera verde para empezar.
Contesta a la pregunta varias veces ¿Se añaden nuevos elementos a la lista?
Para el programa pulsando Stop. Vuelve a iniciarlo pulsando la bandera verde ¿Se reinicia la lista?
Pulsa la bandera verde. Estando el programa en funcionamiento ¿Qué ocurre si pulsas la flecha ↓ (abajo) del teclado?
Para el programa con el botón Stop. Estando el programa parado ¿Qué pasa si pulsas la flecha ↓ (abajo) del teclado?
[Pincha con el botón derecho del ratón y escoge "Guardar enlace como"]
2. El asistente turístico aprende del usuario
Vamos a retomar nuestro asistente turístico, incluyendo lo que hemos aprendido de las listas abiertas para que aprenda conforme interacciona con el usuario.
Lista inicial
El programa que vamos a usar para crear la lista inicial de la categoría "alojamiento" es el siguiente:
Como verás, hemos aplicado la idea de las "listas abiertas": la lista sólo se rellena la primera vez, con un contenido prefijado, cuando se encuentra aún vacía. A partir de entonces su contenido no se borrará nunca, completándose con las respuestas obtenidas en la conversación con el usuario.
Al final se ha incluido un "truco" para que el programador pueda borrar la lista. Esto le puede servir para hacer tareas de "mantenimiento" como por ejemplo copiar los elementos correctos para que estén presentes en la lista desde el principio o eliminar los términos incorrectos.
Para mayor claridad, en el programa hemos asignado los programas referidos a las listas al "escenario", dejando para el "personaje" todo lo referido a la conversación con el usuario.
Tú deberás completar esta parte del programa con las listas correspondientes a las demás necesidades.
Aprendizaje a partir de la conversación
La imagen presenta el programa que se asigna al "personaje", que es el que conversa con el usuario.
(Pincha en la imagen para verla más grande)
Analízalo y trata de entender su funcionamiento.
Explicación del programa 1: se encuentra la "necesidad"
Vamos a dividir el programa en dos partes para entenderlo mejor:
En esta parte, el programa actúa inicialmente como lo conocíamos hasta ahora:
Comprueba si la necesidad del usuario está en la lista correspondiente
Si está, hace una sugerencia.
Si no está, debería pasar a otra necesidad: esto debes completarlo tú, pues en el ejemplo sólo se contempla el "alojamiento"
Explicación del programa 2: No se encuentra la "necesidad"
Una vez acabadas todas las necesidades, si no ha encontrado la necesidad en ninguna de las listas, el asistente trata de aprender, iniciándose un nuevo código mediante el mensaje "aprender":
En la modalidad de "aprender", el asistente pregunta si la necesidad tiene que ver con alguna de las categorías ya conocidas, empezando por el "alojamiento". Cuando encuentra alguna que corresponda, añade la palabra a la lista para que se quede registrada y además ofrece el consejo correspondiente.
Si el usuario no encuadra la necesidad en ninguna de las categorías conocidas, el asistente reconoce su limitación y termina.
Para mayor claridad y evitar repeticiones, se ha separado el código en distintas acciones a las que se accede usando "mensajes".
Tú deberías completar esta parte del programa preguntando al usuario si la respuesta pertenece a alguna de las otras necesidades.
Programa de ejemplo
En la ventana siguiente puedes ver el funcionamiento del programa explicado.
Observa que no se borra la lista nunca, salvo que detengas el programa y ejecutes el "truco". De este modo el programa "aprende" del usuario.
Si tienes un equipo antiguo, no podrás ver cómo funciona el programa en la versión online de Scratch.
En ese caso descarga este archivo, que sirve tanto para Scratch2 como para mBlock3:
Tomando como ejemplo el programa siguiente, crea las listas que se cargarán inicialmente para cada necesidad:
Debes escribir al menos 10 palabras por lista. ¡Cuantas más escribas mejor!
Recuerda que en nuestro caso este código se lo hemos asignado al escenario.
Programa básico de charla con el asistente
A continuación debes completar un programa similar al siguiente, completando la charla parar que el asistente haga recomendaciones para las 5 categorías de necesidades.
Observa que, para mayor claridad y evitar repeticiones, se ha dividido el programa en secciones, a los que se accede mediante "mensajes".
Este programa se lo hemos asignado al "personaje" escogido para interactuar con el usuario.
El asistente aprende
Falta incluir los bloques que permiten el aprendizaje del asistente. Debes realizar un programa como el siguiente, completándolo con preguntas para cada una de las 5 categorías de necesidades.
En el ejemplo, este programa también se ha asignado al "personaje".
Programa modelo
En este enlace tienes el ejemplo que hemos estado utilizando, en versión de Scratch online.
En un equipo antiguo, no podrás ver cómo funciona el programa en la versión online de Scratch.
En ese caso descarga este archivo, que sirve tanto para Scratch2 como para mBlock3:
[Pincha con el botón derecho del ratón y escoge "Guardar enlace como"]
4. Toca evaluar
Una vez que tienes conocimiento del tema, vas a examinar los programas de cuatro personas de tu clase. ¡Seguro que aprendes cosas nuevas y coges ideas para tus programas!
Vas a hacerlo de la forma siguiente:
Revisa el asistente virtual de tus compañeros o compañeras del grupo de tu derecha (2 personas)
A continuación harás lo mismo con tus 2 compañeros o compañeras del grupo de tu izquierda (otras 2 personas)
Completa para cada persona una rúbrica. Hay varios modelos que puedes usar:
Un archivo de Drive. Accede a este enlace y se copiará en tu Drive, para poder completarlo online.
Un documento en PDF que puedes imprimir varias veces para rellenarlo.