Preparación (Lección 3) - Implementación de un Chatbot Básico

Objetivos:

¿Qué es un Intent?

Un Intent representa la intención del usuario al enviar un mensaje. Por ejemplo, "quiero saber mi saldo" podría estar asociado al intent consultar_saldo.


## intent:consultar_saldo
- ¿Cuál es mi saldo?
- Quiero ver mi saldo bancario
- ¿Cuánto dinero tengo en mi cuenta?
  

¿Qué son las Entities?

Las Entities (entidades) son los datos específicos que se extraen del mensaje del usuario. Por ejemplo, si alguien dice "Quiero transferir 100 euros a Juan", se pueden extraer las entidades: cantidad=100 y destinatario=Juan.


## intent:transferencia
- Quiero transferir [100](cantidad) euros a [Juan](destinatario)
- Envía [250](cantidad) a [Carlos](destinatario)
  

¿Qué son los Slots?

Los Slots son variables que Rasa utiliza para almacenar información extraída del usuario. Permiten que el bot recuerde datos durante la conversación.


slots:
  cantidad:
    type: float
  destinatario:
    type: text
  

NLU: Natural Language Understanding

El componente de NLU se encarga de interpretar el lenguaje del usuario. Extrae los intents y entities a partir del texto recibido.

DM: Dialogue Management

Dialogue Management (DM) gestiona el flujo de la conversación. Decide qué acción debe tomar el bot en cada momento, dependiendo del estado actual del diálogo.

NLG: Natural Language Generation

NLG es la parte encargada de generar las respuestas que verá el usuario. En Rasa se define en el archivo domain.yml bajo la sección de respuestas.


responses:
  utter_saldo:
  - text: "Tu saldo actual es de 500 euros."
  

1. Implementación del Chatbot

Objetivo: Desarrollar e implementar un chatbot básico que responda preguntas frecuentes.

1.1 Desarrollo del Modelo de NLP:

Entrenamiento del modelo utilizando ejemplos de diálogo.


                from rasa.nlu.training_data import load_data
                from rasa.nlu.model import Trainer
                from rasa.nlu import config
                training_data = load_data("data/nlu.md")
                trainer = Trainer(config.load("config.yml"))
                interpreter = trainer.train(training_data)
                

1.2 Configuración de Respuestas del Chatbot:

Definición de respuestas automáticas a las intenciones del usuario.


                # domain.yml
                responses:
                utter_greet:
                - text: "Hello! How can I assist you today?"
                utter_ask_weather:
                - text: "It's sunny outside."
                

1.3 Prueba del Chatbot:

Evaluación de la precisión del chatbot mediante pruebas interactivas.


                rasa shell
                

2. Mejora y Ajuste del Chatbot

Objetivo: Mejorar el chatbot mediante el ajuste de parámetros y la adición de nuevas funcionalidades.

2.1 Ajuste de Parámetros del Modelo:

Optimización del modelo de NLP para mejorar la precisión de las respuestas.


                # config.yml
                pipeline:
                - name: WhitespaceTokenizer
                - name: CountVectorsFeaturizer
                - name: DIETClassifier
                epochs: 100
                

2.2 Adición de Nuevas Funcionalidades:

Implementación de nuevas intenciones y respuestas.


                # domain.yml
                intents:
                - greet
                - ask_weather
                - ask_time
                responses:
                utter_ask_time:
                - text: "The current time is 3 PM."
                

2.3 Evaluación y Validación del Chatbot:

Pruebas finales para asegurar la funcionalidad y precisión del chatbot.


                rasa test