Rasa官方视频教程整理(三):Core

正在学习,持续更新,敬请关注

- Rasa官方视频教程整理(一):愉快的开始

- Rasa官方视频教程整理(二):管道中的组件

- Rasa官方视频教程整理(三):Core

                                    -对话管理-

    接下来讲解的是 Core 模块,Core的数据主要是写在 stories.md 中,文件结构如下:

stories.md

简单的用户输入表示为相应的意图和实体,而助手的回复表示为动作名称。

## 开头的行是故事的名字,写不写名字不强求,但是写了更方便调试。每个故事以 ## 开始,以下一个 ## 结束。

*  开头的是用户发送的消息,结构:*意图{ 实体标签:实体 }

-  开头的是助手的回复或动作,可执行一些自定义代码。

接下来我们在 stories.md 中插入一些代码:

 stories.md

注意:你的助手要尽快开始向真实用户学习。这样才会产生最佳的训练数据。

                        -域、自定义操作和跟踪-

域:建立对话管理模型的重要组成部分。定义了助 手的宇宙,包括让助手知道怎么去回答,下一句要说啥,需要记住啥东西,用户的信息所表达的意思是什么。域的配置在 domain.yml 文件中。

domain.yml 文件的内容

文件主要组成:意图(intents)、操作(actions)、响应模板(responses)

意图:助手能理解的意图的列表,写的是 nlu.md 中的意图。我们之前为nlu 提供了两个意图,所以要将其写入列表中。 

添加后的

实体:实体也决定了助手该如何响应,所以也该放在域文件中。建立实体,添加我们的两个实体:

添加的实体

动作:包含了所有话语和自定义操作,用于响应用户的输入。这些数据应该来自stories.md ,根据此文件,应添加如下代码:

添加的动作

响应模板:定义了助手在具体情况下的实际响应。话语是可以预测的,每个话语有多个模板。除普通消息外,还可以回复图像、按钮、自定义有效负载等,我们要在响应中添加这些。

responses

    自定义动作也可以完成添加响应模板所实现的功能,自定义动作就是助手的回应,其中有一些自定义代码,可以调用API 或链接到数据库。自定义操作在 actions.py 文件中进行。文件扩展名让我们知道,在这里可以写python代码。rasa 默认的此文件内容如下:

actions.py

name方法返回的是发回给用户的示例,要跟domain 文件actions下的示例对应起来。run中定义的是实际执行的操作,跟踪器和调度程序之类的对象是重要组成部分。跟踪器跟踪对话的状态,调度程序将相应发回给用户。我们的demo要修改这个自定义操作,实现助手提供找到的设施的信息

插槽(slot):助手的记忆。帮助助手记住重要细节(例如实体值),并在对话时在特定的上下文使用。要定义插槽,必须要包含两个信息(插槽名称、插槽类型),插槽名称用于匹配实体,type: text 会自动设置提取实体的值作为插槽,可通过设置auto_fill: False 属性来禁用此行为。在domain.yml 文件中添加:

domain.yml

下面来介绍各个类型的插槽:

text:只能显示Rasa是否设置了特定的插槽。

bool:用于处理获取两种可能的细节的情况。

categorical:当一条信息可能获得N个可能值时,进行分类

categorical

float:用于存储连续信息,可定义可能的最大值和最小值,超过最大值或低于最小值的都会设置为最大值填写的数字或最小的值填写的数字。

float

list:用于存储具有多个值的信息。

list

unfeaturized:存储一些个人信息。

unfeaturized

下面我们继续把代码改为如下所示:

domain.yml
domain.yml  { }中是助手获取到的实体
actions.py

相应的,要在故事中添加一些东西:

stories.md

最后,要在域中列出所有的插槽:

domain.yml

补充:Rasa有很多内置事件,如ResetAllSlots, 可以把所有的插槽重置为初始值。

endpoints.yml 文件中可以配置自定义操作的服务器,将这两行的注释去掉

endpoints.yml

训练助手:项目根目录下执行 rasa train。出现提示时用rasa run actions & rasa shell, 然后就可以跟助手聊天了。

还没开始做项目,有很多整理的不明白的地方,后面写的也不大好,希望明白的大佬能帮我纠正一下,在此多谢。

你可能感兴趣的:(Rasa官方视频教程整理(三):Core)