Rasa Notes

rasa_nlu训练数据的生成

对话系统的冷启动都会遇到这样的问题,没有数据。

使用chatito来生成rasa_nlu意图识别需要的数据。这个数据需要反反复复的修改和完善。

Chatito doc

在产生训练数据的时候需要确定的nlu的意图和实体类别,需要在domain.yml文件中配置intents和entities。

官方DOC

https://rasa.com/docs/rasa/core/policies/

mini rasa tutorial

  1. 创建一个新的项目
  2. 查看NLU培训数据
  3. 定义模型配置,写下第一个故事Story
  4. 定义这个故事story的作用域domain
  5. 训练模型
  6. 测试你写好的助手

创建新项目

路径指向一个新的空文件夹 cd path/to/a/blank/folder

在这个文件夹里面创建新的rasa项目 rasa init --no-prompt

文件夹中将会生成以下的文件:

init.py 空文件用于定位
actions.py 用于定义动作(自定义脚本代码)
config.yml 配置NLU和core模型
credentials.yml 连接到其他服务器的细节(不常用)
data/nlu.md 自定义NLU训练数据
data/stories.md 自定义stories
domain.yml 助手的定义域domian
endpoints.yml 连接到fb message等的轨道(不常用)
models/.tar.gz 模型及其参数文件
自定义的NLU模型

自定义NLU训练数据

1
cat data/nlu.md

自定义stories

查看写好的stories

1
cat data/stories.md

自定义动作acitons

actions有两种类型:

  • 直接回复,在domain.yml中定义templete
  • 自定义操作,在aciton.py文件中添加

自定义domain

1
cat domain.yml
  1. intents:用户意图
  2. entities:实体
  3. slots:槽
  4. actions:助手说和做的事情
  5. templates:助手根据actions具体要做的事情

定义模型配置

配置文件config.yml

  • police: core,决定对话状态跟踪策略
  • pipeline: NLU,Natural Language Understanding and Intent Classification,理解当前用户输入,提取意图。
1
2
3
4
5
6
7
8
9
10
language: "zh"

pipeline:
- name: "JiebaTokenizer"

policies:
- name: FallbackPolic
fallback_action_name: 'action_default_fallback'
nlu_threshold: 0.5
core_threshold: 0.3

训练模型

使用data下面的训练数据

-- core/ -- stories.md -- nlu/ -- nlu.json

自动对模型进行训练,训练好的模型将会被打上时间戳time stamp作为新的模型,保存在models目录下面

rasa train

SHELL启动

rasa shell

可视化界面

rasa x


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!