Gavin老师Transformer直播课感悟 - Rasa项目实战之电商零售Customer Service智能业务对话机器人运行流程及项目Bug调试全程演示(四十七)

84 篇文章 16 订阅

   本文继续围绕工业级业务对话平台和框架Rasa,对Rasa项目实战之电商零售Customer Service智能业务对话机器人运行流程及项目Bug调试进行演示及剖析。

一、Rasa项目实战之电商零售Customer Service智能业务对话机器人运行流程及项目Bug调试全程演示

  1. 电商零售Customer Service智能业务对话机器人功能分析

在这个项目中会实现一些核心功能:

-查询订单状态

-取消购买的商品

-退回购买的商品

-检索是否有想购买的商品

-商品信息订阅功能

 2.  电商零售Customer Service智能业务对话机器人运行流程

运行命令rasa visualize获取对话流程可视化图:

下面是左边部分的流程图:

从图中可以看到,主要使用了以下forms:

-cancel_form:订单取消表格

-return_form:商品退回表格

-product_updates_form:产品更新表格

-product_stock_form:库存信息表格

-order_status_form:订单状态表格

每个form下面都有对应的action,这些actions会触发form “suvey_form”用于收集客户的反馈信息。

中间部分的流程图:

右边部分的流程图:

在运行命令rasa train进行训练时出现报错信息:

根据提示信息,需要在domain文件里添加version信息:

针对另外的报错信息:Can’t load class for name ‘DucklingHTTPExtractor’,在config.yml查找相关的配置信息:

这时可以把name更新为”DucklingEntityExtractor”:

重新运行命令rasa train进行训练,可以看到没有报错信息了:

通过docker启动duckling:

这时如果在控制台运行以下命令就会报错:

 3.  使用Rase shell --debug模式测试电商零售Customer Service项目及问题Bug思考

运行命令rasa shell –debug:

运行命令rasa run actions –debug 启动action server:

输入信息:Hi,对话机器人响应如下:

输入信息检查order status:

输出信息:

输入email信息:

输出信息:

根据上述选项选择之后输出信息如下:

根据用户输入的反馈信息对话机器人响应如下:

继续输入查询订单状态信息:

输出信息:

这时没有对话机器人没有再请求email,这是因为session中已经保存了email的值:

在action里定义了使用的数据库:

重启一个新的对话session,输入email:

由于数据库存在上面输入的email,所以对话机器人返回了order status,并且让用户提供反馈:

提供反馈信息后就结束了对话过程:

继续查询商品库存状态:

获得的反馈如下:

从上面信息看,虽然前面用户输入信息已经说明size为8,但是对话机器人仍然请求size,说明可能是对话机器人没有正确提取出关于size的实体信息,继续输入size信息:

从下面输出信息看,size的信息已经正确提取,但是在slot “size”里没有设置值:

当直接输入size时,slot “size”正确填充了值:

说明在slot “size”填充时存在bug,不能根据提取到的entity的值自动填充到”size”。

 4.  使用Rasa Interactive来尝试解决项目Bug

针对上面出现的slot “size”没有正确填充值的bug,启动interactive模式来进行调试:

Rasa interactive模式除了帮助定位问题外,还可以对不符合预期的对话预测行为进行纠正。

输入信息,然后根据反馈可以看到正确提取了size的值:

由于下面要执行的action不是预期的,所以输入No:

这时对话机器人给出下列action list:

我们预期的是执行form “product_stock_form”,所以选择这个form来执行:

可以看到requested_slot是”size”

输入size信息:

执行form “product_stock_form”后可以看到已经填充了slot “size”的值:

输入信息:

从输出信息可以看到slots已被正确填充:

运行form “product_stock_form”,并执行action “action_product_search”:

可以看到返回了查询结果:

最后运行form “survey_form”,选择rating选项5:

保存训练数据:

 5.  调整rule文件效果测试及问题分析

首先检查nlu.yml里的训练数据:

Intent “product_stock”会触发form “product_stock_form”,所以检查rules.yml中的rule:

我们期望的是当识别到product_stock时,直接进入form “product_stock_form”,所以修改如下:

重新训练模型:

发现报错:

所以需要删除stories里有冲突的数据:

重新训练后进入interactive模式:

输入信息:

分析输出信息,发现slot “size”并没有填充值:

 6.  调整slot配置测试及问题解决方案剖析

检查domain.yml文件里的slot mapping:

可以发现slot “size”的填充必须满足form “product_stock_form”被激活的条件,但是从rule的定义看当识别intent为“product_stock”时并没有激活form,所以上面关于rule的修改是无效的。

可以调整size的mappings,如下图所示,copy原有的mapping来增加一个mapping,然后在这个新增mapping的conditions里指定intent:product_stock,这样当识别到这个intent时,就会把提取到的entity的值映射到slot “size”中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值