Rasa Core基础

Rasa Core是Rasa系统中负责对话管理的部分,主要职责是记录对话的过程和选择下一个动作;
Rasa Core是一种机器学习驱动的对话管理引擎;

领域domain

官方链接:https://rasa/docs/rasa/domain

包括:

  • 意图(intent)
  • 实体(entity)
  • 词槽(slot)
  • 动作(action)
  • 表单(form)
  • 回复(response)

说明:reponse此字段内容,可以放到data/responses.yml里;
Responses go under the responses key in your domain file or in a separate “responses.yml” file.

故事(story)

官方链接: https://rasa/docs/rasa/stories

格式

stories:
- story: collect restaurant booking info  # name of the story - just for debugging
  steps:
  - intent: greet                         # user message with no entities
  - action: utter_ask_howcanhelp
  - intent: inform                        # user message with entities
    entities:
    - location: "rome"
    - price: "cheap"
  - action: utter_on_it                  # action that the bot should execute
  - action: utter_ask_cuisine
  - intent: inform
    entities:
    - cuisine: "spanish"
  - action: utter_ask_num_people

动作(action)

官方链接: https://rasa/docs/rasa/actions

默认动作

名称功能(效果)
action_listen停止预测动作,等待用户输入
action_restart重启对话过程,清理对话历史和词槽;用户可以通过在客户端中输入 /restart 来执行此动作
action_session_start所有的对话开始前都会执行此动作,启动对话过程
action_default_fallback重置系统状态至上一轮(就像用户从来没说过这句话,系统也从来没做出反应一样),并将渲染utter_default模板作为给用户的信息
action_deactivate_loop停用当前已经激活的active_loop,并重置名为requested_slot的词槽
action_two_stage_fallback用于处理NLU得分较低时触发的fallback逻辑
action_default_ask_affirmation被action_two_stage_fallback使用,要求用户确认他们的意图
action_default_ask_rephrase被action_two_stage_fallback使用,要求用户重新表述
action_back回退一轮,回退到最后一次用户消息前;用户可以用**/back**来执行这个动作

词槽(slot)

[重要]influence_conversation

开发者可以通过influence_conversation来设置该词槽对对话过程是否有影响;如为false,该词槽仅用于存储信息,不会影响对话行为

词槽的类型

  • text
  • bool
  • category
  • float
  • list
  • any

策略(policy)

策略负责学习故事,从而预测动作
策略需要通过特征提取组件(featurizer)将故事转换成对话状态,进而得到对话状态特征,按照对话特征预测下一个对话动作;
在Rasa中,我们可以同时拥有多个策略,这些策略可独立进行训练和预测,最后通过优先级及预测得分共同决策

内建的策略

策略名称描述
TEDPolicyTED是Rasa自行开发的一套对话预测算法,采用基于transformer的方案将当前的会话映射成一个对话向量,找到和这个向量最近的已知动作的对话向量
MemoizaionPolicy这个策略比较简单,直接记住历史中出现的状态和对应的动作,把这种关系做成字典;在预测时,直接查询相关的字典,如果有这样的状态,则将对应的动作作为结果;如果没有,则预测失败
AugmentedMemoizationPolicy这个策略和MemoizationPolicy的工作原理一致,只是它有一个遗忘机制,会随机地遗忘当前对话历史中的部分步骤,随后试图在训练的故事集合中寻找和当前历史匹配的故事;
RulePolicy这个策略是规则驱动的,它合并了Rasa 1.x中所有基于规则的策略MappingPolicy,FallbackPolicy,TwoStageFallbackPolicy和FormPolicy

策略的优先级

在Rasa中,每个策略独立预测下一个动作后,会使用得分最高的动
作。在得分相同(通常都是满分1分)的情况下,策略之间是有优先级
的(优先级数值越高,策略越优先)。

端点(endpoint)

endpoints.yml定义了Rasa Core和其他服务进行连接的配置信息,这
种信息被称为端点(endpoint)。目前支持的端点有event broker、
tracker store、lock store、动作服务器(action server)、NLU服务器、
NLG服务器和model storage。

Rasa SDK和自定义动作

Rasa本身包含Rasa SDK,所以安装了Rasa也就自动安装了Rasa SDK;如果只使用Rasa SDK而不想安装Rasa(如在生产环境中),那么可以按照如下方式安装:

pip install rasa-sdk

自定义动作

  • tracker对象

  • 事件对象
    在自定义动作中,如果想要更改对话状态,则需要用到事件(event)对象;

运行自定义动作

rasa run actions

Rasa支持的客户端

在绝大部分情况下,用户都是使用各种即时通信软件(IM)来和对话机器人进行沟通的
在Rasa中,负责和IM连接的组件称为connector; connector负责实现通信协议;
Rasa支持同时使用多个connector(也就是同时连接多个IM),开发者需要在credentials.yml文件中配置如何连接客户端;
值得注意的是,由于Rasa WebChat使用的底层协议是socketio,所以配置里使用的是socketio;

更多推荐

<Rasa实战> 内容摘要(二)