paint-brush
Uso de Flask para construir un chatbot basado en reglas en Pythonpor@pythonscholar
18,122 lecturas
18,122 lecturas

Uso de Flask para construir un chatbot basado en reglas en Python

por Python Scholar2022/01/14
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Un chatbot basado en reglas es un chatbot que se guía en una secuencia. Utiliza una biblioteca de aprendizaje automático que ayuda a generar una respuesta automática basada en la entrada del usuario. El ChatterBot se basa en una biblioteca de aprendizaje automático llamada [ChatterBot] Chatterbot está diseñado para simular o emular las interacciones humanas a través de la inteligencia artificial. Usaremos un método directo y corto para construir un chatbot basado en reglas. El proyecto es un proyecto de Python que incluye habilidades básicas de Python como entrada/salida y declaraciones de condiciones básicas.

Company Mentioned

Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Uso de Flask para construir un chatbot basado en reglas en Python
Python Scholar HackerNoon profile picture

¿Qué es exactamente un chatbot?

Los chatbots son programas informáticos diseñados para simular o emular las interacciones humanas a través de la inteligencia artificial. Puede conversar con chatbots de la misma manera que tendría una conversación con otra persona. Se utilizan para diversos fines, incluido el servicio de atención al cliente, los servicios de información y el entretenimiento, entre otros.


¿Qué es un chatbot basado en reglas?

Un chatbot basado en reglas es un chatbot que se guía en una secuencia; son sencillos; en comparación con los chatbots basados en inteligencia artificial, este chatbot basado en reglas tiene reglas específicas.

Usaremos un método directo y corto para construir un chatbot basado en reglas.



Ventajas del chatbot basado en reglas

  • Muy fácil de desarrollar.
  • Ahorrar tiempo.

Desventajas del chatbot basado en reglas

  • No poder y avanzar como Chatbot basado en IA.
  • Requiere una gran cantidad de códigos para hacer un chatbot a gran escala.

Requisitos previos del proyecto:

En este proyecto de Python, solo necesita saber Python básico. Eso incluye.

  • Función de impresión () de Python
  • Función de entrada/salida de Python
  • Marco de Python Flask
  • Funciones de Python
  • HTML/CSS básico

¿Que aprenderás?

  • Desarrollo de extremo a extremo de Python chatbot.
  • Implementación básica de Entrada/Salida.
  • Frasco marco básico

Empezando

Primero, hagamos un chatbot muy básico utilizando habilidades básicas de Python como entrada/salida y declaraciones de condiciones básicas, que tomarán información básica del usuario y la imprimirán en consecuencia.


Paso 1: Primero, las variables almacenarán la información del usuario.


 User_Name = None User_Age = None User_Job = None


Paso 2: Luego, tomaremos la entrada del usuario.


 print("Hello, I'm a Chatbot \n") User_Name = input("What is your name? ") print("How are you {0}. \n".format(User_Name)) User_Age = input("What is your age? ") print("Oh, so your age is {0}. \n".format(User_Age)) User_Job = input("What is your job profile? ") print("So you're a {0}. \n".format(User_Job))


Cuando ejecutemos el programa anterior, obtendremos el siguiente resultado:


 Hello, I'm a Chatbot What is your name? pythonscholar How are you pythonscholar. What is your age? 26 Oh, so your age is 26. What is your job profile? python developer So you're a python developer.


Entonces, ahora, comencemos a crear un chatbot real e implementarlo en Flask.


Usaremos la biblioteca ChatterBot Python, que se desarrolló principalmente para crear chatbots.

¿Qué es ChatterBot y cómo funciona?


ChatterBot es una biblioteca de aprendizaje automático que ayuda a generar una respuesta automática basada en la entrada del usuario. Utiliza un algoritmo basado en el procesamiento del lenguaje natural para generar recuperaciones en función de los contextos del usuario.


Pueden consultar los documentos oficiales de ChatterBot para obtener más información, o pueden ver el código de GitHub correspondiente. Además, puede ver el siguiente diagrama de flujo para comprender mejor cómo funciona ChatterBot.


(fuente: https://chatterbot.readthedocs.io/en/stable/#process-flow-diagram)


¿Cómo instalar ChatterBot en Python?

Instalar ChatterBot en Python es muy fácil; se puede hacer usando el comando pip en los siguientes pasos. Escriba el siguiente comando en la terminal:


 pip install chatterbot chatterbot_corpus


Si están usando el cuaderno de Google Colaboratory , deben usar el siguiente comando para instalarlo en Google Colab.


 !pip install chatterbot chatterbot_corpus


Entonces, comencemos a construir un chatbot siguiendo los pasos a continuación.


Paso 1: Primero, importaremos la biblioteca de ChatterBot a nuestro archivo de Python.


 from chatterbot import ChatBot from chatterbot.trainers import ChatterBotCorpusTraine


Paso 2: Luego, le pondremos un nombre a nuestro chatbot. Puede ser en cualquier momento según nuestra necesidad.


 chatbot=ChatBot('Pythonscholar')


Paso 3: Comenzaremos a entrenar nuestro chatbot usando su conjunto de datos predefinido.


 # Create a new trainer for the chatbot trainer = ChatterBotCorpusTrainer(chatbot) # Now, let us train our bot with multiple corpus trainer.train("chatterbot.corpus.english.greetings", "chatterbot.corpus.english.conversations" )


chatterbot.corpus.english.greetings y chatterbot.corpus.english.conversations son el conjunto de datos predefinido que se usa para entrenar pequeñas conversaciones y conversaciones cotidianas para nuestro chatbot.


Paso 4: Luego, verificaremos cómo nuestro chatbot responde a nuestra pregunta usando el siguiente código.



 response = chatbot.get_response("How are you?") print(response)


Ahora ejecutemos todo el código y veamos a qué responde nuestro chatbot.


Código fuente completo:


 from chatterbot import ChatBot from chatterbot.trainers import ChatterBotCorpusTrainer chatbot=ChatBot('Pythonscholar') # Create a new trainer for the chatbot trainer = ChatterBotCorpusTrainer(chatbot) # Now let us train our bot with multiple corpus trainer.train("chatterbot.corpus.english.greetings", "chatterbot.corpus.english.conversations" ) response = chatbot.get_response("How are you?") print(response)


La salida será la siguiente:


 I am doing well.


Cómo implementar un chatbot en Flask

Primero, instalaremos la biblioteca Flask en nuestro sistema usando el siguiente comando:


 pip install flask


Y para Google Colab, use el siguiente comando, en su mayoría Flask viene preinstalado en Google Colab.


 !pip install flask

Pero primero, comprendamos qué es el marco Flask en Python.


¿Qué es Python Flask?

Flask es un micro-framework de Python que se utiliza para crear pequeñas aplicaciones web y sitios web utilizando Python. Flask funciona en un motor de plantillas popular llamado Jinja2, un sistema de plantillas web combinado con fuentes de datos para las páginas web dinámicas.


Ahora comience a desarrollar el marco Flask basado en el ChatterBot anterior en los pasos anteriores.


Ya hemos instalado Flask en el sistema, por lo que importaremos los métodos de Python que necesitamos para ejecutar el microservidor Flask.


Paso 1: importe los métodos necesarios de Flask y ChatterBot.


 from flask import Flask, render_template, request from chatterbot import ChatBot from chatterbot.trainers import ChatterBotCorpusTrainer


Paso 2: Luego, inicializaremos la aplicación Flask agregando el siguiente código.


 #Flask initialisation app = Flask(__name__)


Matraz( nombre ) se usa para crear el objeto de clase Flask para que el código de Python pueda inicializar el servidor Flask.


Paso 3: Ahora, le daremos el nombre a nuestro chatbot.


 chatbot=ChatBot('Pythonscholar')


Paso 4: agregue el código de capacitación para un chatbot.


 # Create a new trainer for the chatbot trainer = ChatterBotCorpusTrainer(chatbot) # Now, let us train our bot with multiple corpus trainer.train("chatterbot.corpus.english.greetings", "chatterbot.corpus.english.conversations" )


Paso 5: Crearemos el decorador Flask y una ruta en este paso.


 @app.route("/") def index(): render_template("index.html")


La ruta () es una función de una clase Flask que se usa para definir la asignación de URL asociada con la función.


Luego creamos una función de índice para representar el código HTML asociado con el archivo index.html usando la función render_template.


En el siguiente paso, crearemos una función de respuesta que tomará la entrada del usuario y también devolverá el resultado o la respuesta de nuestro chatbot entrenado.


Paso 6: cree una función para recibir información del usuario y responder en consecuencia.


 @app.route("/get", methods=["POST"]) def chatbot_response(): msg = request.form["msg"] response = chatbot.get_response(msg) return response


Paso 7: Luego, agregaremos el código final que iniciará el servidor Flask después de interpretar todo el código.


 if __name__ == "__main__": app.run()


El código completo se verá así:


 from flask import Flask, render_template, request from chatterbot import ChatBot from chatterbot.trainers import ChatterBotCorpusTrainer #Flask initialization app = Flask(__name__) chatbot=ChatBot('Pythonscholar') # Create a new trainer for the chatbot trainer = ChatterBotCorpusTrainer(chatbot) # Now let us train our bot with multiple corpus trainer.train("chatterbot.corpus.english.greetings", "chatterbot.corpus.english.conversations" ) @app.route("/") def index(): return render_template("index.html") @app.route("/get", methods=["GET","POST"]) def chatbot_response(): msg = request.form["msg"] response = chatbot.get_response(msg) return str(response) if __name__ == "__main__": app.run()


Según la implementación de Jinja2, tenemos que crear dos carpetas para almacenar archivos HTML y CSS; mientras se trabaja con el motor Jinja2, es necesario crear una carpeta con una plantilla de nombre para agregar archivos HTML, y para otros archivos como CSS, javascript o imagen, debemos crear una carpeta con el nombre estático pero es opcional pero creando plantilla La carpeta es obligatoria.


Primero, crearemos un archivo HTML llamado index.html dentro de la carpeta de la plantilla.


 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css')}}" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <div class="row"> <div class="col-md-10 mr-auto ml-auto"> <h1>Pythonscholar ChatBot</h1> <form> <div id="chatbox"> <div class="col-md-8 ml-auto mr-auto"> <p class="botText"><span>Hi! I'm Pythonscholar.</span></p> </div> </div> <div id="userInput" class="row"> <div class="col-md-10"> <input id="text" type="text" name="msg" placeholder="Message" class="form-control"> <button type="submit" id="send" class="btn btn-warning">Send</button> </div> </div> </form> </div> </div> <script> $(document).ready(function() { $("form").on("submit", function(event) { var rawText = $("#text").val(); var userHtml = '<p class="userText"><span>' + rawText + "</span></p>"; $("#text").val(""); $("#chatbox").append(userHtml); document.getElementById("userInput").scrollIntoView({ block: "start", behavior: "smooth", }); $.ajax({ data: { msg: rawText, }, type: "POST", url: "/get", }).done(function(data) { var botHtml = '<p class="botText"><span>' + data + "</span></p>"; $("#chatbox").append($.parseHTML(botHtml)); document.getElementById("userInput").scrollIntoView({ block: "start", behavior: "smooth", }); }); event.preventDefault(); }); }); </script> </body> </html>


No entenderemos el código HTML y jquery ya que jquery es un tema muy amplio.


Crearemos un archivo style.css, lo guardaremos en la carpeta estática y usaremos el siguiente código.


 body { font-family: Garamond; } h1 { color: black; margin-bottom: 0; margin-top: 0; text-align: center; font-size: 40px; } h3 { color: black; font-size: 20px; margin-top: 3px; text-align: center; } .row { display: flex; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } .ml-auto{ margin-left:auto !important; } .mr-auto{ margin-right:auto !important; } .col-md-10,.col-md-8,.col-md-4{ position: relative; width: 100%; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-md-8{flex:0 0 66.666667%;max-width:66.666667%} .col-md-4{flex:0 0 33.333333%;max-width:33.333333%} .col-md-10{flex:0 0 83.333333%;max-width:83.333333%} .form-control { background: no-repeat bottom,50% calc(100% - 1px); background-image: none, none; background-size: auto, auto; background-size: 0 100%,100% 100%; border: 0; height: 36px; transition: background 0s ease-out; padding-left: 0; padding-right: 0; border-radius: 0; font-size: 14px; } .form-control { display: block; width: 100%; padding: .4375rem 0; padding-right: 0px; padding-left: 0px; font-size: 1rem; line-height: 1.5; color: #495057; border:none; background-color: transparent; background-clip: padding-box; border-bottom: 1px solid #d2d2d2; box-shadow: none; transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; } .btn { float: left; text-align: center; white-space: nowrap; vertical-align: middle; user-select: none; border: 1px solid transparent; padding: .46875rem 1rem; font-size: 1rem; line-height: 1.5; border-radius: .25rem; transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; } .btn-warning { color: #fff; background-color: #f08f00; border-color: #c27400; } .btn.btn-warning:active, .btn.btn-warning:focus, .btn.btn-warning:hover { box-shadow: 0 14px 26px -12px rgba(255,152,0,.42),0 4px 23px 0 rgba(0,0,0,.12),0 8px 10px -5px rgba(255,152,0,.2); } button, input, optgroup, select, textarea { margin: 0; font-family: inherit; font-size: inherit; line-height: inherit; overflow:visible; } #chatbox { background-color: cyan; margin-left: auto; margin-right: auto; width: 80%; min-height: 70px; margin-top: 60px; } #userInput { margin-left: auto; margin-right: auto; width: 40%; margin-top: 60px; } #textInput { width: 87%; border: none; border-bottom: 3px solid #009688; font-family: monospace; font-size: 17px; } #buttonInput { padding: 3px; font-family: monospace; font-size: 17px; } .userText { color: white; font-family: monospace; font-size: 17px; text-align: right !important; line-height: 30px; margin: 5px; } .userText span { background-color: #009688; padding: 10px; border-radius: 2px; } .botText { color: white; font-family: monospace; font-size: 17px; text-align: left; line-height: 30px; margin: 5px; } .botText span { background-color: #ef5350; padding: 10px; border-radius: 2px; } #tidbit { position: absolute; bottom: 0; right: 0; width: 300px; }


Estamos listos para ejecutar nuestra aplicación Flask.


Entonces, comencemos nuestro chatbot ejecutando un archivo de Python. Una vez que ejecute el archivo Python, se creará un servidor local con la dirección http://127.0.0.1:5000/ , y cuando abra esta URL en el navegador, podrá ver la interfaz de usuario de nuestro chatbot.


Esta es nuestra salida de Chatbot.


Felicitaciones, hemos creado con éxito un chatbot usando Python y Flask.


Además, pueden consultar nuestros otros artículos a continuación.

También publicado en: https://pythonscholar.com/python-projects/rule-based-chatbot-in-python-using-flask/