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?
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)
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
El componente de NLU se encarga de interpretar el lenguaje del usuario. Extrae los intents y entities a partir del texto recibido.
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 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."
Objetivo: Desarrollar e implementar un chatbot básico que responda preguntas frecuentes.
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)
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."
Evaluación de la precisión del chatbot mediante pruebas interactivas.
rasa shell
Objetivo: Mejorar el chatbot mediante el ajuste de parámetros y la adición de nuevas funcionalidades.
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
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."
Pruebas finales para asegurar la funcionalidad y precisión del chatbot.
rasa test