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.
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.
En este proyecto de Python, solo necesita saber Python básico. Eso incluye.
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.
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.
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.
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.
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.
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(
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()
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/