Pues nos podemos referir a ello como ChatBot, Chat Bot, Bot de charla o Bot conversacional, pero todos significan lo mismo. Un software o programa que simula mantener una conversación con nosotros de manera más o menos acertada. Existen ChatBots para todo, los hay que intentan ayudarnos a elegir la opción o enlace que buscamos en la página web del banco o de una tienda. También están los que intentan pasarse por un humano, para hacernos creer que estamos hablando en un chat con una persona de verdad…
El caso es que realmente no dejan de ser programas, programados por programadores, para en base a una serie de preguntas o palabras preestablecidas responder de tal y cual manera. Evidentemente, como podrás entender, es muy difícil prever todas las posibles opciones que se nos presentan a tener en cuenta, por lo que en muchos casos, el ChatBot responderá con alguna tontería que no tendrá nada que ver con lo que estábamos diciendo. O si es un poco mas educado, nos indicará amablemente que no entiende la pregunta.
El por que del uso de ChatBot como asistentes
Pero la cosa, y seguro que te lo estás planteando, es porque utilizar un ChatBot en vez de por ejemplo una buena página con instrucciones de todo lo que podemos hacer y cómo hacerlo por ejemplo en una tienda online. Pues por varias razones. La primera es que el usuario se ha vuelto cada vez más vago y no va a prestar atención a una listado interminable de instrucciones. Quiere que todo sea intuitivo y no tenga que aprender nada. Y en cierto modo, casi todo se diseña hoy en día teniendo en cuenta ese enfoque de facilidad para conseguir la mejor experiencia de usuario. Pero sin embargo, incluso la mejor web del mundo siempre presenta alguna opción o flujo que es un poco más complicado.
Entonces… ¿Qué mejor que poder preguntarle directamente a un ChatBot que nos diga cómo hacer una devolución y que este nos remita a esa página oculta dentro de los menús de nuestra web? Ya podría la administración pública Española seguir estas directrices, porque la verdad es que en más de una página es más sencillo intentar buscarlo directamente en Google que moverse por los menús y enlaces sobrecargados hasta el extremo y sin ninguna coherencia entre los mismos. Vale, vale, ya dejo el modo crítica aparcado, jejeje.
Ahorrarnos tiempo, la función principal del ChatBot
Como hemos comentado un ChatBot ofrece una respuesta a nuestras preguntas de una manera más natural que otro tipo de estructuras de la información, aunque a veces, puede ser que no interprete correctamente lo que estamos buscando. Es ahí donde entra en juego que la programación haya tenido en cuenta multitud de posibilidades de preguntar lo mismo. Pero claro, como os podéis imaginar, el lenguaje permite muchas formas de decir lo mismo, y hasta la aparición de las IA’s con su descomunal nivel de computación y de realizar relaciones, era una cosa difícil de implementar para que contemplase todas las distintas posibilidades que ofrecen los lenguajes humanos, aunque unos mas que otros, eso hay que decirlo.
Sin embargo, no es obligatorio para un ChatBot de ayuda llegar a los extremos de ChatGPT u otras IA’s que acabarán dominando el mundo. Pero si para ayudarnos a encontrar un contenido de una manera mas humana y brindarnos una ayuda rápida a lo que buscamos.
Y después de toda esta disertación, aunque te parezca mentira, todo esto no es nuevo y lleva más de lo crees entre nosotros de ahí este artículo. Remontémonos al origen de los bots conversacionales y su historia. Pero antes veamos como detectar un Replicante en el mundo de los Chatbots.
El Test de Turing
El Test de Turing es como la prueba de fuego para las máquinas que quieren parecer inteligentes como nosotros, los humanos. Imagina a un juez que chatea con dos entidades sin saber cuál es cuál: una máquina y un ser humano. Si la máquina puede hacer creer al juez que es una persona real, entonces, ¡bingo! pasa la prueba. Sin embargo, esto no quiere decir que sea inteligente. Solamente es capaz de engañar o hacerse pasar por un humano con mayor o menor fidelidad. Desde su idea original en 1950 por Alan Turing, este test ha sido una especie de medidor de la inteligencia artificial, aunque algunos todavía debaten sobre su validez como medida real de la inteligencia sin duda ha sido una referencia a la hora de medir por ejemplo los actuales ChatBot basados en IA’s.
Lenguajes enfocados al tratamiento de texto
Uno de los problemas claves a los que se han enfrentado este tipo de programas, es a lo difícil que es interpretar los idiomas humanos a nivel de codificación. Por ello, se han utilizado lenguajes de programación más específicos para este tipo de tareas, alejándose del paradigma tradicional de la programación tradicional más enfocado normalmente a cálculos numéricos.
De hecho, actualmente existe hasta un campo de la inteligencia artificial dedicado exclusivamente para esto, que se denomina PLN y que tiene como objetivo el Procesamiento del Lenguaje Natural.
¿Pero que es exactamente el PLN? El Procesamiento del Lenguaje Natural (PLN) es un campo de la inteligencia artificial y la lingüística computacional que se centra en la interacción entre las computadoras y el lenguaje humano natural. El objetivo principal del PLN es permitir que las computadoras comprendan, interpreten y generen lenguaje humano de manera efectiva. Esto implica tareas como el análisis sintáctico, el reconocimiento de entidades, la traducción automática y la generación de lenguaje natural, entre otros.
Como podréis entender rápidamente el PLN tiene aplicaciones en una amplia variedad de campos, incluidos los motores de búsqueda, la asistencia virtual, la traducción automática, el análisis de sentimientos, entre otros.
Sin embargo, aunque el PLN puede parecer muy nuevo, ya desde los años 50 se buscó la manera de diseñar un lenguaje más enfocado al tratamiento e interpretación de textos y este nos es otro que el lenguaje Lisp (List Processing).
LISP el lenguaje de programación de los años 50 para que las máquinas hablen como humanos
Lisp es uno de los lenguajes de programación más antiguos que aún se utilizan a día de hoy. Surgió a finales de la década de 1950 y se ha utilizado ampliamente en inteligencia artificial y procesamiento del lenguaje natural. Lisp es conocido por su sintaxis basada en listas y su capacidad para manipular código como datos.
Es por ello que ha sido utilizado en el área del PLN, debido a su enfoque en manejo de estructuras de datos complejas como es el lenguaje natural. La variante mas utilizada hoy en día es el Common Lisp.
Os dejo un código de ejemplo para que podáis ver como se estructura y el tratamiento de listas.
(defexamples 1 "Introduction to Lisp"
"This chapter is for people with little or no experince in Lisp."
"Intermediate or advanced readers can skim or skip this chapter."
""
"Lisp expressions are in prefix notation: the operator first."
((+ 2 2) => 4 @ 4)
((+ 1 2 3 4 5 6 7 8 9 10) => 55 @ 5)
"This is Lisp for (900 + 900 + 90 + 9) - (5000 + 500 + 50 + 5)"
((- (+ 9000 900 90 9) (+ 5000 500 50 5)) => 4444)
(:section "1.1 Symbolic Computation")
"This is an example of computation on lists:"
((append '(Pat Kim) '(Robin Sandy)) => (PAT KIM ROBIN SANDY) @ 6)
"The quote mark instructs Lisp to treat the list as data."
('(pat Kim) => (PAT KIM))
"Let's look at some more list processing functions"
(:section "1.4 Lists")
((setf p '(John Q Public)) @ 10)
((first p))
((rest p))
((second p))
((third p))
((fourth p))
((length p))
"It is also possible to build up new lists"
Sin embargo aunque Lisp es muy bueno con estructuras sintácticas necesitamos otro lenguaje del año de la polca para gestionar todas esas reglas gramaticales, a veces sin sentido, que hacen que los idiomas sean lo que son.
PROLOG el lenguaje de definición de reglas para la sintaxis
Este no es otro que Prolog (Programming in Logic) lenguaje de programación lógica que se desarrolló en la década de 1970 cuya especialidad es la definición de reglas lógicas y búsquedas en árboles de análisis sintáctico. Es un lenguaje de programación muy potente a la hora de la construcción de ontologías para la representación del conocimiento.
Yo la primera vez que vi Prolog me estalló la cabeza con la forma de definir las reglas y los hechos y que todo eso funcionara. Me sigue pareciendo una pasada a día de hoy por ser un concepto de programación tan distinto al tradicional al que estamos acostumbrados.
Para que veáis lo distinto que es a un lenguaje de programación clásico os dejo aquí un código
Example 1 : Below food table shows the facts, rules, goals and their english meanings.
Facts
English meanings
food(burger). // burger is a food
food(sandwich). // sandwich is a food
food(pizza). // pizza is a food
lunch(sandwich). // sandwich is a lunch
dinner(pizza). // pizza is a dinner
Rules
meal(X) :- food(X).
// Every food is a meal OR
Anything is a meal if it is a food
Queries / Goals
?- food(pizza).
// Is pizza a food?
?- meal(X), lunch(X).
// Which food is meal and lunch?
?- dinner(sandwich).
// Is sandwich a dinner?
Ambos lenguajes de programación, Lisp y Prolog han sido de vital importancia en el desarrollo de los sistemas de PLN y han sido utilizados en la implementación de una amplia gama de aplicaciones en este campo. Su enfoque en la manipulación de sintaxis, datos y reglas lógicas los hace especialmente adecuados para problemas que implican comprensión y generación de lenguaje natural. Para que veáis que normalmente las cosas mas modernas basan sus cimientos en dinosaurios de la programación.
Aventuras conversacionales, el origen de los ChatBot en los videojuegos
Pues sí, como en otros muchos casos, los videojuegos fueron pioneros a la hora de utilizar reglas sintácticas para un tipo de juegos muy particulares que eran las aventuras conversaciones. En una época en donde la potencia de los ordenadores no permitían grandes alardes gráficos y en los que los juegos de tipo ROL estaban de moda, apareció toda una disciplina dentro del mundo del videojuego que no es otra que las aventuras conversacionales.
En una aventura conversacional interactuamos con el juego escribiendo una serie de palabras o verbos que el programa interpreta y actúa en consecuencia. ¿A que os recuerda a algo parecido a un Chatbot, verdad?
De todas formas, aquí el objetivo es guiar al jugador por la aventura, permitiendo moverse, interactuar con objetos, luchar, etc… Sin embargo, como ya hemos comentado, una de las mayores dificultades era la riqueza lingüística de los humanos y la imposibilidad de prever cualquier construcción que se le ocurriera al jugador. Es por ello, que una de las complejidades a veces era dar con la construcción (La frase exacta) que había pensado el programador para realizar una acción en particular, cuando cualquier humano hubiera sido capaz de interpretar que aunque expresado de distinta manera la acción era la misma.
Pues para ello los programadores empezaron a utilizar lo que se denominaba en el argot como parser para poder establecer el verbo o acción, el objeto sobre el que se aplicaba y con el tiempo construcciones un poco mas avanzadas. Y sobre todo poder establecer una estructura interna del videojuego que facilitara su diseño al basarse en una reglas preestablecidas. Pero vamos a ver mas en profundidad que es eso de un parser.
PARSER, como entender lo que dice un humano
Una definición mas académica definiría un parser como un componente de software que se utiliza para analizar y procesar la estructura sintáctica de un texto según una gramática específica. Su función principal es descomponer una cadena de símbolos (como palabras o caracteres) según reglas gramaticales predefinidas para comprender su estructura y significado. Es decir, que podemos escribir en lenguaje natural y el parser hará un análisis sintáctico para identificar lo que estamos intentado decirle al ordenador.
Como podéis entender esto ha sido también la base de programación del software de los actuales ChatBot.
Clasificación de Parsers
Los parsers pueden clasificarse en diferentes tipos según el tipo de gramática que utilizan y el enfoque de análisis sintáctico que aplican. Algunos de los tipos más comunes de parsers incluyen:
- Parsers basados en reglas: Utilizan reglas gramaticales predefinidas para analizar la estructura sintáctica del texto. Estas reglas pueden ser manuales o generadas automáticamente a partir de corpus lingüísticos. Son el tipo de programación que se utilizaba para la realización de juegos y programas conversacionales iniciales.
- Parsers estadísticos: Utilizan modelos estadísticos y técnicas de aprendizaje automático para analizar la estructura sintáctica del texto. Estos parsers se entrenan en grandes cantidades de datos lingüísticos para aprender patrones y regularidades en el lenguaje. Como sospecharéis esto es ya moderno y se usa para entrenar a las IA’s e incluso en algunos programas conversacionales antiguos.
- Parsers neuronales: Utilizan redes neuronales artificiales para realizar el análisis sintáctico del texto. Estos parsers son capaces de capturar representaciones distribuidas de las estructuras sintácticas y pueden ser entrenados end-to-end para realizar tareas de parsing sin necesidad de reglas gramaticales explícitas. Esto es ya el sumun, y también es en lo que se está trabajando ahora mismo para las Inteligencias Artificiales.
Origen y Futuro de los Parsers en los Videojuegos
Los últimos dos casos, seguro que en un futuro no muy cercano serán utilizados por los videojuegos para hacer que la interacción con los NPC’s sea más natural y más rica que en la actualidad. Será posible la creación de diálogos y narrativas que se ajusten al estilo y tono del juego, así como tramas más elaboradas y ramificadas que se adapten a las decisiones y acciones del jugador. Seguro que dentro de poco veremos el primer juego que use extensamente todas estas opciones brindadas por alguna IA.
De todas formas, como hemos visto, todo esto empezó hace mucho tiempo, tanto como con la aparición de Adventure, conocida después como Colossal Cave creada por Will Crowther en el año 1975 para un PDP-10 en lenguaje FORTRAN.
Luego todo estalló y no dejaron de aparecer más y más aventuras entre el periodo de los 70 y 80. Pero eso requerirá un análisis mas profundo en otro artículo. Centrémonos de nuevo en los ChatBot.
ChatBot en ZX Spectrum
Uno de los Bot más conocidos para el ZX Spectrum es “Eliza”. Que es una implementación del famoso programa de chat terapéutico desarrollado por Joseph Weizenbaum en la década de 1960. Creado en un IBM 7094 bajo el Sistema Operativo CTSS y que se puede considerar el precursor de los programas conversacionales, como eran conocidos entonces. “Eliza” intenta simular una conversación con un terapeuta y puede ser interesante para experimentar con la historia de la inteligencia artificial y el procesamiento del lenguaje natural en computadoras más antiguas.
HERBIE el primer ChatBot Español para Spectrum, MS-DOS y Windows
Pues si, HERBIE fue el primer ChatBot creado en España y el cual pude disfrutar en MS-DOS aunque su versión inicial fue para Zx Spectrum. Nacido en el año 1985 para Spectrum, apareció de nuevo en MS-DOS en el 1987 y su última versión para Windows en el 1996. Creado por el Asturiano Rafael Gomez Gonzalez desde luego fue toda una revolución en aquellos años para los que lo pudimos disfrutar y os aseguro que en su momento impresionaba como el Bot era capaz de tener una conversación razonablemente fluida contigo.
Si queréis saber mas aquí tenéis un artículo con una pequeña entrevista al autor.
https://www.javiergutierrezchamorro.com/herbie-de-rafael-garcia-gonzalez
Y os dejo aquí un vídeo para que podáis ver como funcionaba.
Y si queréis probar en vuestras carnes como era este ChatBot os dejo enlaces a descargas de todas sus versiones.
Versión de HERBIE Zx Spectrum:
Versión de HERBIE MS-DOS:
Versión de HERBIE Windows:
Así que ya podéis ver que esto de ChatGPT, Alexa y Siri, no es tan nuevo como puede parecer. Si bien es verdad que las capacidades actuales superan en mucho estas primeras aproximaciones sobre todo en lo que se refiere a potencia de cálculo y complejidad.
Bueno pues hasta aquí el artículo. Espero que os haya gustado conocer un poco de historia de este tipo de programas y los orígenes de todo lo que tenemos hoy en día.
4 comentarios