¿Cuál es la mejor técnica para crear un chatbot que utiliza el aprendizaje automático?

Existen diferentes tipos de chatbots. verifique esto para obtener información: Los diferentes tipos de chatbots (y lo que estamos construyendo a la deriva)

Si desea crear un chatbot basado en recuperación de dominio cercano (sistema basado en reglas), entonces sí, es fácil.

Si desea crear un dominio cercano y basado en la generación, esto no es liebre, pero tampoco es fácil.

Lo más difícil es crear un chatbot de dominio abierto, y este no es un problema nuevo, es demasiado viejo, veamos:

El problema: la prueba de Turing (juego de imitación): es una prueba, desarrollada por Alan Turing en 1950, de la capacidad de una máquina para exhibir un comportamiento inteligente equivalente o indistinguible del de un humano. Turing propuso que un evaluador humano juzgaría las conversaciones en lenguaje natural entre un humano y una máquina diseñada para generar respuestas similares a las humanas. El evaluador sería consciente de que uno de los dos socios en la conversación es una máquina, y todos los participantes estarían separados unos de otros. La conversación se limitaría a un canal de solo texto, como el teclado y la pantalla de una computadora, de modo que el resultado no dependa de la capacidad de la máquina para expresar palabras como discurso. Si el evaluador no puede distinguir la máquina del humano de manera confiable (Turing originalmente sugirió que la máquina convencería a un humano el 30% del tiempo después de cinco minutos de conversación), se dice que la máquina pasó la prueba. La prueba no verifica la capacidad de dar respuestas correctas a las preguntas, solo qué tan cerca se parecen las respuestas que daría un humano.

En esta prueba, se dice que la computadora trata de pretender ser un humano, un hombre o una mujer.

Este problema se abordó muchas veces desde aquellos días, pero hasta ahora, no se ha resuelto de una buena manera.

Hoy en día, el problema de tener una máquina hablando contigo se llama “Chatbot” o “Chaterbot”, y hay diferentes categorías basadas en si será un dominio cercano (responde solo preguntas en un campo específico, como Siri y Watson) o un dominio abierto ( responda cualquier pregunta sobre algo como un ser humano, y puede aprender) y se basa en la recuperación (solo responda a través de algún tipo de conjunto de datos) o en una base generativa (genere la palabra de respuestas mediante el trabajo utilizando algunas operaciones mágicas que no se esperan).

Parece que el dominio abierto basado en la generación (la parte verde en la imagen de arriba) es el más difícil y es el juego de Turing (juego de imitación).

El documento del que hablaré, ofreció una solución no mala, fue implementado y obtuvo algunos buenos resultados:

El artículo fue publicado en julio de 2015 por Google:
https://arxiv.org/pdf/1506.05869…
Se llama A Neural Conversational Model , se basa en un modelo de aprendizaje automático llamado secuencia a modelo de secuencia (seq2seq):
https://arxiv.org/pdf/1409.3215.pdf también lanzado por Google en diciembre de 2014 y su primer uso fue en el problema de traducción automática (traducir de un idioma a otro según el contexto), y utiliza muchos otros miembros del personal creados en el mismo siglo como la técnica word2vec creada también por Google en septiembre de 2013: https://arxiv.org/pdf/1301.3781.pdf
y muchos otros conceptos en redes neuronales de finales de 1900, como las redes neuronales recurrentes (1980) y la memoria a corto plazo (LSTM) (1997).

Se supone que el documento casi resuelve el juego de imitación y crea un chatbot de dominio abierto, lo que la convierte en un superhéroe, resuelve un problema envejecido hace decenas de años, desde la primera IA.

Y este chico había implementado el chatbot de dominio abierto basado en la generación del periódico de Google:
Conchylicultor / DeepQA

Y este chico implementó el chatbot de dominio abierto basado en recuperación:
dennybritz / chatbot-recovery


La forma en que lo expliqué anteriormente lo ayuda a crear algún tipo de chatbot de dominio abierto desde cero, pero seguramente hay muchas API que le ofrecen una gran ayuda, por lo que puede pensar en esto como si crearan un modelo para usted, y usted entrena tu modelo, luego obtienes un modelo entrenado que puedes golpear mediante una consulta y te dará la respuesta con las clasificaciones con probabilidades, luego decides qué hacer.

También revise estas dos publicaciones aquí, están respondiendo su pregunta de alguna manera:
Aprendizaje profundo para Chatbots, Parte 1 – Introducción

Aprendizaje profundo para Chatbots, Parte 2: Implementación de un modelo basado en recuperación en Tensorflow


Consulte también esto para obtener más ayuda y detalles:

Quiero crear un chatbot basado en el aprendizaje automático de la A a la Z. Mi objetivo es construir un chatbot social y luego agregarle funciones, por ejemplo, puede recomendar un restaurante específico para comer. Por donde puedo empezar

¿Es fácil hacer un chatbot?

Respondí una pregunta similar aquí, pero veámosla desde el punto de vista de la mejor técnica, que es lo que preguntas :):

Las tareas en el aprendizaje automático generalmente se dividen en aprendizaje supervisado, aprendizaje no supervisado y aprendizaje de refuerzo. Entonces, aunque la mayoría de los enfoques comerciales se basan en el aprendizaje supervisado en este momento, eso no significa que sean la mejor técnica.

Los enfoques supervisados ​​se basan en datos etiquetados basados ​​en uno o varios anotadores y luego entrenan un algoritmo supervisado para aprender las diferentes clases. Los principales problemas de este enfoque para los chatbots son:

  • Necesita una gran cantidad de trabajo para etiquetar suficientes datos (generalmente meses)
  • Se basa en los criterios de una o muchas personas que pueden no ser objetivos
  • Para encontrar nuevas intenciones, debe repetir el proceso completo, por lo que si los datos son dinámicos y cambian con el tiempo, puede perder muchos matices y nuevas intenciones que puedan surgir.

Con un enfoque no supervisado (o auto supervisado) , necesitaría agrupar los datos que tiene para extraer las intenciones. Las técnicas actuales, como los enfoques de mapeo de agrupamiento / incrustación, agrupan o mapean los datos a un espacio vectorial o un simplex basado en diferentes técnicas. Por ejemplo, LDA, o técnicas de incrustación como word2vec o doc2vec. Los principales problemas son:

  • Tiene que trabajar con los clústeres / mapas generados para recuperar las intenciones relevantes y, por lo tanto, necesita mucho trabajo de revisión humana para alinear esas clases.
  • Hay variables críticas que debe definir para ajustar el algoritmo a cada caso, lo que hace que sea más lento en los recursos de Data Science, por ejemplo, en LDA y Doc2vec, debe predefinir el número de clases
  • Las clases no tienen una etiqueta específica, generalmente están representadas por las palabras más comunes
  • Aunque se ha hecho, es complejo construir enfoques incrementales que funcionen en tiempo real

Y esto es solo para la parte de extracción intencional. Entonces / o necesitaría construir el modelo que aprenda la respuesta, si es un chatbot conversacional y hay una respuesta, ya que puede ser el caso en el que solo necesita identificar lo que el usuario quiere hacer. (mira esto).

Los RNN / seq2seq deberían funcionar bastante bien si desea generar la respuesta a partir de los datos (sistema de control de calidad). El desafío es que generalmente necesita una gran cantidad de datos y es una especie de recuadro negro donde es difícil entender o cambiar lo que está sucediendo en el interior con respecto a la información almacenada, los parámetros relevantes en la pregunta o respuesta, etc.

Encontré que las diapositivas de estos cursos de Stanford son “fáciles” de seguir para crear un “chatbot de tensorflow” y también puede ver el tipo de desafíos que surgen al usar este enfoque. También hay varios artículos y publicaciones de blog sobre implementaciones.

A fin de cuentas, probablemente deberías hacerte algunas preguntas antes de decidir cuál es la mejor técnica para crear un chatbot que utilice el aprendizaje automático:

  • ¿Qué tipo de chatbot estoy construyendo?
  • ¿Qué tipo de datos tengo disponible?
  • ¿Cuántos datos tengo disponibles?
  • ¿Qué tan escasos son los datos? ¿Se concentra en una industria / tema o un dominio abierto?
  • ¿Son dinámicos los datos?
  • ¿Cómo puedo construir un proceso de aprendizaje si el bot necesita adaptarse a lo largo del tiempo?

Dependiendo de las respuestas, una técnica puede ser mejor que la otra.

Descargo de responsabilidad completo: soy el CEO de lang.ai- La primera IA no supervisada para la comprensión del idioma y nuestros clientes usan nuestra tecnología para chatbots, entre otras cosas. Extraemos intenciones y construimos chatbots usando un enfoque no supervisado con una API que se adapta a cada caso de uso del cliente.

Existe el enfoque clásico de “Recuperación de información” para construir un chatbot. Comienza con un conjunto de datos de preguntas y respuestas. Cuando un usuario ingresa una pregunta, se asigna a una de las preguntas en el conjunto de datos.

Pero, hemos llegado mucho más lejos que esto.

Hay chatbots más nuevos e inteligentes basados ​​en modelos de clasificación de aprendizaje automático, que permiten conversaciones más largas e informativas. En mi opinión, los mejores bots emplean el aprendizaje profundo para analizar el aporte humano y generar una respuesta. El análisis y la generación de la respuesta se aprenden a través del algoritmo de aprendizaje profundo que se emplea en la decodificación de entrada y la generación de una respuesta. NLP luego traduce la entrada y la salida a un formato de texto que tanto la máquina como el ser humano entienden.

Si está buscando construir su propio chatbot, consulte:

  • Wit.ai: una startup de Y Combinator recientemente adquirida por Facebook, que creó una API para construir interfaces activadas por voz.
  • API.AI – una compañía recientemente adquirida por Google, que creó una plataforma para que los desarrolladores creen chatbots

Podemos esperar ver mucho más chatbots. Están apareciendo en muchos campos para una multiplicidad de propósitos.

Por ejemplo, qplum acaba de desarrollar un chatbot de inversión basado en ML, que puede tener una conversación completa de ‘plan financiero’ con los usuarios.

Aquí hay un video que muestra cómo qplum desarrolló su chatbot de inversión.

Puedes comenzar un plan gratis aquí.

¡Disfrutar!

Mi equipo ha publicado recientemente una gran guía sobre cómo crear chatbots con machine learning.

Allí encontrará una visión general comparativa de los sistemas generales de diálogo de conversación basados ​​en redes neuronales profundas. Describimos los principales tipos de arquitectura y las formas de avanzarlos. Además, habrá muchos enlaces a documentos, tutoriales e implementaciones, para que pueda crear su propio agente de conversación neuronal.

Dejaré aquí la introducción del artículo, para que puedas entender la idea.

Modelos generativos y selectivos.

Los modelos de conversación generales se pueden dividir simplemente en dos tipos principales: modelos generativos y selectivos (o de clasificación). Además, los modelos híbridos son posibles. Pero lo común es que tales modelos conciben varias oraciones de contexto de diálogo y predicen la respuesta para este contexto. En la imagen a continuación, puede ver la ilustración de dichos sistemas.

Nota sobre representación de datos de diálogo

Antes de profundizar, deberíamos discutir cómo se ven los conjuntos de datos de diálogo. Todos los modelos descritos a continuación están entrenados en pares (contexto, respuesta) . El contexto es varias oraciones (quizás una) que precedieron a la respuesta. La oración es solo una secuencia de tokens de su vocabulario.

Para una mejor comprensión, mire la tabla. Hay un lote de tres muestras extraídas del diálogo sin formato entre dos personas:

– ¡Hola!
– Hola.
– ¿Cuantos años tienes?
– Veintidós. ¿Y tú?
– ¡Yo también! ¡Guauu!

Tenga en cuenta el token ” ” (final de secuencia) al final de cada oración en el lote. Este token especial ayuda a las redes neuronales a comprender los límites de las oraciones y actualizar sabiamente su estado interno.

Algunos modelos pueden usar metainformación adicional de datos, como identificación del hablante, género, emoción, etc.

Ahora, estamos listos para pasar a discutir modelos generativos …

Enlace a la publicación original: Chatbots con Machine Learning: creación de agentes de conversación neuronales

Si bien las técnicas de procesamiento del lenguaje natural han hecho grandes avances, todavía son adecuadas para usar en chatbots solo en ciertas situaciones. Definitivamente es emocionante interactuar con un bot que tiene un toque más humano, pero también hay muchas ocasiones de frustración. NLP difiere de Entity Extraction en el sentido de que no busca palabras clave en la consulta del usuario. Más bien, se basa en su conocimiento de expresiones idiomáticas, estructura de oraciones y reconocimiento de patrones aprendidos por máquina para decodificar lo que el usuario está diciendo. El uso de PNL para situaciones en las que botones simples y extracción de palabras clave puede hacer el trabajo fácilmente, puede ser una exageración y, a menudo, hace que la experiencia sea más frustrante. PNL es el más adecuado para una situación en la que realmente desea entablar una conversación con un usuario o desea un formato transaccional. Por ejemplo, suponga que solicita un producto con Amazon y hay un problema con el producto.

Aquí, tendría sentido usar NLP ya que el usuario quisiera decir “Oye, hay un problema con mi artículo comprado, ¿pueden ayudarme?”.

El debate sobre si los bots basados ​​en reglas son superiores a los basados ​​en IA nunca termina. La respuesta está en analizar el problema que uno está tratando de resolver y luego tomar una decisión. Mucho depende de lo que estamos tratando de lograr con su Chatbot.

Espero que ayude. ¡Salud!

Una de las mejores técnicas para construir su propio chatbot es usar cualquiera de las plataformas de chatbot precompiladas.

Engati es una de las plataformas de chatbot que ayuda a crear un chatbot sin codificación.

Cree su bot en 10 minutos: Engati se encarga de todo lo demás, configuración, publicación, aprendizaje, análisis de tráfico, módulos de aprendizaje y un rico panel de análisis. Engati ya se está utilizando como bot de servicio al cliente en varias líneas y dominios comerciales.

Engati http://www.engati.com ha sido calificada por Techworld como una de las mejores plataformas abiertas para construir bots.
¿Entonces quieres construir un chatbot? Aquí hay 9 de las mejores plataformas para desarrolladores.

Engati ofrece todos los beneficios de servicio al cliente de la siguiente manera:

Reduzca los gastos operativos y de servicio.
Obtenga una plataforma de la nueva era para sorprender a sus clientes
Aumentar el compromiso con los clientes y puntos de contacto.
Eliminar la fatiga de la aplicación móvil
Multiplica el alcance, aumenta la amplitud y la profundidad del compromiso
Análisis rico e interacción con el cliente.
Respuesta instantánea sin necesidad de retrasos en la respuesta humana
Entrena a tus propios bots
Integración de widget web Chatbot en sus sitios web
Mide y mejora tu puntaje CSAT

Feliz botting

El caso de uso que desarrollamos en nuestra empresa se utiliza para proporcionar asistencia a la atención al cliente en una importante empresa de telecomunicaciones.

Básicamente, la solución de aprendizaje automático lee el chat entre el cliente y la atención al cliente, y ofrece sugerencias en tiempo real sobre la resolución más probable del problema.

A medida que la conversación continúa, la solución sigue “leyendo” y agregando contexto al caso, lo que le permite encontrar respuestas aún más precisas a la solicitud del cliente.

Esta es una mejora importante en la velocidad y calidad del soporte técnico, lo que permite a los operadores de soporte al cliente (idealmente) encontrar respuestas instantáneas, basadas en la asistencia en tiempo real que reciben de la solución de fondo.

Lea más sobre cómo funciona el aprendizaje automático detrás de tal solución, en una publicación de blog publicada por la compañía que la desarrolló.

Verifique mi respuesta a esta pregunta de Quora para conocer la mejor técnica que he seguido para construir un chatbot desde cero usando NLP y Machine Learning.

PD: Trabajo con Ideas2IT, que se especializa en servicios de desarrollo de Chatbot.