Cómo crear un chatbot básico con Python

Avatar Tutor | marzo 16, 2019

Un chatbot (también conocido como bot, chatterbot, IM bot, agente interactivo o Entidad de conversación artificial) es un programa de computadora o inteligencia artificial que realiza una conversación a través de métodos auditivos o textuales. Dichos programas a menudo están diseñados para simular de manera convincente cómo se comportaría un ser humano como un compañero de conversación, por lo que pasa la prueba de Turing.

Los chatbots se utilizan normalmente en sistemas de diálogo para diversos propósitos prácticos, incluido el servicio al cliente o la adquisición de información. Algunos chatbots utilizan sistemas sofisticados de procesamiento de lenguaje natural, pero muchos sistemas más simples buscan palabras clave dentro de la entrada, luego extraen una respuesta con las palabras clave más coincidentes, o el patrón de redacción más similar, de una base de datos.

En este post aprenderemos a crear un simple asistente de chat o chatbot utilizando la biblioteca NLTK de Python.

NLTK tiene un módulo, nltk.chat, que simplifica la creación de estos motores al proporcionar un marco genérico.

En este blog estoy usando 2 importaciones de nltk.chat.util:

Chat: esta es una clase que tiene toda la lógica que usa el chatbot.

Reflections: Este es un diccionario que contiene un conjunto de valores de entrada y sus valores de salida correspondientes. Es un diccionario opcional que puedes usar. También puedes crear tu propio diccionario en el mismo formato que se muestra a continuación y utilizarlo en tu código.

También puedes crear tu propio diccionario de reflexiones en el siguiente formato y utilizarlo en su código. Aquí hay un ejemplo:

mis_reflexions = {
"ir": "fui",
"hola": "hey"
}

Y usarlo así

chat = Chat(pares, mis_reflexions)

Usando el concepto anterior de la biblioteca NLTK de python, construyamos un chatbot simple sin usar ninguno de los Algoritmos de Aprendizaje Automático o Aprendizaje Profundo. Así que obviamente nuestro chatbot será decente pero no inteligente.

Código fuente:

from nltk.chat.util import Chat, reflections
pares = [
    [
        r"mi nombre es (.*)",
        ["Hola %1, como estas ?",]
    ],
     [
        r"cual es tu nombre ?",
        ["Mi nombre es Chatbot ?",]
    ],
    [
        r"como estas ?",
        ["Bien, y tu?",]
    ],
    [
        r"disculpa (.*)",
        ["No pasa nada",]
    ],
    [
        r"hola|hey|buenas",
        ["Hola", "Que tal",]
    ],
    [
        r"que (.*) quieres ?",
        ["Nada gracias",]
        
    ],
    [
        r"(.*) creado ?",
        ["Fui creado hoy",]
    ],
    [
        r"finalizar",
        ["Chao","Fue bueno hablar contigo"]
],
]
def chatear():
    print("Hola soy un bot, escribe algo para comenzar") #mensaje por defecto
    chat = Chat(pares, mis_reflexions)
    chat.converse()
if __name__ == "__main__":
    chatear()

El código es bastante simple, aún así te lo explicamos.

Una vez que se invoca la función chatear(), se mostrará un mensaje predeterminado:

>Hola soy un bot, escribe algo para comenzar
>

Los chatbots nltk.chat trabajan con la expresión regular de las palabras clave presentes en tu pregunta. Por lo tanto, puedes agregar cualquier número de preguntas en un formato adecuado para que tu chatbot no se confunda al determinar la expresión regular.


Written by Tutor