Herbie de Rafael García González

Hoy os traigo una interesante exclusiva. Si cuando hablaba de Ultra Compressor II o AIN, pretendía homenajear unas de las herramientas de compresión que me marcaron, incluyendo comentarios e indagaciones acerca de su historia y autoría; algo parecido a lo que hice con Blink, sólo que en este caso, de una manera mucho más sencilla, pues conocía el autor. Era yo.

Desde finales de los años 80, y hasta bien entrados los años 90, disfruté enormemente con el programa conversacional Herbie, lo que ahora se llaman bot conversacionales. Hacía tiempo que tenía pensado escribirle un articulo, e incluso había decompilado el ejecutable para DOS, intentando aportar algo de claridad al asunto. Sin embargo, lo fui dejando pasar, hasta que como hace a menudo, Bianamaran me picó con sus temáticas.

Esta vez, opté por probar a decompilar la versión para Windows de 16 bit, que estaba escrita en VB 3. Sabéis que hasta VB 5, el código generado no era nativo, sino p-code, así que tenía más posibilidades de éxito. De hecho lo conseguí fácilmente usando DoDi’s VB Discompiler. Ciertamente se perdían los nombres de variables, funciones, y comentarios, pero el resultado fue bueno, manteniendo hasta los Debug.Print. Con una sobredosis de motivación, me puse a buscar sobre los orígenes del Programa conversacional Herbie. Desgraciadamente, es harto difícil inclusive poderlo descargar. Pero debí tener suerte, y algunas pistas me llevaron a quien podría ser su autor: Rafael García González, y que seguía ubicado en Avilés (Asturias), como cuando desarrolló Herbie.

El presente artículo por tanto, mezcla las declaraciones del propio Rafael (Falo), al que públicamente le agradezco su tiempo, y naturalmente agradezco también el que hubiera creado a Herbie. Pero por otro lado, añade mis sensaciones y recuerdos de la época.



La primera versión de Herbie, fue la 1.0, lanzada en 1985 para el Sinclair ZX Spectrum, y publicada por el propio autor que contaba con 18 años. La firmaba como Rafael García. En aquellos tiempos colaboraba con un algunas de revistas en casette (Enter Spectrum, Video Spectrum y Video Amstrad), bajo el sello Software Editores entre otros. La idea le surgió tras la lectura sobre uno de los pocos libros que en la época hablaban de inteligencia artificial, probablemente de la editorial Anaya.

Estaba escrito en BASIC, y posteriormente compilado. Aparecieron tantos compiladores para Spectrum en aquella época, que ni el propio Rafael recuerda cual de todos ellos utilizó en esa versión.

Aunque en aquellos años, yo también era usuario de Spectrum, nunca llegué a probar esa versión de Herbie. Probándola ahora, se le ven algunas de las virtudes que luego tendrían las versiones siguientes.

Puedes descargar esta versión aquí (16 Kb. en formato ZIP).



En 1986, pasaría al mundo del PC, empezando la reescritura de Herbie con Microsoft BASIC Compiler 1.0 / QuickBASIC 1.0 (1985). El popular compilador de BASIC de Microsoft. Paulatinamente lo iría mejorando hasta terminar con Herbie 3.2 (1987). Todas estas versiones, venían firmadas como: THOR (Tecnología Hispana de Ordenadores), e indicaban la autoría de Rafael García González. Como curiosidad que iríamos viendo a lo largo del tiempo, se indicaba el teléfono (985) 56-04-37.

La razón de poner el teléfono de contacto, era poder lograr cierta notoriedad, y conseguir el desarrollo de nuevos proyectos, pues al fin y al cabo, Herbie no daba dinero. Sin embargo ello no impidió que la gente llamase a ese número, para resolver dudas acerca de Herbie.

Esta versión me llegó con los típicos intercambios de disquetes aproximadamente en 1989, lo cual no está nada mal para un viaje desde Asturias a Catalunya. En esa época, se hablaba de inteligencia artificial y redes neuronales, pero desde un punto tan filosófico, que sólo quedaba clara la idea. Lo más concreto que recuerdo era el Juego de la Vida, publicado por primera vez en 1970. Tendrían que pasar unos cuantos años más, hasta que oyera hablar de Eliza. Reconozco que pasé muchas horas hablando con él, ahora diríamos interactuando, porque si algo lo caracterizaba, era su cercanía. A diferencia de otros intentos que vi posteriormente, tenía algunos grados de aleatoriedad y pequeños detalles que hacía que fuera algo más imprevisible, y por tanto pareciera más real.

Precisamente Herbie, me inspiró para comenzar el desarrollo de mi propia versión. Usaba un interfaz de ventanas en modo texto, y estaba escrita en Turbo BASIC. Pretendía mejorar los puntos débiles que experimentalmente había descubierto en Herbie. Principalmente mejorar las conjugaciones verbales, y el manejo de sinónimos. Caía en un error que veremos más adelante, y era usar dos ventanas, una para el histórico de conversación del usuario (paciente), y otro de la máquina (terapeuta). La idea es que fuera una especie de psicólogo, una idea, que luego sería explotada por Dr. Abuse. Se convirtió en uno de tantos proyectos donde la complejidad estimada va aumentando a medida que programamos, y nunca estuvo acabado. De modo que sin una alternativa mejor, seguí usando Herbie hasta bien entrada la década de 1990. En honor a Herbie, hay que admitir, que aunque parezca que su programación requiere solamente la búsqueda de subcadenas y poco más, en realidad para ser eficaz, debe disponer de ciertas capacidades de análisis sintáctico, incluyendo verbos, y pronombres.

Los puntos fuertes de Herbie, eran muchos. En primer lugar era multiusuario, es decir, mantenía las conversaciones en archivos diferentes. Pero lo más sorprendente es que era capaz de aprender, ya que las conversaciones del usuario, una vez procesadas, pasaban a formar parte de la base de datos de Herbie. Entonces bastaba la típica secuencia: «Un coche es un vehículo de cuatro ruedas», para que luego al preguntar «Que es un coche?», el programa nos respondiera que «Un coche es un vehículo de cuatro ruedas».



Con casi 30 años de antigüedad, este aprendizaje es algo, que ni siquiera vemos en software más reciente como Alizia o Eliza de DeixiLabs, o que tampoco era tan sofisticado en el que iba a ser el sucesor de Herbie, Dr. Abuse (1992-2001) de Juan José Boronat Cortés y Vicente Barres Fabado.





Tienes disponible para descargar esta versión aquí (63 Kb. en formato ZIP).

Tendrían que transcurrir 9 años, hasta llegar a Herbie 4.0 (1996), una reescritura completa para Windows de 16 bits (3.x) en Visual BASIC 3 (1993). En realidad, tras dar por concluida la versión para DOS, no estaba planteado nada más. Pero de la noche a la mañana, le apeteció lanzarla, y se puso a ello. Ofrecía un moderno sistema con dos cuadros de texto (uno para Herbie y otro para el humano). Un enfoque que parece muy lógico en un entorno gráfico como Windows, pero que causaba que se perdiera el histórico de la conversación que sí nos ofrecía una interfaz estilo terminal, o con sólo un cuadro de texto.

Ofrecía una ventana principal de menos de 400 píxels de ancho, pensada para no molestar en aquellas pantallas de 14 pulgadas y resolución VGA (640×480) de la época. No era redimensionable, algo que en Visual BASIC resultaría tedioso de implementar hasta bastantes años después. Contaba con un rudimentario botón de información, que directamente abría el archivo LEEME.TXT usando Notepad. Dicho archivo de texto, incluía además los datos postales del autor:

Rafael García González
C/López Ocaña, 1 – 2ºB
33400 Avilés, ASTURIAS
ESPAÑA
Tfno. (98) 556 22 85

A diferencia de las versiones DOS, ésta versión para Windows, se indicaba como versión de prueba en el título de la ventana. Y como a muchos otros nos ocurrió, no quedaba claro lo que ello implicaba. Había que visualizar el archivo LEEME, para saber que «Si quieres ser usuario registrado, envíame 2000 pts. junto con tu nombre y dirección.», pero sin aclarar los beneficios que ello representaba, o quién debería registrarse. Al final, casi nadie contribuyó económicamente, siendo un proyecto más de esos que se hacen por puro amor al arte.

Era la moda de los entornos gráficos, pero visto en retrospectiva, una versión 4, para DOS, usando VBDOS (Visual BASIC for DOS), hubiera sido una actualización más prudente y funcional.

Te dejo esta versión aquí (247 Kb. en formato ZIP), y con el permiso del propio Rafael, también el código fuente descompilado que comentaba al principio, pues los fuentes originales, como es habitual, seguramente existen, pero hay que buscarlos, y en caso de encontrarlos, sanearlos. Aquí (15 Kb. en formato ZIP).



Para terminar con Herbie, sólo comentaros que daba por sentado que su nombre venía del VW del mismo nombre, que con su inteligencia, había protagonizado tantas películas de Disney entre 1968 y 1980. De algún modo, ambos son muy parecidos. Ha tenido que ser el propio Rafael el que me indicara mi error. La inspiración vino del robot RB-34 en el cuento ¡Embustero! incluido en Yo, robot de Isaac Asimov. Un robot, con la capacidad de leer el pensamiento humano.

En cuanto a Rafael García, sigue haciendo su vida en Avilés, dedicándose al desarrollo de software de gestión, y la programación a medida desde Logical ETR, antes Soportes Lógicos, Programas Integradores De Aplicaciones (Progiciels).

Sigue fiel al BASIC de Microsoft, con Ergofa (Facturación y gestión comercial) y Enol (Contabilidad), programados en Visual BASIC, esta vez la versión 6.

22 comentarios en “Herbie de Rafael García González”

  1. Me acuerdo del Dr Abuse, lo puse en un ordenador del curro para enseñárselo a los redactores (curro en un diario) y flipaban a la par que se divertían un rato… a los diez minutos lo borre porque corríamos el riesgo de no salir por la mañana…

  2. En el caso de Herbie para PC, hablamos de un programa de hace 30 años. Doctor Abuse tiene 25 años. Recuerdo usar Herbie en mi Amstrad PC-2086, con 640 Kb. de memoria, y un procesador de 16 bits 8086 a 8 Mhz. El hardware actual, es del orden 1000 veces más potente, que con los recursos actuales, seguro que podría desarrollarse algo mucho más elaborado. ¿Te animas?

  3. Pues no tengo mucha experiencia en ese ramo (mejor dicho ninguna), mis desarrollos siempre han sido paginas web o sistemas para administrar informacion de una empresa.

  4. mmmm, quizá luego le de un vistazo a su codigo fuente, me parece que si le dices «no se» solo insiste en «¿porqué no?», si le dices algo trivial te dice «entiendo, continúa…», ¿entiende que si no dije nada coherente?, creo que aun le falta mucho trabajo.

  5. Buenisimo el articulo,
    siempre quise saber el origen del nombre, yo también pensé que se debía al coche… y eso que había leído Yo Robot.

    Herbie me lo paso un chaval el disquete y yo lo instale en los IBM PCs que tenia el cole. La verdad es que para mi era como magia, tenia personalidad real tal como veiamos en los robots de las pelis de ciencia ficción.
    Una vez instalado fue un entretenimiento continuo para mis colegas y yo… aunque el tema mas concurrido como es de suponer fue el sexo.
    Creo que corria el año 86 -87

  6. Hola me ha sorprendido gratamente vuestros comentarios.
    Mis recuerdos con Herbie fueron muy divertidos,dado que introducia datos en su «memoria»de ms2 como el nombre de su novia,de hermanos y gustos de la persona a la que poaterior mente le pasaba el diskete jjj.YTeniais que ver la cara que se le quedaba al individuo en cuestion .

  7. Buenas noches Javier.

    Me gustaría ponerme en contacto contigo referente a este proyecto, pues estoy empezando un proyecto que empecé por el año 1990, cuando por primera vez utilicé un ordenador, fue el «VIC-20», un teclado con cable coaxial para conectarlo a una pantalla en blanco y negro, y que al iniciar, el único sistema que había era …., no había! jaja, era puro basic 1.0, y ahí fue cuando comencé mi primer programa de habla, llamado «Charli» en honor a la pelicula «Charlie» el ordenador de la NASA que casi destruyó el mundo y que, su dueño, por medio del ajedrez, le hizo ver que era una perdida de tiempo jugar y dejó los códigos de misiles nucleares en paz XDD…

    Pues a lo que iba, con este ordenador comencé el proyecto de habla (la putada es que cada vez que lo apagaba se borraba todo, no tenia cartuchos de datos…), y meses más tarde, mi tío me regaló mi segundo ordenador, un IBM a 4 Hercios (turbo a 10 Hz) de velocidad con 31.5 Megabytes de memoria en disco duro, y sin memoria ram (no podía instalar ni Windows 3.11 porque me faltaba memoria jaja), únicamente 640Kb de caché, y con él, tuve mi versión de GWbasic 3.22 en MS-DOS que es, cuando comencé finalmente con el programa.

    Pude programarlo con más de 5600 frases, y según le escribías unas u otras, iba cambiado su estado de enfado, si le insultabas se cabreaba y te respondía de una manera distinta pero nunca se me ocurrió el tema del aprendizaje que hacía este programa, su gramática, verbos y demás añadidos al vocabulario diferenciando que era cada cosa y añadiendo el significado después del verbo «quiero…un coche» que seguramente le preguntarías -¿qué quiero?- y te respondería «quieres… un coche» cambiando el quiero por un quieres, era fascinante, y ahora…, es donde va lo interesante…., estoy creando un programa que reconozca a la persona por WEBCAM, pueda conversar hablando directamente, ejecutar comandos del ordenador como ya hay programas que lo hacen como «Minimiza ventana…» y quiero añadirle todos los verbos existentes, así como toda la gramática, pero no se muy bien como implantar ese orden que utilizaba el creador de Herbie, necesito un pequeña ayuda para entenderlo del todo, porque una vez el programa entienda y concatene cadenas gramaticales según su vocabulario y que a su mismo modo, añada más vocabulario cuando escribamos algo que no entienda, quiero seguir con la domótica, y que pueda instalarle un exoesqueleto o algún robot pequeño como ya han hecho, que pueda extraer información de internet, que mediante el reconocimiento facial, también reconozca objetos y sepa que es cada objeto…, y un ilimitado etc, que tengo en mente, pues nunca se me acaban las ideas respecto a ese tema que fue mi inicio en todo este mundo.

    Escríbeme y hablamos para ver que podemos conseguir porque estoy ya con el proyecto.

    Muchas gracias por leer toda la biblia que te he escrito jaja.

    Al que quiera escribirme, puede dejarme un correo en «[email protected]».

    Un saludo.

  8. Sin lugar a dudas es un proyecto ambicioso Ernesto. Por fortuna los tiempos han cambiado, hay multitud de documentación sobre análisis sintácticos, tienes el código fuente del clásico Eliza en diferentes lenguajes de programación, y obviamente el decompilado de Herbie que hay en el artículo.

    Échale un vistazo a todo, y cualquier cosa nos cuentas. Estaremos atentos a tus progresos.

  9. Buenas de nuevo Javier.

    Gracias por la pronta respuesta, si alguien puede indicarme de algún analizador semántico que me sirva de ejemplo, estaría dispuesto a trabajar en el y ampliarlo a añadir diccionarios completos a su gramática, porque estoy buscando como un loco por internet y no encuentro nada que me sirva…

    Gracias nuevamente.

    Atentamente, Ernesto.

  10. Hay multitud de información y ejemplos al respecto Ernesto. Obviamente, procesar lenguaje natural no es algo trivial, y todos tienen sus limitaciones, digamos que pretenden ser eficaces solamente con uno o varios aspectos, no con todos, que sería casi imposible.

    Yo comenzaría con una visión general como la de la Wikipedia que imagino que ya habrás consultado. Donde se hablar de sus fundamentos, incluyendo la aplicación a lenguajes naturales como el español..

    Luego puedes seguir con mayor nivel de detalle con Desarrollo de un parser funcional para el lenguaje castellano de Pablo Ariel Dubou.

    Si lo que buscas son cosas ya hechas también hay muchas: BotKit, BotLibre, …

    Pero ya te digo que es una disciplina muy amplia, con multitud de ejemplos en multitud de lenguajes de programación.

  11. Hola de nuevo Javier.

    Con el documento que me has pasado de «Pablo Ariel Dubou» me es suficiente, estoy aprendiendo Phyton porque tiene bibliotecas muy extensas para estas cosas y está orientado para la IA, además de las muchas cosas que se pueden crear con esta programación.

    Me pongo a ello, mi intención es crear una IA inteligente con personalidad propia, no habrán dos IA iguales, todo dependerá de como le enseñemos, como si fuesen personas individuales, ya veremos como va el proyecto, me veo con 60 años y aun realizandolo jajaja

  12. Python es una excelente opción para lo que te propones. Aunque ya digo que es un proyecto muy ambicioso, aprenderás mucho durante el camino Ernesto, y eso es lo que más valor tiene.

    Me recuerda mucho cuando hace años empecé a hacer un lenguaje de programación interpretado. De hecho, ambas disciplinas son muy parecidas. Los parser del lenguaje, ya sea de programación o natural.

    Me alegra que te sirvieran los enlaces. No dudes en compartir con nosotros tus progresos.

  13. Lo que dice Ernesto me recuerda a la película Chappie, donde el robot era según le enseñaban los que interaccionaban con él, y los siguientes podían modificar o no sus creencias.
    Pero cuidado no se te vaya de las manos, como cuando pusieron a interaccionar a 2 IA y tuvieron que apagarlas cuando se pusoeron a hablar en un idioma inventado.

Deja un comentario