13.9.16

Chatbots y la penosa IA actual


Aunque existen chatbots muy buenos, que trabajan para organizaciones y empresas de todo tipo (principalmente en atención al cliente), la mayoría de ellos sólo son capaces de desenvolverse bien en lo que se define como entornos cerrados, en los cuales se pueden utilizar respuestas pre-programadas a preguntas previamente almacenadas o supuestas de aspectos muy genéricos. Todos los hemos experimentado e interactuado con ellos en mayor o menor medida, por ejemplo cuando llamas a tu compañía de electricidad, de seguros o de teléfonos. Suelen hacerte preguntas tipo: "dígame a qué refiere su consulta" o "explique brevemente qué problema tiene", si en nuestra respuesta incluimos palabras como "facturación", "avería", o "pago", entre otras muchas potenciales palabras, es muy probable que el IVR automáticamente nos pase a otro IVR con respuestas más especializadas, o nos dé una respuesta genérica, tipo "su periodo de facturación va del quince al treinta de cada mes".

Si damos una respuesta más larga, mezclando muchas "palabras clave", nos puede ocurrir con muchas probabilidades que nos salga una "respuesta escape", tipo: "no he entendido su consulta, ¿puede repetir?". Para evitar ésto muchos sistemas ya poseen una serie de palabras clave que nos ofrecen para interactuar con ellos, como por ejemplo: "si su consulta es acerca de facturación, pulse uno" o: "si su consulta es acerca de facturación, diga: 'factura'".




Una manera muy común de "pasar de ellos" y hacer que el sistema desvíe tu llamada a un agente de atención al cliente "de verdad" (o sea, humano), y saltarte lo más de prisa ese filtro, es responder algo que no tenga nada que ver con ese tipo de palabras clave. Por ejemplo, si hablas con una compañía de telefonía, puedes responder: "salchichas en vinagre", o sea, algo incongruente y sin sentido. Como el IVR no está configurado para ello, solía ser suficiente para que te dijera: "ahora mismo le paso con un agente que atenderá su consulta". Sin embargo desde hace tiempo ese tipo de respuestas sin sentido en un gran número de ocasiones no funcionan, debido principalmente al avance de estos sistemas para filtrar llamadas broma o consultas tontas (yo he trabajado en un sitio de esos y, sobre todo los fines de semana, ese tipo de llamadas de chavales solamente para pasar el rato era muy habitual). Por lo tanto la respuesta tiene que ser concisa, corta, directa, pero que el IVR no pueda responder. Normalmente -al menos hasta el momento- con decir: "información" suele ser bastante, aunque hay sistemas que si haces eso te dirán: "por favor, especifique". Seguro que más de uno habréis perdido los nervios con ellos. Eso sí, hay que tener cuidado en no decir "ofertas", "rebajas" o "descuentos", las palabras "negras" por las que el IVR te desviará a una serie de publicidades grabadas y tendrás que aguantar varios minutos escuchando las grandes ofertas de la compañía que sea.

Por desgracia hasta ahí llega la Inteligencia Artificial (IA o AI) de la mayoría de ellos. Obviamente, no son sistemas que pueden cargar con una monstruosa base de datos para interactuar con el cliente, sino simplemente actúan de filtro para liberar llamadas y hacer que la compañía se ahorre un buen dineral pudiendo prescindir de unos cuantos puestos de trabajo.


Una de las muestras más evidentes de la IA a nivel cotidiano suelen ser los chatbots. Este tipo de sistemas tienen una inteligencia muy limitada, por lo general, y con pocas palabras puedes desmontarles su lógica y darte cuenta de lo artificiosos que son, incluso haciendo surgir las respuestas pre-programadas a preguntas que no saben o no pueden analizar, para las cuales los desarrolladores les incorporan unas respuestas tipo comodín, que pueden servir para responder a cualquier tema, aunque una vez tú hables de automóviles, y la otra hables de gaviotas. Incluso a veces no pueden siquiera seguir ni la temática de la conversación.

Un ejemplo de esto que os cuento lo podéis ver en una de las conversaciones que he capturado de la ChatBot Alizia de la compañía Deixilabs. Como veis, Alizia en un primer momento parece mostrar interés, incluso ser sentimental, pero al segundo siguiente te das cuenta que su IA es realmente penosa y deja muchísimo que desear.


Normalmente lo que se suele hacer para solucionar ésto es incorporar una base de datos en donde el ChatBot vaya almacenando toda la información posible del sujeto y, además, para su relación con él recurrir a términos, verbos, adjetivos y demás partes del lenguaje (incluyendo gramática compleja) para dotarle de muchas más herramientas conversacionales. Aunque los resultados son bastante buenos, sigue careciendo de personalidad y, en último término, las relaciones humanas son tan complejas que los experimentos que se han llevado a cabo de este tipo han dado como resultado IAs muy lentas y bases de datos gigantescas. Recordemos que una relación humana no es solo lenguaje, los humanos también tenemos cambios de carácter, gustos, y un sin fin de probabilidades de que, lo que hoy nos apetece, mañana no. Además, cada uno somos diferentes, por lo que la IA tendría que almacenar todas esas variantes una por una en su base de datos obligándola a manejar unas cantidades de datos interminables.

Mientras los humanos tenemos la capacidad de poder "leer entre líneas", de saber por su forma de escribir (o expresiones faciales y tono, en caso de conversaciones cara a cara) cómo se siente la otra persona para, de esa forma, variar también nuestra forma de tratarle a cada segundo (es lo que se denomina "empatía"), a una IA actual eso se le hace muy difícil. Una de las razones es porque la mente humana no es solo bases de datos, y aunque expresiones, palabras y lenguaje, lo aprendemos con el idioma, los importantes pero sutiles cambios que se producen al usarlo tienen mucho de mnemotecnia que una IA no ha alcanzado de momento.


Existen -y existieron- muchos proyectos que intentan abordar este asunto, principalmente llevados a cabo por universidades, en los cuales, en lugar de dotarle a la IA de una serie de técnicas de lenguaje y de materiales afines, simplemente se la ha dejado "que aprenda". Entre uno y otro están los ChatBots y los sistemas de IA de smartphones, como Siri, acertadamente encuadrado por Apple dentro de lo que se denominaría un "asistente", en lugar de un sistema con IA interactiva, aunque pudiera cumplir funciones de ella. El problema de que una IA aprenda es que, al menos actualmente, no hay herramientas específicas para ello. Mientras un niño es capaz de aprender interactuando con su entorno y con el estudio, una IA no puede aprender simplemente almacenando datos, frases y formas de interactuar. Es cierto que puede simular ser inteligente cuando ese aprendizaje se realiza en un entorno muy bien controlado, por ejemplo cuando una IA aprende a relacionarse con una sola persona, pudiendo almacenar todo el comportamiento, gustos e incluso inclinaciones de esa persona, pero eso no dejaría de formar una conjunto de reglas muy específicas, como un cliché que luego se viene abajo cuando se le somete a una forma de interactuar distinta, mucho más abierta.

Hace años desarrollé un sistema de IA que estaba a medio camino entre uno y otro. No me gustan las bases de datos porque encadenan a la IA a muchos formulismos pero, en cierta forma, también entiendo que son necesarias en parte (en algún sitio tienes que almacenar la información que va recabando). Así que intenté simplificar de manera más eficiente y sencilla esa base de datos. En su lugar me centré más en la mnemotecnia del lenguaje, en la estructuración gramatical y en un algoritmo capaz de elegir la respuesta basándome en técnicas parecidas a las de los IVR actuales (mejorable, pero que servía como un primer paso para explorar las capacidades de interacción y modificarlo más adelante). La falta de tiempo y las vicisitudes de la vida me hicieron abandonar aquellos primeros trabajos de IA, aunque llegué a usarla en alguna que otra herramienta en forma de programa, e incluso en alguna aplicación para teléfonos con J2ME.


Actualmente la mayoría de IA implementada en ChatBots recurre al análisis de la propia información que le ofrezcamos, obteniendo con ello respuestas cada vez más trabajadas. A mi parecer, esto es un juego con uno mismo, realmente no estamos interactuando con una IA, más bien -bajo mi punto de vista- lo veo como algo similar a ese amigo que se burla de nosotros repitiéndonos lo que decimos pero, en este caso, con mediocre variabilidad. Obviamente todo lenguaje se fundamenta en el análisis de la frase (lo que llamaríamos entre humanos "entender lo que el otro dice"), pero este tipo de conversaciones cuando se llevan a una máquina deberían ser más cuidadas. Vemos un ejemplo de esto que os hablo en el ChatBot Dr. Abuse, en el cual a una pregunta trivial (el tiempo que hace hoy) nos da una respuesta pre-formulada de la que hablábamos antes. Esto tira al traste cualquier eficiencia e inteligencia (o simulación de la misma, al menos) de cualquier IA.

Realmente no deja de ser bastante lamentable que, en los tiempos que corren, y tras muchos años de desarrollos, la mayoría de IAs implementadas en ChatBots no superen demasiado a las realizadas y programadas ya en los años noventa. Es cierto que en materia de ayuda (bien como información o como sistema de aviso de socorro en caso de accidente, por ejemplo en los coches, incluso con la capacidad de recurrir a datos de sensores del automóvil y sistemas de información vía satélite para la comunicación) sí que existen desarrollos que incluso han salvado vidas, pero la IA sigue estando demasiado lejos, al menos demasiado lejos de lo que cabría esperar a estas alturas. Eso aún a pesar de que los chips (tanto de memoria como de procesamiento) son más rápidos y ofrecen más capacidad, pero "el alma", el software, sigue estando a una escala evolutiva realmente muy pobre. Es curioso cómo la IA se resiste a emerger, como si fuera un regalo que de momento se nos está negando. Puede ser que sea mejor así aunque en lo personal, cuando me enfrento a cosas como tener que sacar un billete en una máquina de tren o un refresco en una máquina expendedora, la eche a cada momento más y más de menos. Me agradaría algo así como poder decirle: "me he confundido de billete, ¿me lo puede cambiar?", aunque, ¿eso no lo hacían ya antes los humanos en las taquillas? Será entonces que, a las compañías, no les interesan ni humanos ni máquinas demasiado inteligentes. Sí, para ellos mejor máquinas -y personas- que no hagan preguntas.

| Redacción: Bianamaran.blogspot.com

9 comentarios :

  1. Me ha gustado mucho el artículo. De hecho, casi que podría hacerse un concurso tipo Test de Turing para ver quién hace fallar antes a un sistema de estos.

    ResponderEliminar
  2. Por cierto que el que yo recordaba es Herbie para DOS, de 1987, escrito por Rafael García González en Microsoft Basic.

    Luego apareción la versión 2, en Visual Basic 3 para Win16.

    ResponderEliminar
  3. Gracias Guti. El test de turing... ¿te acuerdas de esos paraguas de los chinos que solo los puedes usar una vez, porque te viene una ráfaga de viento y te los deja totalmente "escachiporrados"? Pues lo mismo estos bots con el test de turing :D

    ¿del Herbie ese no habrá los fuentes por ahí, verdad? sería entretenido ver el código

    ResponderEliminar
  4. Pues no, y eso que los busqué. En realidad, intenté hasta decompilarlo, pero con poco éxito.

    Quizás la versión para Windows 3 de mejores resultados decompilándola, ya que al final, VB3 no era compilado.

    ResponderEliminar
  5. Para que veáis que la versión de 1987 no era tan mala, o al menos no tanto comparándola con las más modernas: https://pbs.twimg.com/media/CsPrqJFXYAApn2Y.jpg:large

    ResponderEliminar
  6. ¡ostras Guti, que flipante! Ese "estoy esperando!" me ha dejado fundido :D Y que lo digas macho, hay que sacarle el código fuente a eso... Bueno, tenemos el teléfono del programador, igual con una llamada vale... :D Seguro que el señor Rafael anda por algún lado, sería cuestión de localizarle, probablemente se enrolle y nos pase el código.

    ResponderEliminar
  7. Pues lo primero que he hecho al llegar a casa, ha sido decompilarlo. Mejor de lo esperado, pero claro, se pierden nombres de variables y otras cosas. Lo segundo, ha sido indagar un poco, y creo que lo he localizado. Veremos si responde...

    Te mantengo al tanto.

    ResponderEliminar
  8. Por cierto, el "estoy esperando", era una rutina de tiempo que saltaba cuando estabas mucho tiempo sin escribir. Lo malo es que DOSBox, corriéndolo en un i7, hace que el mensaje salte a los 2-3 segundos. Vamos antes de que me diera tiempo de tomar la captura de pantalla. Jiji. Esas rutinas de espera basadas en FOR..NEXT en vez de en el tiempo transcurrido.

    ResponderEliminar
  9. a ver si hay suerte y se enrolla... aunque puede ser que ya no tenga ese código... ¿Es muy difícil de descifrar sin variables?

    ResponderEliminar