文章目录
关于rasa的原理信息请参考 rasa指南也是本文参考内容主要来源,只是有些小问题做了改进,本文主要带初学者搭建系统入门,想在实际项目中使用,请关注后续内容。
来源:https://terrifyzhao.github.io/2018/09/17/Rasa使用指南01.html
rasa配置文件通俗理解
story文件定义了聊天流程模板,多轮对话按照模板进行对话,story中有意图和行为,意图决定了返回什么行为。
domain则是定义了意图有哪些,行为有哪些,行为的具体内容是什么。
story、domain、nlu文件之间的关系如下:
有了slot之后呢?
安装rasa:
1、安装rasa_core
pip install rasa_core
执行上面的命令这时可能会出现C++环境问题如下
这里提供了C++的文件在windows中双击安装即可。
网盘地址:https://pan.baidu.com/s/1kQvBw1dg8qzF-e7DvH8TWw
提取码:ef5y
2、安装rasa_nlp
pip install rasa_nlu[tensorflow]
配置文件
stories文件
首先配置stories文件,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件名是stories.md,文件的具体内容如下:
## story_happy
* greet
- utter_greet
* mood_happy
- utter_happy
## story_unhappy
* greet2
- utter_greet
* mood_unhappy
- utter_unhappy
- ##表示story的标题
- *表示意图
- 表示行为
domain文件
接下来配置domain文件,文件名是domain.yml,注意编码格式utf-8,在编辑内容保存的时候检查文件保存格式。文件的具体内容如下:
intents:
- greet
- mood_happy
- mood_unhappy
actions:
- utter_greet
- utter_happy
- utter_unhappy
templates:
utter_greet:
- text: "你好,你今天过的怎么样"
utter_happy:
- text: "那很棒棒哦"
utter_unhappy:
- text: "咋了,可以告诉我吗"
domain.yml中的内容要与stories.md中的内容对应上
- intents表示意图
- actions表示行为
- templates模板
注意文件的编码格式,不然会报错如下:
模型训练命令
以上的文件存放在同一目录下,在当前目录中执行下面的命令:
python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue
-o表示模型存放的位置
训练过程:
开启对话服务:
执行下面的命令,开启对话服务:
python -m rasa_core.run -d models/dialogue
输入内容就可以对话了。
添加Rasa NLU
nlu文件配置
配置nlu文件,文件名nlu.md,文件内容如下:
## intent:greet
- 你好
- 上午好
- 下午好
- 早上好
- 晚上好
## intent:mood_happy
- 很好
- 我很好
## intent:mood_unhappy
- 我很难受
- 我心情很差
配置nlu_config
配置nlu_config文件,文件名nlu_config.yml,文件内容如下:
language: zh
pipeline: tensorflow_embedding
NLU训练命令:
在同级目录下,执行下面的命令:
python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
开启对话服务
同级目录下执行下列命令,开启对话
python -m rasa_core.run -d models/dialogue -u models/current/nlu
添加slot
添加slot配置
在domain.yml中定义slot,内容如下:
entities:
- city
slots:
city:
type: text
action配置:
rasa_core_sdk安装
action依赖rasa_core_sdk的,需要安装
pip install rasa_core_sdk
endpoints
action是以服务的形式调用的。所以需要配置endpoints文件,文件名endpoints.yml,文件内容如下:
action_endpoint:
url: "http://localhost:5055/webhook"
action代码
文件名自定义,这里定义的test.py,文件内容如下:
from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet
class ActionAskWeather(Action):
def name(self):
return 'action_ask_weather'
def run(self, dispatcher, tracker, domain):
dispatcher.utter_message(f'您问的天气地点是哪里呢')
return [SlotSet('city', '深圳')]
其他配置
stories文件
stroies.md中添加关于天气的场景、意图、行为,内容如下:
## story_ask_weather
* ask_weather
- action_ask_weather
* weather_city
- utter_weather_good
domain文件
配置domain.yml文件,在意图、实体、行为中都进行添加,具体内容如下:
intents:
- greet
- mood_happy
- mood_unhappy
- ask_weather
- weather_city
entities:
- city
slots:
city:
type: text
actions:
- utter_greet
- utter_happy
- utter_unhappy
- action_ask_weather
- utter_weather_good
templates:
utter_greet:
- text: "你好,你今天过的怎么样"
utter_happy:
- text: "那很棒棒哦"
utter_unhappy:
- text: "咋了,可以告诉我吗"
utter_weather_good:
- text: "{city}天气很好呢"
执行命令
1、rasa_core
python -m rasa_core.train -d domain.yml -s stories.md -o models/dialogue -c policy_config.yml
2、rasa_nlu
python -m rasa_nlu.train -c nlu_config.yml --data nlu.md -o models --fixed_model_name nlu --project current --verbose
3、action
python -m rasa_core_sdk.endpoint --actions test
4、开启服务
python -m rasa_core.run -d models/dialogue -u models/current/nlu --endpoints endpoints.yml
接下来可以进行对话测试了。
以上内容理解可以参考Rasa使用指南
项目中的代码可以参考:项目源码
如果你只是了解学习rasa,截至目前为止,就可以了。如果想在公司的项目中应用rasa,那需要继续关注后续内容。