Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之教育领域Education Bot项目Debugging进阶实战(六十二)

84 篇文章 16 订阅

   本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之教育领域Education Bot项目Debugging过程中关于NLU组件加载运行,各个policies如何进行预测,ResponseSelector如何选择response等内容进行详细分析。

一、Rasa对话机器人项目实战之教育领域Education Bot项目Debugging进阶实战

  1. Education Bot对RulePolicy、AugmentedMemoizationPolicy、TEDPolicy使用Debugging实验分析

输入信息:

对话机器人反馈如下:

可以看到选项1对应的intent为get_started_playground,为了对这个intent进行处理,可以检查训练数据,首先检查rules文件,发现没有这个intent相关内容,然后检查stories,发现在get_started_playground.yml文件中存在以下数据:

从数据中可以看到,intent “get_started_playground”会触发action “utter_playground_intro”,检查domain文件,找到这个action的定义:

执行完action “utter_playground_intro”之后会执行action “utter_ask_playground_help”:

根据stories,如果确认执行上面的action,那么会激活form “playground_form”,如果是”No”,则执行另一个action “utter_interested_in_installation”。

输入No,则按照pipeline的配置进行处理:

下面是DIETClassifier的process方法,在这个方法中会对用户输入信息进行intent的预测以及排序处理,然后添加到message中,也会提取entities信息并添加到message中,另外也会根据配置要求添加诊断信息,所以最后返回的是所有这些信息的一个组合:

执行FallbackClassifier的process方法:

这是FallbackClassifier的process方法,根据配置进行fallback处理,包括设置对应的intent:

由于输入No,所以识别的intent为”deny”,提取实体信息为空:

执行验证提取的slots操作:

基于识别到的intent运行AugmentedMemoizationPolicy,可以看到当前tracker中的状态信息:

这是config中的配置:

下面显示的是使用AugmentedMemoizationPolicy来预测系统级别的action “action_listen”的信息:

预测完成后输出信息:

 2.  Education Bot在stories中对AugmentedMemoizationPolicy具体应用详解

下面这条消息表示AugmentedMemoizationPolicy根据stories进行匹配时找到了这个action:

可以在下面的stories训练数据中找到这个action:

根据config配置,使用AugmentedMemoizationPolicy预测next action之后,还会继续使用TEDPolicy进行预测,最后由policy ensemble组件根据各个policies的预测结果进行选择,从以下信息看,最终是选择AugmentedMemoizationPolicy预测的结果,所以confidence为1.00:

 3.  Debugging模式下的Education Bot对TEDPolicy使用源码解析

下面是TEDPolicy的预测方法中的代码,首先从tracker中创建TED模型数据,然后调用模型的推理方法进行预测,对预测得到的confidence进行排序,调用内部方法_prediction返回预测结果:

下面是_prediction方法,使用PolicyPrediction来封装预测结果信息:

 4.  Next Action决策器DefaultPolicyPredictionEnsemble算法剖析

这是DefaultPolicyPredictionEnsemble,它继承自PolicyPredictionEnsemble和GraphComponent,作用是根据规则从各个policies的预测结果中选择最好的预测结果:

具体规则如下:

1)"No user"的预测结果(指系统级别的)重要性高于所有其它的预测结果

2)End-to-end的预测结果重要性高于所有其它基于用户输入的预测结果,前提条件是在ensemble中不存在"No user"的预测结果

3)给定两个预测结果,如果其中一个预测结果的最大confidence大于另外一个预测结果的最大confidence,那么confidence值更大的预测结果被认为更好,这与做出这两个预测结果的policies的优先级无关

4)给定两个预测结果,如果它们的confidence相同,具有更高优先级的policy所预测的结果会被认为更好

需要注意的是如果允许优先级可以被视作无差别 (coincide),那么就会采用第一个预测结果。

预测完成后tracker最新的状态信息:

然后会删除使用的lock:

 5.  专门为faq及chitchat设计的ResponseSelector运行机制详解及Debugging实验

输入Yes确认后输出:

这时就会进入faq的状态,训练数据如下:

关于faq,会使用ResponseSelector进行预测。

输入信息:

执行完各个NLU组件之后,就会执行ResponseSelector的process方法,可以看到使用了3种selector key来处理不同种类的用户输入信息:

这时NLU处理后的intent和entities信息:

输出信息:

在domain中会定义faq相关的actions:

然后由ResponseSelector自动根据用户输入来预测选择上面配置的哪一个action。

 6.  Debugging模式下的Education Bot出发out of scope机制分析实验解密

输入信息:

这时识别到的intent为out_of_scope:

预测的action:

这是因为stories训练数据中存在这样的action:

可以看到最终使用AugmentedMemoizationPolicy预测的结果,然后会使用ResponseSelector从上面说的3种分类的”out_of_scope”对应的responses中选择一个response:

这是相关NLU部分的训练数据:

最后输出信息:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值