jueves, 14 de julio de 2016

Habla con Cervantes: Entrevista al equipo de desarrollo de Antakira Software

Con motivo del lanzamiento de Habla con Cervantes, queremos compartir esta entrevista con el equipo encargado del desarrollo de este proyecto.

P: Antakira Software siempre se ha caracterizado por tocar temas muy diversos, como por ejemplo la cocina, los juegos o el entrenamiento físico. Sin embargo, en esta ocasión, vuestro nuevo lanzamiento es prácticamente una continuación del anterior, el juego «¿Quién soy?». ¿Qué os ha llevado a presentar un nuevo chatbot en lugar de explorar un campo totalmente nuevo?

R: Bueno, «¿Quién soy?» fue un proyecto que estuvo a punto de ser cancelado y, cuando finalmente optamos por lanzarlo, no estábamos del todo satisfechos con el resultado, ya que por diversos motivos, había muchas ideas que no pudimos incluir finalmente. Por tanto, no esperábamos que tuviera repercusión alguna. Sin embargo, para nuestra sorpresa, la acogida ha acabado siendo magnífica y hay una fantástica comunidad que ha dedicado horas y horas a charlar con estos personajes famosos. Eso ha sido un importante incentivo para proseguir con este proyecto. Tal como comentaba antes, muchas ideas se habían quedado en el tintero y este «Habla con Cervantes» nos ha ofrecido una oportunidad excelente para ponerlas en prácticas.


P: Entonces, ¿podemos esperar encontrar una tecnología radicalmente diferente en este nuevo chatbot o viene a ser una ampliación de lo que ya vimos antes?

R: Siempre tuvimos claro que, al margen de la aplicación práctica para crear un personaje concreto, nos interesaba crear un estándar que pudiera servir para crear todo tipo de humanos virtuales, desde personajes de juegos hasta agentes de viaje, motivo por el que nos hemos esforzado en publicar una documentación lo más completa posible sobre las especificaciones que sigue el bot. Por tanto, a fin de mantener cierta coherencia, hemos procurado no introducir cambios rupturistas que hubieran echado por tierra todo lo construido anteriormente. Tal vez el cambio más importante sea el que se ha producido en las herramientas que rodean al bot propiamente dicho. Tareas que antes eran muy pesadas, como analizar conversaciones, obtener estadísticas o actualizar los diccionarios, ahora son mucho más sencillas, lo que no acelera solo el proceso de creación, sino que también permite controlar la calidad de una manera mucho más estricta.

P: Este año, 2016, está siendo el año de los chatbots y parece que no hay empresa importante que no haya presentado o anunciado su chatbot. Con competidores tales como Google, Apple o Amazon, ¿qué pensáis que puede aportar una pequeña empresa como Antakira Software al mundo de los chatbots?

R: Aunque por supuesto, esas empresas cuentan con presupuestos totalmente fuera del alcance de nosotros, creemos que lo más importante son las ideas. Por ejemplo, en el mundo de los videojuegos hemos visto como apuestas con un propuesto reducido de estudios independientes, como por ejemplo «Firewatch» o «No man's sky», lograban atraer más el interés por parte del público que superproducciones. En el mundo de los chatbots ocurre algo igual. Es cierto que hay grandes inversiones, pero tenemos la sensación de que estos proyectos se están perdiendo algo. A pesar de la sofisticada labor de ingeniería que hay debajo, basta con conversar unos minutos con estos bots para que resulten aburridos. Pensamos que el problema está en una búsqueda de neutralidad que ha dejado de tener sentido.

P: ¿Neutralidad? ¿En qué sentido?

R: Neutralidad en el sentido de querer crear un bot que complazca a todo el mundo, lo que vendría a ser como esos discos de música que se graban para que le gusten a todo el mundo y al final no acaban gustándole a nadie. Cuando surgieron los primeros programas informáticos de amplia difusión, como las primeras suites de ofimática, los recursos limitados, lo que obligaba a utilizar un lenguaje muy estándar tanto en los comandos como en los mensajes, porque no tenías más remedio que crear una interfaz con la que todo el mundo se sintiera más o menos cómodo. Creo que nadie se ha dado cuenta todavía de la explosión de posibilidades que ofrecen los bots, como si le inyectaras a un programa normal un millón de comandos nuevos. Por ahora, lo único que se hace es trasladar directamente lo que ya existía a un nuevo formato y no pensamos que eso funcione. Si creas un bot que sea totalmente correcto en todas las ocasiones, no sea nada imaginativo y que no diga nunca una palabra más alta que otra, estás irremediablemente creando un bot aburrido.

P: ¿Qué echáis entonces en falta en los bots actuales?

R: Básicamente, creemos que se está recurriendo a las habilidades equivocadas. En el diseño de cualquier bot, en una gran empresa, puedes encontrarte a cientos de ingenieros informáticos con las credenciales sobresalientes. Sin embargo, a día de hoy, los bots empiezan a requerir talentos diferentes, procedentes del mundo de la literatura o la psicología, que son claves para dar vida al bot y conseguir acoplar gradualmente el comportamiento del bot al del usuario. En Antakira Software, nos sentimos orgulloso de contar con un escritor, con una auténtica sensibilidad literaria, para analizar y crear los textos del bot. Creemos que realmente marca una diferencia.

P: Entonces, ¿podemos esperar que los próximos proyectos sigan concentrándose en los bots de conversación?

R: Tal como comentabas antes, vivimos un momento en el que este mundo está en plena efervescencia y cada día surgen nuevas oportunidades y tecnologías, por lo que sin duda seguiremos investigando en este campo. De hecho, aparte de «Habla con Cervantes», estamos trabajando en un nuevo proyecto del que nos gustaría daros nuevas noticias próximamente.

P: En ese caso, ¿no podemos esperar un nuevo juego de Antakira Software en un futuro próximos? Ha habido rumores que hablaban de una remasterización del clásico «El expreso de Transilvania», ¿no hay nada de cierto en ellos?

R: Hemos estado ligados al mundo de los juegos desde un principio, por lo que es prácticamente seguro que, más pronto o más tarde, presentaremos algo nuevo. «El expreso de Transilvania» fue un juego muy importante para nosotros y, aunque desafortunadamente el estado de la tecnología en aquella época no ayudó a su difusión, lo cierto es que tuvo una gran acogida entre los usuarios que tuvieron la oportunidad de jugarlo. La posibilidad de recrearlo con los medios que hay ahora disponibles nos han tentado en numerosas ocasiones, pero en cualquier caso, si finalmente nos decidiéramos a darle luz verde a este proyecto, probablemente lo haría de una manera muy diferente al original, más acorde a los tiempos actuales.

lunes, 11 de julio de 2016

Nueva versión de Habla con Cervantes

Acabamos de publicar una nueva versión de "Habla con Cervantes" en Google Play, el bot en español que te permite dialogar con el Príncipe de los Ingenios. Recoge numerosas evoluciones, más de trescientas nuevas reglas de conocimiento, y depuración de errores menores.
Si quieres hablar con el mejor escritor de la historia, sólo tienes que descargarte nuestra aplicación aquí. Cualquier mejora que desees, coméntanoslo. Estamos abiertos a recogerlas, en pleno proceso de evolución.
Muy pronto tendremos nuevas evoluciones listas de "Habla con Cervantes".

lunes, 6 de junio de 2016

Diarios de desarrollo de Habla con Cervantes 1: Aleatoriedad percibida en chatbots

Tal como comentamos en nuestra entrada sobre aleatoriedad percibida, confiar en números aleatorios con el objetivo de ofrecerle al usuario una experiencia lo más diversa posible, con frecuencia puede jugarnos malas palabras. En esta ocasión, vamos a ver una aplicación práctica de esta teoría al campo en el que ahora estamos trabajando, los bots de conversación.

Imaginemos que escribimos la siguiente regla:

{Eso que&Lo que} {señalas&comentas&dices}, ¿es una interpretación tuya?

Para quién no esté versado en la sintaxis que utiliza nuestro bot y que puede consultarse en las completas instrucciones que hay en nuestra página web dedicada al proyector Mentor, basta con saber que los corchetes sirven para indicar varias posibilidades separándolas con ampersands, de manera que se elige al azar una de ellas.

Es decir, cuando el bot muestre la salida anterior, elegirá al azar entre Eso que y Lo que, para luego añadirle señalas, comentas o dices, también al azar. Por tanto, con apenas una línea, hemos creado 2 × 3 = 6 posibilidades. Una gran variedad con un esfuerzo mínimo... ¿o no?

Basta con forzar al bot a que recurra una y otra vez a esta regla para ver que los resultados no son exactamente los esperados, como podemos ver a continuación.



Aunque los resultados no son malos, podemos ver que hay tres ocasiones en las que el bot responde Lo que dices, ¿es una interpretación tuya? Con seguridad, alguien pensará que ha sido una cuestión de mala suerte, pero basta con repetir este experimento con una secuencia de números aleatorios para encontrarse con un problema similar.

El problema reside en que los números aleatorios son, pues eso, aleatorios y no hay ninguna norma que establezca que el mismo número no se puede repetir dos, tres o cien veces, porque existe la posibilidad, aunque mínima, de que esto ocurra. Sin embargo, el usuario sencillamente pensará que el bot repite respuestas.

Afortunadamente, se trata de un problema con una solución muy sencilla. Basta con dividir la regla anterior en dos reglas, que se muestren de manera consecutiva:

Eso que {señalas&comentas&dices}, ¿es una interpretación tuya?
Lo que {señalas&comentas&dices}, ¿es una interpretación tuya?

Así conseguimos que en las ocasiones impares, el bot muestre Eso que..., y en las pares, Lo que... Hemos elegido estas palabras para realizar la diferenciación porque son visualmente más evidentes. De esta manera, trabajamos con las mismas seis posibilidades que antes, pero el orden en el que se muestra ya sigue cierto patrón, como podemos ver a continuación.



Se puede objetar que la aparición alternante de Eso que... y Lo que... es de todo menos aleatoria, pero será más difícil de percibir para el usuario, que en este caso, jamás se encontrará con dos respuestas seguidas que sean exactamente iguales.

Esta técnica resulta muy útil para escribir bots que sea más sorprendentes y, a fin de cuentas, no es más que una puesta al día del famoso Eliza de Joseph Weizenbaum que, dadas las importantes limitaciones de los ordenadores en aquella época, consiguió unos resultados lo suficientemente buenos como para embaucar a varios usuarios.
Por ejemplo, cuando el bot  detectaba una palabra de otro idioma, por ejemplo, el francés, mostraba sucesivamente las siguientes dos reglas.

No hablo francés.
 Ya te he dicho que no hablo francés.

Con estas dos reglas solo, se garantizaba que el usuario no recibiese nunca dos veces seguidas la misma regla y tenían un tono ligeramente distinto que hacía pensar que el bot realmente recordaba lo que se había dicho durante la conversación. Y es que tratándose de aleatoriedad pasa un poco como con la lluvia en el cine: la auténtica no da bien en pantalla.

lunes, 30 de mayo de 2016

Habla con Cervantes. ¡Ya disponible en Google Play!

Nada mejor que una reinterpretación de un célebre cuadro a cargo de un sofisticado motor de inteligencia artificial para presentar nuestro nuevo proyecto, Habla con Cervantes, un chatbot que te permitirá hablar con el mismísimo Miguel de Cervantes. Esta app constituye nuestro homenaje particular a este escritor en su cuarto centenario ya está disponible para su descarga, totalmente gratuita, desde Google Play.



Habla con Cervantes continúa la senda que iniciamos con ¿Quién soy?, el juego que te retaba a adivinar los nombres de siete genios de la humanidad. En este caso, nos hemos centrado en un único personaje a fin de ofrecer una experiencia más completa, con un sofisticado motor de bot que lleva la conversación con chatbots a nuevas cotas.

También seguimos trabajando en una nueva actualización que incorporará nuevas y atractivas funciones a esta app, así que si tienes cualquier comentario o sugerencia, no dudes en ponerte en contacto con nosotros.

viernes, 27 de mayo de 2016

De QB a Mentor: Historia de un nombre

No hace falta ser programador para saber lo difícil que es elegir un nombre. Si conocemos a alguien que ha tenido un hijo, podremos hacernos una buena idea de lo complicado que puede ser porque claro, a menos que el nombre lleve diez años elegido o sea inevitablemente el del abuelo o similar, los futuros papás tendrán que dedicar un buen tiempo a bucear en libros o en internet para encontrar el nombre ideal, además de ser un tema de conversación recurrente durante todo el embarazo. Y es que no es fácil encontrar un nombre que sea sencillo pero con personalidad, ni demasiado corto, ni demasiado largo, que no te recuerde a nadie que te disguste, que sea fácil de pronunciar, etc.

Elegir un nombre para un proyecto de software es algo parecido, con la complicación añadida de que, además, suele ser recomendable escoger un nombre que se entienda en varios idiomas. Entre los muchos nombres que hemos tenido que crear en Antakira Software, probablemente ninguno nos ha dado tantos problemas como el de nuestro próximo proyecto, motivo por el que hemos utilizado de manera provisional el nombre «Proyecto QB» del que habéis leído en este blog recientemente.

Para empezar,un  problema adicional, es que muchos buenos nombres ya están registrados. Por ejemplo, «Psyborg» es un buen nombre, como juego de palabras entre «Psychology» y «Cyborg», pero por supuesto ya existe. También «Q-Bot» es un estupendo nombre, corto y sonoro, que representa a la perfección la combinación entre cuantificador y bot que es nuestro proyecto pero, una vez más, también existe ya.

Muchos otros nombres también han ido y venido, como «Egobot», «Quantum bot», «Introbot», «Innerbot», «MeBot», «BotMe», «adoptAbot» (este último no completamente descartado para un futuro proyecto), aparte de la posibilidad de crear un nombre específico para la tecnología, como por ejemplo «TrueHuman» o, mejor aún, «TruHuman». Incluso pensamos en utilizar un nombre de pila, como por ejemplo «Martín», pero finalmente descartamos esta opción, para poder establecer una clara diferencia entre la tecnología y el bot.

Al igual que les ocurre a los padres en busca de nombre, el problema acaba siendo que, si no lo tienes claro desde el principio, es muy difícil elegir porque ningún nombre te parece suficientemente especial para tu criatura. A medida que avanzaba el proyecto y entrábamos en la fase de documentación, empezaba a ser necesario elegir un nombre definitivo y estábamos a punto de optar por el nombre que menos nos disgustara de los anteriores cuando hoy, realizando tareas de mantenimiento rutinarias, nos hemos encontrado el nombre perfecto y lo más curioso es que no es ni más ni menos que el primer nombre en el que pensamos cuando empezamos a diseñar esta tecnología, tal y como puede leerse en esta antigua entrada de blog. Y el nombre elegido, por tanto es... Mentor, para el que hemos creado el pequeño teaser que podéis ver a continuación:


¿Y por qué pensamos que este es el nombre ideal para nuestro proyecto? Hay varios motivos, pero probablemente el más importante es que pensamos que esta palabra transmite a la perfección el objetivo primordial del chatbot que estamos creando: ayudar al ser humano.

Últimamente, está de moda hablar del «big data», el término que designa el crecimiento exponencial de la información que se ha experimentado en los últimos años, a medida que aumentaban tanto el número de dispositivos (ya no solo ordenadores, sino también pulseras, relojes, bombillas y todos los integrantes, de las internet de la cosas) como el volumen de información que se intercambia. Sin embargo, ¿qué significa este «big data» para el usuario normal? Estos datos tienen, por definición, un volumen tal que su análisis mediante los métodos tradicionales es prácticamente imposible y, para aprovecharlos, suele ser necesario recurrir a técnicas avanzadas, como paquetes de análisis estadístico y sistemas de inteligencia artificial específicamente diseñados para este fin. Incluso grandes empresas, con departamentos específicamente dedicados a analizar esta información, tienen en la actualidad problemas para sacarles partido, así que ¿qué posibilidad tiene un usuario medio de sacar provecho de esta nueva oportunidad?

Curiosamente, estamos llegando a un punto en el que muchos datos sobre nosotros son más accesibles para las empresas que para nosotros. Por ejemplo, el historial de canciones que hemos reproducido en nuestra aplicación de streaming favorita, nuestro historial de movimientos bancarios o las compras que hemos realizado en línea. Aunque podemos consultar estos datos, la interfaz muchas veces no nos permite ir más allá de los últimos días o meses y, además, la información está dispersa en diversas fuentes independientes.

No es extraño que sea así y probablemente aunque tuviéramos estos datos no sabríamos muy bien qué hacer con ellos. También a las empresas les resulta difícil emplear transformar esta información en algo útil, como el momento en el que es más probable que hagamos una compra o los artículos que nos pueden interesar. Por supuesto, sus análisis pueden sernos de utilidad, pero con dos puntualizaciones: una, es posible que descarten conclusiones que se salgan de su campo, pero que nos podrían interesar y, dos, sus intereses tendrán prioridad sobre los nuestros.

Mentor está siendo desarrollado para que cualquier usuario pueda enfrentarse a esta avalancha de información. Nos permite tomar datos de numerosas fuentes y presentarlos de una manera clara y unificada para que podamos tomar mejores decisiones, aparte de servirnos de motivación. A diferencia de otros asistentes, que se centran en el «exterior» y nos ofrecen noticias, productos y servicios, en este caso la prioridad es el «interior», cómo vivimos nuestra vida día a día y lo que podemos hacer para mejorarla. Y para poder manejar tal cantidad de datos y tan diferentes, sin abrumarnos con una interfaz complicada ni limitar nuestras posibilidades, utiliza el lenguaje natural para comunicarse con nosotros, de manera que nuestra experiencia pueda ser tan simple o tan compleja como queramos.

Por el momento y dado lo ambiciosa que es nuestra propuesta, el proyecto está en sus primeras fases y nos estamos concentrando en la recopilación de datos, aunque con una arquitectura modular que facilite su futura ampliación. Por supuesto, esperamos recibir vuestros comentarios y sugerencias, tanto sobre el proyecto como sobre el diseño que, a diferencia del nombre, aún no es definitivo, porque ¿habíamos dicho alguna vez que crear el diseño de un proyecto es como elegir el nombre de un hijo?

viernes, 22 de abril de 2016

Y 400 años después... ¡Cervantes habla de nuevo!

Hoy hace 400 años que nos abandonó uno de los mejores escritorios de todos los tiempos, Miguel de Cervantes Saavedra cuyo paso a la posteridad le garantizó el ilustre hidalgo Don Quijote de la Mancha, cuya personalidad traspasó las barreras de las páginas para definir una visión de la vida y retratar un país.


En Antakira Software, consideramos que la cultura es fundamental para el progreso de la humanidad y queremos unirnos a la conmemoración de este hecho histórico con una noticia muy especial: el próximo lanzamiento de una aplicación para Android que nos permitirá hablar con este célebre escritor.

Para conseguirlo, no solo hemos avanzado aún más en la tecnología que hizo posible «¿Quién soy?», sino que también estamos desarrollando innovadores sistemas de control de calidad para lograr que las conversaciones sean más realistas y amenas que nunca.

Muy pronto os ofreceremos más información sobre este nuevo proyecto.

domingo, 14 de febrero de 2016

Aleatoriedad percibida


La aleatoriedad suele ser muy importante a la hora de crear un juego, ya que permite generar un elevado número de posibilidades mediante la combinación de unos pocos elementos. Por ejemplo, solo con combinar tres elementos de cada uno de los cuales haya cuatro posibilidades tendremos nada menos que 4 × 4 × 4, es decir ¡64 posibilidades por tan solo 12 elementos! Una fantástica manera de rentabilizar nuestro esfuerzo, ¿no?

Si embargo, en la práctica es habitual que los primeros resultados que obtenemos al incorporar aleatoriedad a un juego no sean tan buenos como esperábamos, ya que el desarrollo del juego suele ser extrañamente monótono y repetitivo, cuando esperábamos justo lo contrario. El problema, en este caso, no suele estar en lo difícil que es crear un número realmente aleatorio (que también lo es), sino en la propia definición de los números aleatorios.


Los números aleatorios se caracterizan precisamente por ser una sucesión en los que cada elemento tiene siempre la misma probabilidad de ocurrencia. Continuando el ejemplo anterior, imaginemos que queremos elegir 3 veces un número del 1 al al 4. Si la primera vez obtenemos aleatoriamente un 3, el número siguiente puede ser nuevamente cualquier número del 1 al 4. Por tanto, las secuencias 1-1-1, 2-2-2, 3-3-3, 4-4-4, son totalmente posibles, aunque sean poco probables. Y curiosamente, al jugador estas sucesiones obtenidas al azar y que tienen la tendencia a aparecer con mayor frecuencia de lo que esperamos, tendrá la sensación de que son... pues... poco aleatorias.

Ya en QuizSapiens tuvimos que hacer un esfuerzo muy superior al previsto en un principio para que la selección de las preguntas no solo fuera aleatoria, sino que lo fuera. Aunque el método para abordar para caso es diferente, hemos condensado nuestras ideas sobre la aleatoriedad en el siguiente concepto:

Aleatoriedad percibida: sucesión de elementos tal que un ser humano es incapaz de apreciar en ella ningún otro patrón que no sea, precisamente, la imposibilidad de encontrar un patrón.

Este concepto no solo es muy útil para enriquecer la experiencia del jugador sino que también ayuda a que el jugador disfrute del máximo potencial del juego en un tiempo mínimo posible.

Como ejemplo muy simplificado, recientemente nos encargamos de la elaboración de un sencillo algoritmo encargado de seleccionar canciones y, como era de suponer, asignarles un número a cada una y elegir números al azar resultó no ser una buena idea. Nuestro algoritmo final elige un conjunto de 10 canciones y las almacena de manera que no se repitan hasta que se hayan reproducido la mitad de las canciones de la lista. De esta manera, evitamos el patrón «las mismas canciones se repiten con demasiada frecuencia», pero también el patrón «no se repiten las mismas canciones hasta que ha sonado la lista completa», que podría ser igualmente molesto. Por supuesto, se podría complicar hasta el infinito el sistema de selección para ofrecer al usuario una experiencia «agradablemente aleatoria» y es que la aleatoriedad, tal como decía Óscar Wilde de la espontaneidad, es una pose dificilísima de mantener.