Desarrollo de Chatbot con PLN en Django con Python
Desarrollo de Chatbot con PLN en Django con Python
Objetivo
Desarrollar la capacidad para diseñar, implementar y gestionar chatbots inteligentes e interactivos en aplicaciones web utilizando Django y Python, integrando habilidades de procesamiento de lenguaje natural para mejorar la experiencia del usuario y optimizar la interacción entre usuarios y chatbots.
Dirigido a:
El curso está dirigido a desarrolladores, estudiantes de programación o profesionales con conocimientos en Python y Django que deseen integrar chatbots en sus aplicaciones web utilizando clases.
Requisitos:
Para sacarle el máximo partido a esta formación es indispensable poseer conocimientos previos del lenguaje de programación Python, así como, entornos virtuales de desarrollo, conocimiento básico del framework Django y maquetación web(HTML y CSS)
PROGRAMA DEL CURSO
1 - Conceptos básicos de chatbots
Objetivo
- Comprender los conceptos básicos de los chatbots y su importancia en la actualidad.
- Identificar los distintos tipos de chatbots y sus aplicaciones en diversas áreas.
Duración de la unidad
1 Hora 55 MinutosContenido
Conceptos básicos de chatbots
Evolución de los chatbots
Pasos en la evolución de los chatbot, basados en reglas
¿Para qué usar un chatbot?
Principales ventajas de implementar un chatbot en tu trabajo
Ejercicio guiado: Desarrollo de un Guion o Diagrama de Flujo para un Chatbot Simple
Objetivo del Ejercicio
Descripción de nuestro chatbot
1º Definición de Funcionalidades
2º Diseño del guion
4º Revisión y Mejora
Resumen
2 - Repaso de Django
Objetivo
- Configurar y estructurar un proyecto Django básico para la implementación de un chatbot.
- Implementar y configurar vistas, URLs y plantillas en Django, aplicando el patrón MVC.
Duración de la unidad
3 Horas 30 MinutosContenido
Repaso de Django
Modelos
Vistas
Plantillas
Principales características y ventajas de Django en el desarrollo web
MVC (Modelo-Vista-Controlador) como arquitectura base
Administración automática de la base de datos
Sistema de enrutamiento y gestión de URL
Configuración del entorno de desarrollo
Visual Studio Code
La importancia de un entorno virtual
Pipenv
Configurando Pipenv en Visual studio Code
Estructura del proyecto Django
Comenzar un proyecto
Probando el proyecto
Resumen
3 - Fundamentos de Python para chatbots
Objetivo
- Utilizar variables, estructuras de control, y funciones en Python para desarrollar la lógica básica de un chatbot.
- Aplicar el manejo de excepciones y la comprensión de listas para optimizar el código del chatbot.
Duración de la unidad
2 Horas 15 MinutosContenido
Fundamentos de Python para chatbots
Variables
Reglas y convención de nombres
Tipos de datos
Cómo se define cada tipo de dato
Secuencias
Estructuras de control
Funciones y manejo de excepciones
Comprensión de listas
Manejo de archivos
Resumen
4 - Introducción al Procesamiento de Lenguaje Natural (PLN)
Objetivo
- Implementar funciones básicas de procesamiento de texto usando las bibliotecas NLTK y spaCy.
- Realizar tokenización, análisis de partes del discurso y análisis de entidades nombradas para mejorar la comprensión del lenguaje por parte del chatbot.
Duración de la unidad
3 HorasContenido
Introducción al Procesamiento de Lenguaje Natural (PLN)
Tareas comunes en PLN
Bibliotecas de procesamiento de lenguaje natural
NLTK (Natural Language Toolkit)
Instalación de NLTK
Corpus
Tokenización
Etiquetado de partes del discurso (POS tagging)
Análisis de sentimientos
Otras funcionalidades
Ejercicio guiado NLTK: Contar palabras en un texto
spaCy "space" (espacio) + "syntax" (sintaxis)
Instalación de SpaCy
Modelos
Tokenización
Etiquetado de partes del discurso (POS tagging)
Ejercicios guiados spaCy: Análisis de Entidades Nombradas con spaCy
Resumen
5 - Principios de diseño de chatbots
Objetivo
- Aplicar principios de diseño conversacional y UX en la creación de un chatbot intuitivo y fácil de usar.
- Diseñar un flujo conversacional que incluya la gestión de mensajes erróneos o inesperados.
Duración de la unidad
2 Horas 40 MinutosContenido
Principios de diseño de chatbots
Introducción al Diseño Conversacional
1. ¿Qué es el Diseño Conversacional?
2. Aspectos Clave del Diseño Conversacional
3. Flujos Conversacionales
Flujo Conversacional para Reservar una Cita Médica
4. Herramientas para Diseñar Flujos Conversacionales
Principios UX en un Chatbot
Principios de UX para el diseño de un Chatbot
Ejemplo Práctico de Aplicación de Principios UX
Análisis del flujo conversacional que propuesto
Flujo Conversacional Mejorado: Reserva de Cita Médica
Principales Mejoras
Manejo de Mensajes Inesperados o Erróneos
Estrategia General para Mensajes Inesperados
Resumen
6 - Modelado de datos y arquitectura del chatbot
Objetivo
- Diseñar un flujo conversacional que incluya la gestión de mensajes erróneos o inesperados.
- Definir y modelar las entidades clave de un chatbot en Django utilizando modelos.
- Aplicar migraciones de Django para gestionar la base de datos del chatbot.
- Optimizar el modelado de datos y las relaciones entre modelos en el chatbot.
Duración de la unidad
1 Hora 20 MinutosContenido
Modelado de datos y arquitectura del chatbot
Arquitectura del Chatbot en Django
Adaptación del MVC al Desarrollo de Chatbots
Diagrama de Arquitectura (MVC)
Flujo de Trabajo General
Ejemplo Básico de Interacción
Modelado de Datos en Django
Estrategias para un Modelado Eficiente
Entidades Clave del Chatbot
Definiciones de Modelos
Relación de muchos a uno, donde un usuario puede tener varias conversaciones.
Buenas Prácticas al Crear Migraciones
Patrones Alternativos a MVC
Optimizaciones en el Modelado de Datos
Resumen
7 - Implementación de funcionalidades básicas: Vistas y rutas
Objetivo
- Implementar funciones básicas de procesamiento de texto usando las bibliotecas NLTK y spaCy.
- Realizar tokenización, análisis de partes del discurso y análisis de entidades nombradas para mejorar la comprensión del lenguaje por parte del chatbot.
- Crear vistas y rutas que permitan la interacción del usuario con el chatbot en una aplicación web Django.
- Configurar una base de datos PostgreSQL y gestionarla desde Django para almacenar las conversaciones del chatbot.
- Implementar la lógica del chatbot en views.py y vincularla con la interfaz de usuario a través de plantillas HTML y CSS.
Duración de la unidad
3 Horas 10 MinutosContenido
Implementación de funcionalidades básicas: Vistas y rutas
Creación del Proyecto y Configuración del Entorno Virtual
Instalación de Django y Configuración del Entorno Virtual con pipenv
Creación del Proyecto Django y la app de chatbot
Configuración de la bbdd
Configuración POSTGRESQL a través de pgadmin
Configuración POSTGRESQL a través consola
Configura la base de datos en settings.py:
Creación de la Vista, la API y el template
Creación de views.py con la Lógica del Chatbot
¿Por qué la vista chatbot funciona como una API?
Diferencias clave entre una vista normal y una API en Django
chatobt_logic.py
Funcionalidad "js" y estética "css" y plantilla "html" del chatbot
Configuración de URL
Ejecución del Servidor
Solución de posibles Problemas
Error no such table: chatbot_message
Error CSRF cookie not set
Error NameError: name 'json' is not defined
Resumen
8 - Gestión de la conversación y contexto del chatbot
Objetivo
- Implementar la lógica del chatbot en views.py y vincularla con la interfaz de usuario a través de plantillas HTML y CSS.
- Integrar la biblioteca spaCy para mejorar el procesamiento de texto y la comprensión del contexto de la conversación.
- Implementar un sistema de estados en el chatbot para gestionar el flujo de la conversación de forma dinámica.
Duración de la unidad
3 Horas 40 MinutosContenido
Gestión de la conversación y contexto del chatbot
Pasos para integrar spaCy en el chatbot
Configurar spaCy en tu proyecto Django
Modificar logic_chatbot.py para usar spaCy
Integrando spaCy para mejorar las respuestas
Modificar nlp_utils.py para reconocer saludos y otras intenciones dinámicamente
Modificar chatbot_logic.py para usar la detección dinámica
Crear el flujo conversacional
nlp_utils.py
Explicación de las funciones
chatbot_logic.py
Explicación de la lógica general
Y por último el archivo views.py
Explicación del código
Posibles errores y cómo solventarlos
Error de fechas
Error de comensales
Resumen
9 - Integración de Modelos en el Chatbot (De Memory a Modelos Django)
Objetivo
- Gestionar el contexto de la conversación para mantener la coherencia entre los mensajes del chatbot y las respuestas del usuario.
- Integrar modelos de Django en el flujo conversacional del chatbot para almacenar y recuperar información de las interacciones.
- Configurar un sistema de logs en el chatbot para registrar las interacciones y errores.
Duración de la unidad
3 Horas 30 MinutosContenido
Integración de Modelos en el Chatbot (De Memory a Modelos Django)
Estructura de los Modelos Conversacionales
El Modelo que vamos a usar
Reserva (El modelo)
Pero, ¿Qué es logger en Python?
¿Para qué nos sirve esta estructura?
Achivo model.py
Integración del Flujo Conversacional en los Modelos
¿Qué significa integrar el flujo conversacional?
Nuestros archivos
Chatbot_logic.py
El código
Cómo funciona el código
Lo primero, las importaciones
Configuración del logger
Estados de la conversación
Función get_response(user_message, session_id, session_memory)
Flujo conversación según el estado
Manejo de errores... Si algo sale mal
nlp_utils.py
El código
Cómo funciona el código
Importaciones
Carga del modelo de lenguaje
Diccionarios y listas base
Funciones utilitarias
Otros archivos importantes
La administración y visualización de la reserva
Crear el superusuario
Código admin.py
Añadiendo lógica de permisos de edición condicional
Añadiendo el botón de "Ver detalles" con enlace a la edición
Estética con Jazzmin
Resumen