Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data详解(七十二)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data,end-to-end的训练方式及使用时需要注意的事项,checkpoints的使用,如何在特定条件下使用rules等方面进行详细分析。
一、Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data详解
- Education Bot项目Policies Data中Stories和Rules分离的架构设计
以下是stories训练数据样例,可以看到在steps中定义了每个intent及对应的action,而定义在rules.yml中的MemoizationPolicy或者AugmentedMemoizationPolicy会根据对话内容到stories中查找是否有匹配的数据,如果找到匹配数据,则会直接使用数据中的action来作为预测的action。这两种policies的预测confidence要么是1.0(匹配到数据),要么是0.0(没有匹配到数据),所以如果发生预测错误而confidence为1.0时,没有其它的policy可以覆盖其预测结果。
Stories数据是用来训练对话管理模型的,通过训练从而使模型能够泛化到其它当前未知的对话路径。
关于格式:
一个story就是用户与对话机器人的一段对话的数据表示,其数据格式包括:
-把用户输入表达为intents(和entities,如果存在)
-把对话机器人的responses和actions用action key来表示
下面是story数据格式的样例:
2. Policies Data中User Messages、Actions及Events三个组件解析
关于User Messages:
在写stories时,不需要处理用户发送消息的实际内容,而是利用NLU pipeline的输出,即使用intent和entities的组合来表示用户针对某个意图可能会发送的所有消息。重要的是需要包括entities,这是因为policies是基于intent和entities的组合来预测下一个action的。
关于Actions:
所有对话机器人执行的actions和responses都是定义在stories中的action key下面,stories中的responses来自domain文件中responses key下面的内容,而stories调用的自定义actions来自domain文件中actions key下面的内容。
关于Events:
在训练时,Rasa不会调用action server,这就意味着对话机器人的对话管理模型不知道一个自定义action会返回什么事件。基于此,在stories中必须明确写出触发slot设置或者激活、不激活form的事件。如果一个slot是通过自定义action来设置的,那么在stories中需要在action后面添加slot_was_set事件,下面是样例:
3. Form Events详解及案例分析
当处理stories中的form时,需要注意以下三种类型的事件:
-form action事件:当第一次启动form时会使用,另外在form激活时需要继续执行form action
-form激活事件:在第一个form action事件发生后使用
-form不激活事件:用来使form进入不激活状态
4. Checkpoints详解及案例分析
你可以使用checkpoints来模块化或者简化你的训练数据,虽然checkpoints有用,但是不要过度使用它。使用过多的checkpoints会很容易导致你的stories训练数据很难被理解,从而降低训练速度。更好的方式是使用Rules或者ResponseSelector。
下面是包含了checkpoints的stories数据样例:
5. OR statements详解及案例分析
使用or关键字可以是stories更短,特别是处理多个意图或者slot events时。如果你要求用户确认某件事,譬如可以把affirm和thankyou这两个intents都用同样的方式进行处理。下面这个story在训练时会转换为2个stories来处理:
下面是处理多个slots事件的样例,譬如slot的值可以设置为两个值之一:
6. End-to-end Training工作机制解析及案例分析
当使用end-to-end training时,不需要处理通过NLU pipeline提取的基于用户消息的intents,或者单独使用domain文件中的responses。你可以把用户消息和对话机器人的responses直接包括在stories中,以下是数据样例:
你可以以end-to-end的格式来混合使用训练数据,end-to-end的数据具有被标注的intents和actions。当使用End-to-end的方式时,NLU pipeline从用户输入中识别的intents和提取的entities都会被忽略,policies可以直接基于用户文本数据进行预测。
只有Rule Policy和TED Policy可以进行end-to-end训练。
RulePolicy:当rules定义的用户文本数据与预测时的用户输入相同时才会使用RulePolicy进行匹配
TEDPolicy:通过另外的神经网络来传递用户消息从而生成文本的hidden representations。为了获取比较健壮的表现,需要提供足够的stories训练数据用于捕获基于各种end-to-end对话turn的用户文本数据。
你可以在用户文本数据中添加entity tag,这样就可以被TEDPolicy所提取,语法格式同NLU训练数据使用的格式。以下是样例:
另外还可以使用bot key来指定你想让对话机器人说什么:
下面是混合使用以上两种end-to-end方式的样例:
对于TEDPolicy来说,end-to-end training要求更多的参数,所以要求有更多的计算资源,资源数量取决于在stories中包含了多少end-to-end的对话turns。
7. Rules for the Conversation Start详解及案例分析
Rules描述了需要总是遵循同样的对话路径的较小的对话片段,rules被用于训练RulePolicy。Rules被定义在rules key的下面,一个rule有一个step key,包含了与stories一样的步骤列表,另外还可以包含conversation_started。为了只在对话的开始使用一个rule,可以这样配置:
8. Rules with Conditions详解及案例分析
可以使用condition key来指定当满足这个条件时才能使用rule,样例如下:
9. Skip Waiting for User Input at the End of a Rule
默认情况下,当rules完成最后一步后会等待用户的下一个输入,如果你想跳过这个状态而把下一个action的预测转交给其它的story或者rule,那么可以使用以下配置(设置wait_for_user_input: false):
10. Form下的ActionExecutionRejection机制详解及实例解析
当一个form处于激活状态时,如果用户输入不能填充所请求的slot,那么form action的执行就会被拒绝。这时form会自动抛出异常:ActionExecutionRejection。作为你的自定义验证逻辑或者slot mapping处理的一部分,你也可以有意抛出ActionExecutionRejection来终止form action的执行。
在有的情况下,当用户不想再继续业务处理时,你可以使用一个默认action “action_deactivate_loop”来使form进入不激活状态,并且重置所请求的slot,下面是样例:
Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Policies Data详解(七十二)相关推荐
- Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目NLU Data详解(七十一)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目NLU Data的分层结构,数据格式,在意图分类和实体提取时如何使用正则表达式以及lo ...
- Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Form解析及自定义全解(七十五)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目关于Form的定义,如何激活一个form或者使当前运行的form进入不激活状态,如何在 ...
- Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Slots解析、Slot Validation Action剖析(七十四)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目Slots的各种类型及运用实践.如何通过Slot Validation Action来 ...
- Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目NLU Pipeline、Dialogue Policies、及多意图识别(七十)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目NLU Pipeline的各个组件.Dialogue Policies使用的组件,以及 ...
- Gavin老师Transformer直播课感悟 - 图解Rasa对话机器人项目实战之教育领域Education Bot项目及综合调试Debugging实战解密(七十七)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目的架构进行分析,并通过debug模式演示与分析Rasa Agent如何与核心组件NLU ...
- Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十九)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之银行金融Financial Bot智能业务对话机器人的主要业务功能所使用的微服务进行解析,并通过Rasa Interactive的调试 ...
- Gavin老师Transformer直播课感悟 - Rasa项目实战之电商零售智能业务对话机器人配置详解与Debugging演示(八十七)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之电商零售智能业务对话机器人系统所使用的各项配置进行详细剖析,并通过debug模式来理解在下面展示的Rasa graph archite ...
- Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十一)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之银行金融Financial Bot智能业务对话机器人的主要业务功能所使用的微服务进行解析,并通过Rasa Interactive的调试 ...
- Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人架构与流程及Rasa Interactive实验剖析(八十)
本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之银行金融Financial Bot智能业务对话机器人架构.流程进行解析,并通过Rasa Interactive分析配置文件中各个组件的 ...
最新文章
- 深度丨走向人工智能时代,百度的延承和蜕变
- python推荐书-python的书推荐
- QT的QClipboard类的使用
- jzoj4051-序列统计【NTT】
- 在Docker里面安装Ubuntu,并且使用ssh进行连接
- 计算机网络(二十四)-路由算法及路由协议
- mysql geometry 附近的人_mysql中geometry类型的简单使用(搜索附近的人)
- 因合约代码Bug,约2.2亿元11539枚以太币被永久锁定
- kubernetes资源--RC和RS
- 编译问题处理:undefined symbol: OPENSSL_init_crypto
- 涛思数据库(二)——上手使用
- Jsonviewer2 for Notepad++ 64 bit/位
- 微信支付服务器端php,APP微信支付php服务端函数方法
- 实现顺序表各种基本运算的算法
- OpenGL实验2:图形的旋转、平移、缩放
- Asset Catalog Compiler Warning Group
- 0521MySQL常用操作---设置更改root密码、数据库备份恢复、连接mysql、mysql用户管理...
- 【Android应用】 苏州实时公交
- 大数据笔记10—java基础篇6(集合1-Collection)
- jQuery框架介绍-简化js
热门文章
- 【MySQL逻辑运算符、模糊查询和ifnull】
- C# 运用 System.Drawing 绘制卡片 (解决:去掉DrawString写出的字体黑边)
- 双摄方案android,双摄手机都在用,但双摄有几种类型你知道吗?
- 请善待老公,其实男人不容易
- H5盲盒抽奖系统源码
- 【零基础强化学习】强化学习中的有模型和无模型
- R5 5500u怎么样 相当于什么水平
- 基于卷积网络的人脸表情识别及其应用
- 基于空间的图卷积网络和基于谱的图卷积网络(spectral-based GCN and spatial-based GCN)
- Tensorflow中简单的音频识别