rasa的使用
一. 安装
rasa有NLU和core两个模块,可以使用pip全部安装,默认是基于tensorflow2.1版本的
直接使用pip安装
# 创建一个python是3.6.8的环境
conda create -n qa python=3.6.8
# 使用pip安装rasa
pip install rasa
二. 创建一个简单的语音助手
- 创建一个空项目
# 如果不加--no-prompt会问很多问题,加上之后就直接创建一个工程
rasa init --no-prompt
创建之后包含的文件:
- NLU训练数据
实际上是意图分类的训练数据
以##
开头的是意图,并且是以intent:
开头,下面以-
开头的是训练数据。 - 模型配置文件
包括NLU和Core的配置文件,两部分,定义了pipline使用的模型。language是在创建模型的时候创建的。
如果使用配置的字典应该如何使用?
- 配置stories
stories.md
文件是rasa core模块的训练数据,是一个assistant完成对话最重要的一步,如果不配置的话,只能训练Nlu的模型。
## story1
* greet
- utter_greet
- 定义domain.yml文件
每一个机器人有一个domain,里面定义了intents、slots、responses。
intents:
- greet
- goodbye
- affirm
- deny
- mood_great
- mood_unhappy
- bot_challenge
responses:
utter_greet:
- text: "Hey! How are you?"
utter_cheer_up:
- text: "Here is something to cheer you up:"
image: "https://i.imgur.com/nGF1K8f.jpg"
utter_did_that_help:
- text: "Did that help you?"
utter_happy:
- text: "Great, carry on!"
utter_goodbye:
- text: "Bye"
utter_iamabot:
- text: "I am a bot, powered by Rasa."
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true
- 训练模型
rasa训练可以指定模型存储的位置及模型的名字。
rasa train --out models --fixed-model-name rasa_zh_model
- 启动模型
rasa shell
三、命令行
- 启动交互模式,并指定已经训练好的模型
rasa interactive --model model/rasa_zh_model.tar.gz
启动之后可以输入对话的内容来与assitant对话,并可以查看意图分类的结果及阈值。
退出交互模式时,会提醒把stories添加到stories.md文件,NLU数据添加到data/nlu.md数据上。
所以,interactivate的作用是通过交互的模式来训练模型,训练完成后并保存训练数据。
- 启动模型服务
指定训练好的模型作为服务模型,并使用--endpoints
来指定actions的服务端口。
rasa run --model models/rasa_zh_model.tar.gz --endpoints endpoints.yml
有一个问题是,这样启动了模型怎么实现对话呢?
- 启动actions服务
这样自定义的action才可以注册,并被使用,否则无法使用。参数--actions
后面是包名,而不是文件路径。
rasa run actions --actions dm.actions
- 训练数据的格式转化
把nlu数据从md文件格式转换为json格式,--data
是原始文件,--out
是转化后的文件,-f
是指定转化后的数据格式。
这个可以方便后台管理界面配置好intent后,写到算法的后台。
# 从md文件转化为json
rasa data convert nlu --data data/nlu.md --out data/nlu.json -f json
# 从json转化为md文件
rasa data convert nlu --data data/nlu.json --out data/nlu_md.md -f md
- 可视化stories
把stories可视化,生成一个html文件,本地可以打开。
rasa visualize
从START到END一共4个story,蓝色框的是用户说的话,白色框的是assistant说的话。左边三个story都是以问好的形式来开始的。
四 rasa整体流程
参考
知乎:https://zhuanlan.zhihu.com/p/88625091
https://www.jianshu.com/p/ad11f5815447
rasa使用指南01
https://terrifyzhao.github.io/2018/09/17/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9701.html
rasa使用指南02
https://terrifyzhao.github.io/2019/02/26/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9702.html
action有三种类型:
- default action
- utter action
- custom action