Chatterbots (artículo revista)

La ciencia ficción se hace realidad

La educación que recibimos durante nuestra vida, así como la experiencia que cada uno va acumulando, hacen que, por ejemplo, distingamos entre un círculo y un cuadrado, identifiquemos la cara de nuestro padre, sepamos que si tocamos una llama con el dedo nos quemaremos, o que si el cielo se nubla lo más probable será que llueva. Para cada una de estas situaciones y para muchas otras más, existen especializaciones dentro de la I.A. que intentan que las máquinas respondan de la misma manera que lo haría una persona, o que sigan su mismo proceso de razonamiento.

Antes de que empecemos a hablar de los bots, es importante que aclaremos algunos términos. Para empezar, ¿qué es la Inteligencia Artificial? (en el resto del artículo me referiré a ella por I.A.). A pesar de lo que hayáis podido ver en multitud de películas, el concepto en sí es mucho más sencillo. Genéricamente puede definirse como la adaptación de la forma en que piensa el ser humano, resuelve problemas, adquiere conocimiento y razona, a un programa o sistema informático. Lo realmente complicado es plasmar sobre un papel alguno de estos mecanismos.
   Los Chatterbots enlazan con el estudio del lenguaje natural, pero está claro que la necesidad de nuevos interfaces entre persona  máquina harán que este tipo de bots siga evolucionando. Como su propio nombre indica, los Chatterbots son bots que chatean contigo. Un bot es un programa, más o menos complejo, que se carga dentro de otro sistema y desarrolla de forma autónoma alguna labor. En muchas ocasiones emula el comportamiento de un usuario. Si sois jugones, recordaréis, por ejemplo, la colección de bots que salieron para el CounterStrike en cada una de sus versiones. Cargabas unos cuantos en cada uno de los dos equipos, y la diversión no tenía fin. Llegaban incluso a responder a los mensajes de auxilio, se enfadaban si disparabas a los de tu propio equipo, se escondían cuando eran los últimos, acechando al enemigo y, por supuesto, no ahorraban en insultos, chascarrillos y burlas. Los bots a los que ahora nos referimos, se limitan únicamente a reaccionar ante entradas de texto, a las que responden con salidas de texto, más o menos coherentes.

EN QUÉ CONSISTE
Uno de los tres puntos más importantes en un chatterbot consiste en que extraiga el máximo de información de la conversación. Cuanto mayor sea la cantidad de información que extrae de nuestras frases, la precisión y corrección de las respuestas será mayor. Lo que ha permitido un mayor desarrollo de este tipo de herramientas de texto que su equivalente hablado, es el medio que utilizan. El uso del medio escrito para mantener la conversación permite que, dejando de lado la ambigüedad propia del lenguaje, el programa pueda trabajar sobre palabras perfectamente acotadas, y que, independientemente de la persona que las teclee, siempre se escribirán igual (faltas de ortografía aparte). El desarrollo de un programa o sistema que permita mantener una conversación hablada se enfrenta con las limitaciones que el reconocimiento de la señal de voz conlleva, que son muchas.
   La segunda característica reside en que sea capaz de dar respuestas correctas tanto en la forma como en el fondo y acordes con el contexto en el que se habla. Es decir, si las frases que salen de la máquina, por correctas que sean, no tienen nada que ver con la conversación mantenida, estaríamos frente a algo parecido a un loro mecánico. Sí, la sintaxis, el léxico y la semántica del texto son correctos, pero sencillamente la frase no viene a cuento en laa conversación que mantenemos.
   En tercer lugar se encuentra el hecho de que responda en un tiempo razonable y nos permita mantener una conversación más o menos fluida. Como ejemplo tomaremos al típico programa de ajedrez. Si es bueno y tiene unos algoritmos de búsqueda decentes y le damos todo el tiempo del mundo para que calcule la mejor jugada, lo más probable es que tarde una media de 10 minutos por cada una. Cierto es que ganará la partida, pero el tiempo de respuesta en el caso que tratamos es demasiado importante, lo que nos obliga a un equilibrio entre calidad y tiempo de la respuesta.
   Suponiendo que hayamos conseguido un bot con las anteriores características, podremos someterlo al test de Turing, que consiste en el siguiente experimento. Ponemos a una persona en una habitación y a la máquina en otra. Hacemos que la persona, chatee con ella, pero sin que ésta sepa si conversa con una persona o una máquina. Pasado un tiempo determinado, se le pregunta a la persona con quién cree que chateaba. Si el encuestado es incapaz de distinguirlo, nuestro bot habrá pasado la prueba. Pero, a día de hoy no se conoce ningún bot que haya conseguido pasarla.
   Existen concursos internacionales con premios en metálico en los que se evalúa a los bots participantes, haciéndoles preguntas sobre temas de actualidad y sobre el mundo real. En función de la calidad de las respuestas, se les va puntuando, y finalmente se hace con la victoria el que más puntos acumule.
   Contamos con otra prueba para distinguir a humanos de máquinas, conocida como "CAPTCHA" (Completely Automated Public Turing Test to tell Computers And Humans Apart). Aunque se sale un poco del tema de los chatterbots, veamos en qué consiste. A pesar de lo aparatoso del nombre, en algún momento habréis visto algo similar. Consiste en una imagen, generalmente de texto bastante distorsionado, sobre un fondo no uniforme. Suele incluirse en páginas de creación de cuentas de correo, encuestas, etcétera. Con ello se evita, por ejemplo, que algún bot se dedique a crear cuentas de correo de forma masiva. Un ejemplo:

ejemplo1 
   Para un bot, reconocer el nombre escrito entre esta marea de líneas es casi imposible. Para una persona que sepa leer y no tenga demasiadas dioptrías, reconocer las primeras letras no es difícil, y a partir de éstas, puede imaginar el resto, con lo que reconocerlas, si ya tiene una idea previa, no debería ser complicado. Hoy en día tampoco existe ningún sistema capaz de resolver una colección aleatoria de capuchas.

CÓMO FUNCIONA
Los elementos que lo forman, como si de un sistema experto se tratara, consisten en una o varias bases de conocimiento que almacenan el grueso de los datos, y un motor que se encarga de tratarlos. Esta forma de construir sistemas inteligentes resulta muy cómoda, ya que permite modificar las bases de conocimiento o el motor de tratamiento de forma independiente. A partir de estos elementos, nos planteamos las siguientes cuestiones: ¿cómo extrae información el bot de lo que nosotros decimos?, ¿cómo elije la respuesta más apropiada en cada caso?, ¿realmente nos entiende?
   La información la extrae aplicando métodos de análisis del lenguaje natural. Normalmente, y por ser el más asequible, se emplea el método de las palabras clave, que consiste en analizar cada frase de entrada y, en función de ciertas palabras que aparecen en ella, orientar la conversación hacia un tema u otro. Por ejemplo, normalmente al iniciar una conversación, la colección de palabras que utilizamos es bastante limitada. Podemos empezar con el típico "hola", un "buenas", un "buenos días" y, como mucho, un "¿qué pasa?". Todas ellas serán palabras clave. En el caso del saludo inicial, las palabras tienen además una característica, y es que aparecerán al principio de la conversación. Si se encuentran más adelante, excepto el "hola", es bastante probable que su sentido no sea el de saludarnos. Pues bien, si el bot, al analizar la frase de entrada comprueba que ésta incluye un "hola", responderá alguna de las frases programadas para responder al saludo: "hola amigo", "me acabas de despertar…" o cualquiera otra que se os ocurra. Un detalle a tener en cuenta es que la programación del bot se orienta a que haga creer al usuario que realmente está manteniendo una conversación con una persona. Las limitaciones actuales impiden que realmente el bot extraiga toda la información que contienen las frases de entrada, luego, como es incapaz de entender exactamente lo que le decimos, se programa para que responda con frases que nos resulten satisfactorias. Por ejemplo, si, usando el método de las palabras clave, el robot detecta la plabra "deporte" en una frase, aunque no haya entendido nada de lo que le hemos preguntado, puede responder: "Mi deporte favorito esel fútbol". Dicho así suena un poco simple, pero es una salida bastante buena. Como podéis imaginar, el método de las palabras clave es muy efectivo cuando se utilizan frases cortas, pero pierde bastante eficacia en el momento en el que la longitud de la frase aumenta, ya que en una misma sentencia puede reconocer varias palabras clave y si no consigue establecer alguna relación entre ellas, la respuesta que dará no será satisfactoria. Por suerte, la longitud de las frases que se usan en un Chat normalmente es bastante reducida, ya que la gente prefiere usar varias frases cortas a una larga y elaborada. Al método de las palabras clave, que utiliza un análisis léxico (simplemente se queda con cada una de las palabras del texto de entrada, o con conjunto de ellas, pero sin relacionarlas entre sí) se puede añadir el siguiente paso, un análisis sintáctico (ve la estructura de la frase, intentando averiguar qué papel tienen las palabras que la forman). En frases sencillas, es posible hacerlo, en frases muy complicados es casi imposible. Lo bueno que tienen los chatterbot es que, si ninguno de los análisis que realiza devuelve un resultado satisfactorio, siempre puede salirse por la tangente con alguna frase ingeniosa. Cierto es que, si llevamos a un concurso a nuestro bot, ese tipo de comportamientos se penaliza, pero como inicialmente no creo que ninguno vayamos a competir, nos conformaremos con que resulte medio creíble. Si por último, y posiblemente sea la parte más complicada, logramos que el bot identifique el tema de la conversación que está manteniendo, los resultados pueden ser asombrosos. A favor tenemos que normalmente una conversación que trata sobre un asunto concreto, poco a poco se irá desviando el tema inicial para pasar a otro. Una vez más entre en juego la astucia del programador. Aunque el bot sea incapaz de determinar sobre qué tema le estamos hablando, debería ser capaz de llevar la conversación a algún asunto en concreto sobre el que tenga una colección de frases y respuestas apropiadas. De hecho, cuando se prepara un bot para presentarlo a un concurso, se debe tener en cuenta que le pueden preguntar acerca de cualquier cuestión, con lo que el repertorio de temas del bot, debe ser lo más amplio y variado posible. Para terminar advertiros de que la programación de un chatterbot desde cero no es lo que se dice sencilla, pero, por suerte, se han creado varios lenguajes para programar bots, y están disponibles de forma gratuita en la red. Dichos lenguajes permiten la definición de una serie de esquemas, en los que se pone la palabra clave, o una frase para su reconocimiento y las respuestas que se pueden dar (para una misma frase de entrada, son posibles diferentes respuestas, lo que hace más entretenido y variado al bot). Los lenguajes están lo suficientemente documentados par que, si tenéis interés, podáis hacer vuestro primer bot.

Allan Turing fue uno de los padres de la informática. Nació en 1912 y tiene el típico currículo de inventor renacentista. Fue matemático, filósofo y critógrafo. Trabajó intentando descifrar la máquina ENIGMA en la Segunda Guerra Mundial. Construyó una de las primeras computadores y fue el inventor de la máquina de Turing, un sencillo dispositivo teórico que consta de una cinta sobre la que unas cabezas lectoras y escritoras trabajan. Dicho así no parece nada excepcional, pero resulta que dicha máquina es capaz de ejecutar cualquier programa que exista.

::Más información::

  • Desde www.alicebot.org, la Web de la Fundación de Inteligencia Artificial, podrás chatear con el bot A.L.I.C.E.
  • Si te interesa participar en el nuevo reto de Chatterbox o quieres  ver a los ganadores de ediciones pasadas, visita www.chatterboxchallenge.com
  • Visita www.geocities.com/brizglace y obtendrás una colección de enlaces a Webs sobre chatterbots.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s