Cómo hacer un bot de chat usando Python implementando algoritmos de aprendizaje automático (como SVM, Naive Bayes, Random Forest, etc.)

No estoy muy familiarizado con Machine Learning y los Chat-bots. Pero los Chatbots son un tema candente y muchas compañías esperan desarrollar bots para tener conversaciones naturales indistinguibles de las humanas, y muchas afirman estar usando técnicas de PNL y Aprendizaje Profundo para hacer esto posible.

Recursos a seguir.

Blogs:

  1. Chatbots Life
  2. ChatbotMagazine
  3. ChatbotWeekly

Comunidades:

  1. ChatBots Public Group | Facebook
  2. Chatbot Mastermind Group

Youtube:

1. Siraj Raval

2. Lista de reproducción de ChatBot-ML

Puede usar el recurso GitHub para desarrollar su proyecto ChatterBot escrito en python con Machine Learning.

Instalación: pip install chatterbot

O use tensorflow con python para implementar Chatbots. Enlace Tutorial .

Actualmente estoy trabajando como desarrollador de Machine Learning en Elth.ai, donde hago chatbots para heatlhcare en Python. Los chatbots, hoy en día, son bastante fáciles de construir con API como API-AI, Wit.ai, etc. Proporcionan el motor NLP para sus chatbots. Pero, si desea hacer un chatbot sin ninguna API externa, puede llevarle mucho tiempo (principalmente en la recopilación de datos), pero estos son los conceptos básicos para construir chatbots:

Existen principalmente dos tipos de chatbots basados ​​en la generación de respuestas:
(i) Quién puede generar la respuesta por su cuenta. ( Modelos generativos )
(ii) Quién responde del conjunto predefinido de respuestas. ( Modelos basados ​​en recuperación )

Hablemos primero de los modelos generativos :

Para la generación de texto, existe un modelo bien conocido en aprendizaje automático conocido como LSTM (memoria a corto plazo) RNN (red neuronal recursiva). Los modelos generativos no se basan en respuestas predefinidas. Generan nuevas respuestas desde cero. Los modelos generativos generalmente se basan en técnicas de traducción automática, pero en lugar de traducir de un idioma a otro, “traducimos” de una entrada a una salida (respuesta).

Puede entrenar un LSTM con sus datos de conversación y, basándose en las oraciones anteriores, puede generar una respuesta propia.

Puede encontrar documentos e implementaciones en python usando Theano o Tensorflow aquí

[1506.05869] Un modelo de conversación neuronal
saltypaul / Seq2Seq-Chatbot Usando el marco seq2seq de Theano

Generación de texto con redes neuronales recurrentes LSTM en Python con Keras – Dominio del aprendizaje automático con la biblioteca de Keras (Keras usa Tensorflow)

Conjunto de datos:
Cornell Movie-Dialogs Corpus (Solo para darle una idea de cómo deberían ser sus datos)

Donde como basado en recuperación son más fáciles de hacer:

Los modelos basados ​​en la recuperación utilizan un repositorio de respuestas predefinidas y algún tipo de heurística para elegir una respuesta adecuada basada en la entrada y el contexto. La heurística podría ser tan simple como una coincidencia de expresión basada en reglas, o tan compleja como un conjunto de clasificadores de Machine Learning. Estos sistemas no generan ningún texto nuevo, simplemente seleccionan una respuesta de un conjunto fijo. Esto es más de IA basada en reglas y actualmente cada chatbot presente en línea utiliza modelos basados ​​en recuperación, incluido Mitsuku (actualmente el mejor chatbot presente en línea). Aquí, en Elth.ai también utilizamos modelos basados ​​en recuperación.

Aquí hay un algoritmo que puede seguir para hacer su chatbot:

(i) Clasificación

Reúna un conjunto de respuestas y divídalas en las clases que desee. Por ejemplo, en caso de banca:
Texto: “¿Cuál es la tasa de interés para el préstamo de vivienda en su banco? ”
Clase: “préstamo de vivienda”
Texto: “¿Cuál es la cantidad máxima que puedo obtener para un préstamo educativo?”
Clase: “préstamo educativo”
Texto: “Quiero abrir una cuenta en su banco. ¿Cuál es el procedimiento?”
Clase: “cuenta abierta” ……………………….

Y así..
Ahora, creo que está familiarizado con la clasificación de texto básica usando Tf-Idf o el modelo de Bolsa de palabras, por lo que no voy a detallar cómo hacer la clasificación de texto.
Qué modelo usar para la clasificación de texto depende de su conjunto de datos:

  • Si el número de oraciones está entre 10 ^ 4 y 10 ^ 6, entonces elija SVM porque la complejidad de tiempo para entrenar SVM es O (n ^ 3). Por lo tanto, puede llevarle mucho tiempo entrenar sus datos si tiene un gran conjunto de datos.
  • Si el número de oraciones es mayor de 10 ^ 6, entonces le sugiero que elija Neural Networks (MLP Classifier).
  • Si el conjunto de datos tiene menos de 10 ^ 4 oraciones, busque el clasificador Naive Bayes o Nearest Neighbour.

(ii) Reconocimiento de entidad con nombre (NER)

Hay 2 pasos que debe seguir para hacer su conjunto de datos para NER.

  1. Etiquetado de parte del discurso:
    El etiquetado de POS se puede hacer mediante el etiquetado basado en reglas, el etiquetado utilizando el modelo de Markov oculto y el algoritmo de Viterbi o el etiquetador de campos aleatorios condicionales. También puede usar la función pos_tag de NLTK que ya está entrenada, pero deberá descargarla usando nltk.download (). También puede usar StanfordPOSTagger preformado de NLTK. Puede descargar los archivos necesarios para Stanford POS Tagger aquí: The Stanford Natural Language Processing Group
  2. Trozo de texto:
    En las oraciones etiquetadas necesita un fragmento de texto para definir sus propias entidades en una oración. Este es un ejemplo de muestra:
    La primera línea es la oración, la segunda línea es la etiqueta POS para cada palabra en la oración y la tercera línea son las entidades fragmentadas para cada palabra. Por ejemplo, Chang-NN-Person, Washington-NNP-Location.

TENIS – CHANG, WASHINGTON ADVANCE, OTOÑO DE DOS SEMILLAS DE MUJERES
NNS: NN, NNP NNP, CD VBP VBZ NNP NN
O O PERSONA O UBICACIÓN O O O O O O O

Una vez que obtenga estos datos, puede usarlos para entrenar su NER Tagger. Para el etiquetado NER, puede utilizar el mismo algoritmo que utilizó para el etiquetado POS, es decir, el modelo de Markov oculto utilizando el algoritmo de Viterbi, el etiquetador basado en CRF, etc. Pero para el etiquetado NER no puede utilizar un modelo previamente entrenado porque necesitará su propio entidades como aquí en elth usamos especialistas y parte del día, etc., como nuestras entidades. Puede nombrar sus entidades como:
Préstamo educativo – tipo de préstamo.

(iii) Aplicación de reglas sobre la clase y las entidades que obtiene para un texto del usuario

Esta es la parte en la que puede definir sus propias reglas y respuestas, etc. El tipo de préstamo del usuario consultado.

Esa es la descripción general de cómo funcionan principalmente los chatbots. El resto depende de usted, como diseñar la memoria y mantener datos específicos del usuario, etc. Puede mantener los datos de cada usuario específico que pueden ayudarlo con conversaciones largas with
Si tiene alguna duda, no dude en enviarme un mensaje de texto 🙂

Defina sus operaciones de PNL paso a paso y compártalas para comprender el texto en inglés. Por ejemplo, lea el texto, limpie el texto (derivación, leammatización, etc.), analice el texto, etc. Recomiendo utilizar los paquetes de NLP de Stanford para las operaciones PNL. Para la clasificación de temas, necesitará clasificadores ML, nuevamente en datos de texto SVM, los bayes ingenuos funcionan bien. El bosque aleatorio y el adaboost son técnicas de conjunto, bastante complejas pero que ofrecen un buen rendimiento. También necesitará un corpus de datos bancarios, consulte en su contra para entrenar a sus modelos. Definir el flujo de este proyecto de chatbot es importante, defínalo e ir paso a paso.

Creo que he respondido la pregunta de manera genérica, para aclarar el concepto. Déjame saber para cualquier duda.

Bueno, puede seguir adelante con el APIbot en línea API.AI, que le permite modelar un chatbot en minutos.

Si desea crear un fondo desde cero, debe ser un experto en conceptos de PNL que solo ha sido objeto de investigación desde hace décadas. Para un bot simplista, puede modelarlo en un BPNN usando Tensorflow sobre Python para algunos patrones de oraciones.

Hay una comunidad activa de desarrolladores de bots de chat y empresarios en Facebook. Aqui esta el link

Inicia sesión en Facebook | Facebook

Hola,

Puede implementar un chatbot usando la red neuronal profunda seq2seq. Mira el video de Siraj Raval en YouTube.

Espero que esto ayude….

More Interesting

¿Cómo funciona el algoritmo de búsqueda de ciclo de Floyd? ¿De qué manera mover la tortuga al comienzo de la lista vinculada, mientras se mantiene a la liebre en el lugar de reunión, seguido de mover un paso a la vez, hace que se encuentren en el punto de inicio del ciclo?

¿Cuál es el mejor algoritmo de sustracción automática de fondo para una sola imagen?

¿Cuáles son los algoritmos hash más comunes además de MD5 y SHA?

¿Cómo aprenden los algoritmos de aprendizaje de refuerzo del juego de ajedrez a jugar bien, dado que cada movimiento no está etiquetado como bueno o malo, a diferencia del aprendizaje supervisado donde cada dato está etiquetado como bueno o malo?

¿Cuáles son algunos lenguajes de programación que me permiten visualizar algoritmos?

Cómo hacer un juego de programa de asesor de IA en Unity3D

Un k-palíndromo es una cadena que se transforma en un palíndromo al eliminar como máximo k caracteres de él. Dada una cadena S y un número entero K, ¿encuentra si S es un k-palíndromo o no? Restricciones: S tiene como máximo 20,000 caracteres y 0 <= k <= 30

¿Qué tipo de estrategias y algoritmos tenemos en el comercio cuantitativo?

Cada vez que intento resolver un problema en CodeChef o SPOJ, aparece el error de límite de tiempo excedido. ¿Qué tengo que hacer? ¿Me faltan algoritmos?

Cómo usar estructuras de datos como listas enlazadas en preguntas de entrevistas de Javascript

¿Qué es el algoritmo y cómo usarlo en la programación?

¿Cuáles son los algoritmos que uno debería usar para generar automáticamente intentos de chatbots?

En los términos más simples, ¿qué es un algoritmo? ¿Cual es su propósito?

¿Qué otros algoritmos de clasificación utilizan la estrategia 'Divide y vencerás' además de la clasificación rápida y la combinación?

¿Cuál es la técnica / algoritmo utilizado por mensajeros como WhatsApp y BBM para comprimir imágenes?