un chatbot de camarero de té con leche para chino, si aún no conoces rasa, consulta el mini rasa tutorial
a continuación
o lea los documentos oficiales de rasa
primero debes descargar bert_chinese_model y descomprimirlo : Chinese_L-12_H-768_A-12
git clone https://github.com/BI4O/rasa_milktea_chatbot.git
cd rasa_milktea_chatbot
pip install -r requirements.txt -i https://pypi.tuan.tsinghua.edu.cn/simple
iniciar el servidor bert
bert-serving-start -model_dir path/to/chinese_L-12_H-768_A-12/ -num_worker=1
saltar al té con leche
cd milktea
iniciar el servidor de acción
rasa run actions
entrenar un modelo
rasa train
habla con tu chatbot
rasa shell
Puedes pedir 3 productos diferentes, se pueden agregar más para modelarlo tú mismo.
y elige 3 tallas
- Crear un nuevo proyecto
- Ver datos de entrenamiento de NLU
- Definir la configuración del modelo y escribir la primera historia.
- Definir el ámbito de alcance de esta historia.
- Modelo de entrenamiento
- Prueba el ayudante que escribiste
La ruta apunta a una nueva carpeta vacía cd path/to/a/blank/folder
Cree un nuevo proyecto rasa en esta carpeta rasa init --no-prompt
Los siguientes archivos se generarán en la carpeta:
__init__.py | Archivo vacío utilizado para el posicionamiento. |
---|---|
acciones.py | Se utiliza para definir acciones (código de script personalizado) |
configuración.yml | Configurar NLU y modelos principales |
credenciales.yml | Detalles para conectarse a otros servidores (no se usan comúnmente) |
datos/nlu.md | Mis datos de entrenamiento NLU personalizados |
datos/historias.md | Mis historias personalizadas |
dominio.yml | El dominio del ayudante es domian. |
puntos finales.yml | Pistas conectadas a mensajes de Facebook, etc. (no se usan comúnmente) |
modelos/ | Modelo y sus archivos de parámetros. |
cat data/nlu.md
Se muestra de la siguiente manera
# # intent:order
- [奶茶](type)
- [咖啡](type)
- 我想要一杯[奶茶](type)
- 要杯[奶茶](type)
- 有[奶茶](type)吗
- 有[奶茶](type)卖吗
- 想要一杯[咖啡](type)
- 要杯[咖啡](type)
- 有[咖啡](type)吗
- 我想要一杯[卡布奇诺](type)
- 要杯[卡布奇诺](type)
- [卡布奇诺](type)
# # intent:inform_size
- [中](size)
- [中](size)的
- [中](size)杯
- [中](size)杯吧
- 要[中](size)杯
- [大](size)
- [大](size)的
- [大](size)杯
- [大](size)杯吧
- 要[大](size)杯
- [特大](size)
- [特大](size)的
- [特大](size)杯
- [特大](size)杯吧
- 要[特大](size)杯
La intención representa la intención y debe comenzar con ## y terminar con una nueva línea. Por ejemplo, aquí se muestran dos intenciones: 1. Realizar un pedido, 2. Informar las especificaciones del té con leche. Toda la retórica que los clientes puedan usar debe colocarse aquí y usarse para que el modelo nlu aprenda a entender qué es. dice la persona.
La entidad [value](entity)
representa la entidad y el valor representa el valor específico de la entidad. Después del entrenamiento, el modelo nlu puede devolver variables similares a esta al modelo central: {"type":"奶茶","size":"大"}
, para que el modelo central pueda responder en consecuencia en función de los dos parámetros type
y size
.
config.yml
definirá el módulo NLU anterior y los elementos principales que se utilizarán en su modelo. Esta vez, utilizamos componentes escritos por expertos. También se recomienda encarecidamente que todos visiten https://github.com. /GaoQ1 /rasa_nlu_gqVer historias escritas
cat data/stories.md
# # order naicha
- order{ " type " : "奶茶" }
- slot{ " type " : "奶茶" }
- utter_ask_size
- inform_size{ " size " : "大" }
- slot{ " size " : "大" }
- utter_affirm
- confirm
- action_charge
- utter_goodbye
La composición de la historia.
##
indica el nombre de la historia , un nombre descriptivo##
*
representan la intención del usuario intent{"entity1": "value", "entity2": "value"}
-
comienzo indica las acciones realizadas por el robot.Información del usuario
Acciones de acción
Hay dos tipos de acciones.
utter_xxx puede devolver directamente las palabras a responder. Solo necesita explicarlo en domain.yml para usarlo.
action_xxx puede realizar las operaciones personalizadas que desee. Además de especificarse en domain.yml, también debe agregarse en el archivo aciton.py. Por ejemplo, desea tener una acción personalizada action_HelloWorld
Primero agregue esta acción personalizada a domain.yml en acitons
actions:
- aciton_HelloWorld
Luego agregue una nueva clase en el archivo acitons.py
class YourCustomAction ( Action ):
def name ( self ):
# 这个返回的值必须和stories.md和domain.yml中说明的一致
return "action_HelloWorld"
def run ( self , dispatcher , tracker , domain ):
# 定义这个动作要执行的你想要的操作
# 比如我想在对话中返回给用户的是HellowWorld!
dispatcher . utter_message ( 'HelloWorld!' )
return []
cat domain.yml
intents:
- greet:
triggers: utter_greet
- goodbye:
triggers: utter_goodbye
- confirm
- deny
- order
- thanks
- inform_size
- unknown_intent
actions:
- utter_greet
- utter_ask_order_what
- utter_ask_size
entities:
- type
- size
slots:
type:
type: text
size:
type: text
templates:
utter_greet:
- text: "你好"
utter_ask_order_what:
- text: "想要喝点什么? "
utter_ask_size:
- text: "想要什么规格的呢?我们有中/大/特大杯"
en
Porque en este caso, nuestra acción es simplemente enviar palabras al usuario como respuesta. Estas acciones simples son todas acciones que comienzan con utter_
. Este tipo de acción requiere que el asistente seleccione una declaración en las plantillas para responder. También puede definir más. Para más acciones, consulte Custom Actions
Utilice el siguiente comando para verificar automáticamente las diferencias en el dominio/historias/NLU y volver a entrenar el modelo. El modelo entrenado tendrá una marca de tiempo como el nuevo modelo rasa train
rasa shell