Saltar la navegación

5. ¿Y si hacemos que aprenda?

¿Cómo puede aprender una máquina?

RetoComo 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")

Crear una lista

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:

añadir elemento a la lista

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:

incluir tres elementos en la lista

Si dejamos visible la lista, aparece en la pantalla de visualización junto al personaje escogido:

ventana con lista

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..."

borrar elemento 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:

borrar toda la lista

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.

incluir 3 elementos al pulsar bandera

Para solucionarse se puede usar una combinación de las órdenes "añadir" y "borrar" con el evento de "Al pulsar la bandera verde":

Reiniciar la lista
reiniciar lista al pulsar 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.

preguntar y respuesta

Compruébalo con el programa siguiente:

Aprendizaje con lista reiniciada

icono Scratch2Si usas Scratch2 o mBlock3 puedes descargar el programa aquí: Aprendizaje con lista reiniciada.icono mBlock3

[Pincha con el botón derecho del ratón y escoge "Guardar enlace como"]

Experimenta con el programa:

  • Deja la lista visible y observa cómo se añaden los nuevos elementos.
  • Cuando termines para el programa y vuelve a pulsar la bandera verde ¿Qué ocurre con la lista?

Mantener las listas abiertas

Hasta ahora hemos usado el siguiente programa para reiniciar la lista:

reiniciar la lista

Cambia esta forma de reinicio por esta otra:

Crear la lista si está vacía

Observa las diferencias:

  • En este caso sólo se crea la lista si está vacía (si su longitud es "0")
  • Pero la lista sólo estará vacía la primera vez que se incluyan elementos.
  • Por tanto, una vez creada, la lista nunca se borra, de modo que todos los elementos que se añadan después permanecen en la lista.
  • Esto será así incluso cuando se cierre el programa y también en la versión online. Es lo que llamamos "mantener la lista abierta"

El programa completo quedaría así:

Aprendizaje con lista abierta

Comprueba el funcionamiento del programa en la ventana siguiente.

Comprueba el funcionamiento del programa:

  • Pulsa la bandera verde para iniciar.
  • Contesta varias veces a las preguntas ¿Se añaden las respuestas a la lista?
  • Interrumpe el programa pulsando Stop y vuelve a iniciarlo pulsando la bandera verde ¿Desaparecen los nuevos elementos introducidos en la lista?

icono Scratch2Si usas Scratch2 o mBlock3 puedes descargar el programa aquí: Aprendizaje con lista abierta.icono mBlock3

[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:

truco

A continuación tienes el programa completo:

Aprendizaje con lista abierta + truco

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?

icono Scratch2Para Scratch2 o mBlock3 descarga el programa aquí: Aprendizaje con lista abierta+truco.icono mBlock3

[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:

Asistente turístico virtual: lista de Aprendizaje

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)

Asistente turístico virtual con Lista de aprendizaje

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:

Asistente turístico virtual - charla con mensajes

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":

Asistente turístico virtual - Aprendizaje

  • 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.

3. ¡Es tu turno!

Ha llegado el momento de que hagas que tu asistente virtual aprenda.

En las ventanas siguientes te voy a recordar lo que tienes que hacer para conseguirlo:

¿Qué tienes que conseguir?

Se trata de completar el programa del asistente turístico virtual para que:

  • Sea capaz de responder al menos a 5 tipos de necesidades:
    • alojamiento (obligatoria)
    • comida (obligatoria)
    • ocio (obligatoria)
    • Otras: transporte, compras, comunicaciones, seguridad, salud... 

La lista inicial

Tomando como ejemplo el programa siguiente, crea las listas que se cargarán inicialmente para cada necesidad:

Lista de aprendizaje del asistente turístico virtual

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.

Asistente turístico virtual CHARLA

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.

Asistente turístico virtual APRENDE

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.

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:

A continuación puedes visualizar el documento en PDF:

Elaboración propia. Rúbrica del Asistente turístico virtual. (CC BY-NC-SA)

Creado con eXeLearning (Ventana nueva)