Fundamentos Conversacionales en un Humano Virtual
Adaptado de: Red21.com

Para comenzar definamos lo que es un humano virtual. Un humano virtual es un programa de conversacion también llamado chatterbot que simula las respuestas como si se tratara de una persona.
Los primeros chatterbots aparecieron junto con las salas de chat del viejo sistema Mirc , en estas salas siempre habían unos usuarios que estaban todo el día conectados o buena cantidad de horas , no eran usuario, eran pequeños programas llamados bots encargados de sacar de la sala a los usuarios que insultaban o decían cosas inapropiadas. Estos programas detectaban frases inapropiadas o frases que estaban precargadas en la base de conocimiento del bot. Es así que si un usuario repetía un carácter indefinidamente era echado , lo mismo ocurría si el usuario insultaba o usaba términos incorrectos. De ese tiempo hasta hoy se ha avanzado mucho.
Lo principal de cualquier bot y particularmente de un humano virtual
es la base de conocimientos que posea. Utilizando su base de
conocimientos un bot podrá responder mas preguntas.
Crear una base de
conocimientos puede llevar mucho tiempo, de hecho tanto como el que
lleva capacitar a un ser humano. ¿Cuánto tiempo lleva para que una
persona se desarrolle y sea capaz de contestar sobre los mas variados
tópicos? 15 - 20 años.
Aprovechando la Ley del Aceleramiento de los resultados donde el trabajo en colaboración permite aumentar los tiempos de desarrollo exponencialmente, crear la base de conocimientos puede llevar mucho menos tiempo, por la sencilla razón de que ya hay base de conocimientos disponibles para que un bot pueda llevar una charla común sin mayores sobresaltos. Desdichadamente la mayoría de las bases de conocimiento más completas están en ingles. Por que hay solo base de conocimiento en ingles , por la sencilla razón de que el ingles es un idioma mucho más sencillo que el espanol.
Veamos un simple ejemplo:
La conjugación en presente del verbo ir :
En espanol :
Yo voy
Tu vas
El va
Nosotros vamos
Vosotros vais
Ellos van
En ingles
I go
You go
He goes
She goes
We go
They go
En espanol, el verbo cambia para cada persona (hay seis cambios)
mientras que ingles hay solo dos cambios. Es un sencillo ejemplo, la
complejidad es aún mayor por el uso de tildes y estructuras gramaticales
más complejas que en las del ingles.
Es así que todo desarrollo de crear un bot en castellano choca de entrada con un sin fin de problemas que parecen decir que no se puede crear un bot que hable español .
Para crear una base de conocimientos en castellano hay que tomarse bastante mas trabajo partiendo del análisis de cómo nos comunicamos habitualmente.
Hay trucos para no caer en algo que el bot no sepa, una táctica básica es que el bot lleve el control de la conversación , para esto si este responde con preguntas podrá “saber” un tipo de respuesta determinado. Por ejemplo:
Usuario : Hola
bot : Hola, ¿Cómo te llamas?
Usuario : Pedro
bot: Pedro, ¿Eres usuario de mi servicio?
Usuario : Si
bot : ¿ En cual servicio estas suscrito?
Usuario : En recibir información económica semanalmente.
bot: ¿Qué consulta deseas hacer al respecto?
Usuario : No recibí información de la ultima semana.
bot : Ok, te la enviare enseguida.
En este ejemplo vemos como el bot lleva el control de la charla desde el inicio acotando el número de respuestas que el usuario puede dar.
El bot espera patrones de escritura que no necesariamente tiene que coincidir con lo que se diga exactamente el usuario sino que coincida con el sentido exacto de la frase.
Veamos en seudo código como se vería el dialogo anterior:
Usuario : Hola
bot : Hola, ¿Cómo te llamas?
Usuario : Pedro
bot: Pedro, ¿Eres usuario de nuestros servicios?
Usuario : Si
bot : ¿ En cual servicio estas suscrito?
Usuario : * información económica semanalmente *
bot: ¿Qué consulta deseas hacer al respecto?
Usuario : No * información * semana.
bot : Ok te la enviare enseguida.
Los asteriscos o comodín, tienen la función de permitir que la frase
dicha por el usuario fuera otra sin alterar el significado principal de
la frase.
El patrón : * información económica semanalmente *
incluye frases dichas por el usuario que pueden ser :
Estoy suscrito a información económica semanalmente.
Recibo información económica semanalmente en mi casa.
Me inscribí en información económica semanalmente la semana pasada
.
Al bot le interesa saber a que servicio esta suscripto entonces como comienza o termina la frase puede ser secundario.
Lo mismo sucede con el patrón: No * información * semana.
Este puede incluir:
No recibí información la ultima semana.
No me enviaron información de la semana.
No estoy recibiendo información hace una semana.
Como vamos aquí, lo que interesa saber es si recibe o no la información semanal.
Claro, hay que especificar la mayor cantidad de patrones de entrada
posibles para que el bot pueda responder el mayor número de entradas
que haga el usuario .
Además hay que crear toda una estructura
ramificada que permita responder la mayor cantidad de preguntas.
La utilizacion del lenguaje es uno de los aspectos fundamentales de la
Inteligencia Artificial y de la Robótica.
Pero por algo tenemos que empezar y crear un chatbot es una manera relativamente fácil de crear un entidad virtual que responda y actue (los chatbots no solo hablan pueden ejecutar programas del sistema y via el puerto adecuado ejecutar aparatos externos al PC) como un ser humano..