¿Cuál es la mejor manera de hacer un chatbot generativo?

Hay muchas maneras de hacer esto. “Lo mejor” dependerá de cuán inteligente desee que sea el bot y de cuán técnicamente experto sea con las tecnologías necesarias para construirlo.

Quizás el robot más simple aprende de la entrada humana y responde con algo que ha escuchado anteriormente (es decir, sin salida generada por la máquina). He escrito un bot que hace esto, en aproximadamente 600 líneas de código. Puedes probar el bot aquí: Chatbot

El algoritmo básico es:

  1. Comience la conversación seleccionando una frase aleatoria de la base de datos, preferiblemente la frase que el bot ha pedido la menor cantidad de veces posible (para que podamos obtener más respuestas a esa frase), y pregúntele al humano. Llamémoslo frase “Q” para preguntas.
  2. Cuando el humano responde, almacene la respuesta (llamémosla frase “A” para respuesta) en la base de datos (está bien si esa frase ya existe). En otra tabla que rastrea conversaciones individuales, almacene el hecho de que la frase “Q” se puede responder con la frase “A”. (Eventualmente, el bot generará múltiples respuestas posibles para la frase “Q”).
  3. Aquí es donde sucede la magia: encuentre una frase en la base de datos que coincida más con la frase “A”. (“La mayoría de las coincidencias” se deja como un ejercicio para el lector, pero podría significar “suena como”, “coincide de acuerdo con la función MySQL MATCH ()”, etc.). Luego, consulte la base de datos para encontrar la respuesta más frecuente dada por los humanos a esa frase, que ahora se convierte en su nueva frase “Q”. Haga esa pregunta al humano y regrese al paso 2. ¡Repita hasta el infinito hasta que el humano se aburra!

He omitido algunos detalles adicionales, pero eso es aproximadamente el 95% del algoritmo.

No estoy seguro de que la respuesta de Kim sea acertada. Su bot todavía no es realmente generativo en el sentido del que estás hablando, porque solo se está extrayendo de un número finito de puntos de datos. Además, su bot no está realmente “conversando” en la forma en que lo pensamos. Usted hace una declaración, da una pregunta. Pero la pregunta no está realmente relacionada con la declaración. Y no está teniendo en cuenta cosas como la historia, el contexto, la memoria, etc., de modo que realmente se siente como si estuvieras convirtiendo con una persona.

Realmente no existe la tecnología para construir un bot que “aprenda” en la forma en que está pensando, es decir: aprende cómo generar nuevas oraciones que aún no existen en su base de datos. Al menos, si lo hay, no lo he visto. Hay muchos programadores maestros, especialistas en inteligencia artificial y especialistas en idiomas que intentan hacer precisamente eso. Porque la primera persona o compañía que descifre este misterio hará una fortuna.

El aprendizaje automático no significa realmente “generativo” en el sentido de: la cosa puede aprender cómo generar nuevas oraciones que no están previamente escritas en las bases de datos a las que está accediendo. ML tiene más que ver con la entrada del usuario. Dado un conjunto de entradas conocidas, ¿puede analizar una entrada nueva y desconocida y colocarla en la categoría correcta de respuesta apropiada para esa entrada? Ahora, hay tecnología para hacer esto. Pero no estoy seguro de cuál es la “mejor” tecnología. He jugado con api.ai, pero es caro. Pero tienen un motor de PNL bastante decente.

Eche un vistazo a JCB (“Jacob”) de Linker Systems. JCB ™ de Linker Systems – Menú

Es un chatbot generativo que maneja tareas programadas. Puede investigar el diseño y también solicitar una demostración.

Divulgación: Conozco al desarrollador.

Como continuación de otras respuestas, puede consultar openclassifier en github.