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.

sábado, 28 de noviembre de 2015

¡Chatbots, desplegaos!

Hace poco descubrí un encantador bot con una finalidad muy singular: concienciar sobre el acoso de mujeres. Este magnífico bot, con el que puede hablarse aquí, es un brillante ejemplo de un uso específico de un chatbot. Y, aunque sus reglas no son especialmente sofisticadas, hace un excelente trabajo en el campo concreto para el que ha sido diseñado.


Aunque desde un principio, nuestro bot ha estado pensado poder adoptar diferentes personalidades, lo cierto es que hasta ahora el desarrollo estaba centrado en una única personalidad, un asistente lo más atento y completo posible. Sin embargo, este objetivo tan claramente marcado tiene el inconveniente de que tiende a ahogar la creatividad. Si tienes un bot al cuidado de tus citas, tus cuentas y tu vida en general, no resulta muy apetecible experimentar con nuevos enfoques que, en el mejor de los casos, pueden generar datos indeseables que entorpezca la consulta de los buenos, y, en el peor de los casos, pueden ocasionar la pérdida de información.

Con el fin de fomentar la innovación, estamos trabajando en una nueva función que permitirá cambiar de un bot a otro de manera extremadamente rápida y sencilla. Cada bot estará encapsulado a partir de ahora, con sus datos y los reglas en carpetas aisladas, pero compartiendo todos los datos comunes. Además, esta innovación ayudará a racionalizar los procedimientos de inicialización y esperamos que también sirva para poner a punto el editor de reglas.

Aunque todavía quedan algunos retoques, dentro de muy poco esperamos lanzar una versión de demostración con la que podremos crear nuestro propio bot y experimentar con diferentes personalidades de una manera extremadamente sencilla.




martes, 3 de noviembre de 2015

La curiosidad como motor del comportamiento

Cuando un ser humano se sienta a conversar con un chat bot suele adoptar una de estas tres estrategias:
  • Insultar al bot
  • Dejar al bot en evidencia para que se vea que no es más que una máquina
  • Mantener una conversación normal
Las dos primeras opciones son, con diferencia, las más habituales pero no dan pie a conversaciones largas. A fin de cuentas una conversación basada en insultos, por muy bien que se respondan, no suele dar para mucho. Además, una vez que hemos conseguido avergonzar al bot demostrándole que nuestro intelecto es infinitamente superior al suyo, damos la partida por ganada y el juego por acabado.


La tercera opción es mucho menos habitual y también suele generar rápidamente frustración en el ser humano cuando sus respuestas nos desagradan. Aparte del tremendo esfuerzo de programación que requiere emular una conversación humana, no hay que olvidar que a los humanos tampoco vale cualquier conversación. ¿No has tenido nunca una conversación con un compañero de trabajo o el amigo de un amigo que apenas haya durado tres o cuatro frases antes de que sobrevenga un silencio incómodo? O, incluso la conversación ha continuado, ¿no has pensado nunca que nada de lo que estabas escuchando no te importaba en absoluto? Si tales sentimientos despiertan ante seres humanos similares a nosotros, con un vasto conocimiento del mundo y sin problemas para articular sus ideas mediante frases, ¿no es demasiado pedirle a un ordenador que no solo emule una conversación cualquiera, sino que sea lo suficientemente amena como para que nos apetezca continuarla?

Dado que la inteligencia artificial está aún en sus albores, por ahora prácticamente imposible crear un bot cuya personalidad y conocimientos sean tan fascinantes como para que cualquier ser humano pueda pasar un buen rato hablando con él. Por tanto, es preciso buscar un método alternativo para que la conversación con un bot resulte más atractiva.

Hace tiempo pensé en la posibilidad de convertir la conversación en algún tipo de juego. Al igual que los perros a los que es posible entretener lanzándoles una y otra vez la misma pelota, los seres humanos tenemos cierta tendencia a que algo nos resulte mucho más interesante en cuanto le añadimos puntos, insignias y récords (o PBL, tal como se le denomina en la jerga). No obstante, no parece haber una manera obvia de incluir estos elementos en una conversación.

Al igual que en el mundo de la gamificación no todo son PBL, había que buscar algún tipo de juego que resultara lo suficientemente gratificante al jugador como para que conversara con regularidad con el bot, pero ¿cuál? Me rondaba idea vaga sobre ayudar al bot a ampliar su conocimiento del mundo, por ejemplo, respondiendo a sus preguntas sobre las relaciones entre las palabras de las que hablábamos, pero algo no acababa de funcionar. Todas estas ideas fallaban porque, por ilustrarlo con mayor claridad, era como un juego de ping-pong con un solo jugador. Tal vez podíamos lanzarle preguntas al jugador y tal vez nos las devolviese, pero el bot no tenía ningún interés particular en esas respuestas. Y si ya el bot se aburría, ¿cómo íbamos a interesar al ser humano?

Tras meditar bastante sobre todo esto, pensé en invertir el planteamiento. Siempre había pensado en el juego desde el punto de vista del ser humano pero, ¿y si pensaba más bien en un juego que pudiera interesarle a un bot? ¿Y si creaba algún tipo de algoritmo que motivase a que el palito, hasta ahora inmóvil, que representaba al bot en el juego de ping-pong subiese y bajase en busca de la pelota? Solo se me ocurrió una respuesta: la curiosidad.

Imaginemos que le contamos al bot cualquier detalle de nuestra vida. Por ejemplo, «Mañana iré a Granada». Según el planteamiento estático, podríamos generar una serie de preguntas que el bot podría plantearnos rutinariamente «¿Qué harás en Granada?», «¿Está muy lejos Granada?», «¿Has estado antes en Granada?», etc. Son conocimientos estáticos, que el bot adquirirá, almacenará y, en realidad, no le servirán para nada. Es un juego, sí, pero uno tan fácil que resulta aburrido. Para animarlo, puede plantearse con nuevas reglas. En lugar de crear al azar una pregunta que le plantearemos al ser humano y luego nos quedaremos sin saber qué decir, ¿y si creamos una base de datos que contenga la curiosidad del bot por el mundo y la que introduciremos todas las preguntas que el bot pueda plantearse? Por supuesto, no podemos que el bot plantee las preguntas una tras otra, lo que aburriría tanto al usuario como al propio bot, sino que le obligaríamos a elegir una única pregunta que deberá cumplir dos condiciones:
  • Estar relacionada con lo que el usuario ha dicho
  • Dar respuesta al máximo número de incógnitas de la base de datos
Estamos convirtiendo de esta manera un sistema perfectamente estable en uno insatisfecho, que ahora tendrá una motivación para elegir unas preguntas en lugar de otras y un objetivo que, al igual que todos los objetivos que realmente merecen la pena, será imposible de cumplir. Con cada nueva respuesta a las preguntas deberán formularse nuevos interrogantes, al igual que nos ocurre a los seres humanos. Para equilibrar un poco el juego sería interesante compensar la desventaja que tiene frente a nuestros conocimientos del mundo dándole de posibilidad la posibilidad de buscar información en determinadas fuentes, así como crear hipótesis y ponerlas a prueba.

Al igual que ocurre con frecuencia en el mundo de la informática en general y en el mundo de los chatbots en particular, muchas ideas que se parecen brillantes en un principio resultan ser totalmente inservibles. El método propuesto tal vez no sea tan prometedor como pienso, pero incluye algunas ideas que, tal vez implementadas de otra manera, puedan mejorar la interacción entre seres humanos y máquinas. Además, se trata de un enfoque lo suficientemente concreto para ponerlo en práctica sin demasiadas complicaciones, basta con crear una batería sencilla de preguntas, unas relaciones básicas y un algoritmo de selección simple, pero al mismo tiempo lo suficientemente amplio como para admitir todo tipo de mejoras, perfeccionando sus elementos básicos. A fin de cuentas, la curiosidad es uno de los grandes motores de la humanidad y no sería descabellado pensar que también pueda serlo para unas máquinas que carecen de otras necesidades que son las que motivan buena parte del comportamiento humano.

sábado, 19 de septiembre de 2015

Más gazpacho

Tal vez en vacaciones no consultes tu teléfono, no veas la televisión o no te conectes a Internet, pero es prácticamente seguro que todos los días habrás hecho como mínimo una comida. Y a pesar de la importancia de esta necesidad humana, con frecuencia se diría que no recibe la atención que se merece.

Sin duda, hay miles de páginas web y aplicaciones repletas de información culinaria, pero la mayoría de ellas presentan graves deficiencias. Tal como se relata de manera muy divertida en el artículo Mamá, ¿cómo se hace esto? la mayoría de las recetas que encontramos, incluidas las contenidas en los libros de cocina, resultan tremendamente imprecisas para una generación que no ha aprendido los conceptos básicos en la cocina de casa. Por tanto, cuestiones que deberían ser tan simples como ¿cuánto añado de cada ingrediente? o ¿cuánto tiempo tiene que estar hirviendo? pueden hacer que una receta no salga como debería.


En Antakira Software siempre hemos pensado que todavía no se ha aprovechado suficientemente la tecnología para facilitar y mejorar nuestra alimentación. Con este fin, lanzamos la página web Gazpacho & Co. que intentaba fomentar una alimentación variada y saludable. No obstante, no era más que una primera aproximación.

Y es que uno de los grandes problemas de la alimentación es que suele considerase desde un punto de vista fragmentado. Hay muchas recetas, pero ¿hasta qué punto es sana una receta?, ¿es económica?, ¿es sabrosa?, ¿tiene variaciones que nos serían más adecuados?, ¿utiliza alimentos exóticos?, ¿hay productos locales por los que podamos sustituirlos? Son muchas preguntas, cuyas respuestas pensamos que deberían interrelacionarse, para ponernos realmente al control de nuestra alimentación.

Otro importante problema de los recetarios es la abundancia de recetas poco fiables. Resulta muy fácil encontrar recetas para ocasiones especiales, pero las recetas que más nos podrían interesar, aquellas que podemos utilizar a diario son más difíciles de localizar. En este caso, menos es más. Un número pequeño de recetas infalibles resulta mucho más eficaz que un número elevado de recetas de calidad dudosa.

Con todas estas ideas, estamos cocinando una nueva aplicación de escritorio que esperemos que sea útil para disfrutar cada día de la comida que, a fin de cuentas, es uno de los grandes placeres de la vida. Si quieres colaborar con nosotros, no dudes en escribirnos.