简要谈谈对rasa目前的学到的简要总结

这段时间主要是根据理解到的rasa的原理,实现一个可以调用天气功能的bot。简要分享一下自己遇到的坑,以及解决方式。

01 当测通要调用的天气接口的API后,选择要传的参数城市后,才能得到不同城市的天气情况。所以如何定位到位置信息,是需要解决的第一步。

rasa提供了实体(entity),通过实体可以将地址信息(address)识别出来。但是有一个问题需要注意,因为我和bot的对话是用中文写的,所以在配置pipeline的时候,要注意到

自带的WhitespaceTokenizer是不会识别中文实体的,所以要改为可以识别中文实体的component,我选择的是jieba自带的compoent(JiebaTokenizer),这个组件可以识别中文的实体信息,一定要把language改为'zh'。

02 通过response的action调用api action,在action.py文件中配置天气的函数。然后获得天气的信息后,通过

dispatcher.utter_message(text=detail)

返回给user。

03在rasa train的时候,遇到一个问题,当我问完具体位置的天气怎么样的时候,bot却预测不到action的信息。而这个信息在story的部分是有设置的。

- story: request_weather
  steps:
  - intent: greet
  - action: utter_greet
  - intent: weather_inform
  - action: action_ask_weather
  - intent: affirm
  - action: utter_thanks
  - intent: goodbye
  - action: utter_goodbye

如代码中的action_ask_weather并没有被识别出来,当把pipeline中core部分的RulePolicy去掉后,就可以调用到action_ask_weather了。

04 在action.py中,是通过track的slot来捕获,识别到的实体部分的。所以要把实体可以在action.py中调用得到,一定要通过slots记住实体,通过get_slot获得。

address=tracker.get_slot('address')
entities:
  - address
slots:
  address:
    type: text
    influence_conversation: false

05 在识别出action的api后,在调用后面的内容的时候,发现每次预测的都是action调用的api部分,并没有按照自己的story部分的情节去进行。然后重新回到pipeline部分,将epoch的100改为300,然后就可以正常识别到后面的内容了。可能的原因是100的时候,泛化能力还是不强的原因吧。

06 一定要细心,我发现在这次设计bot的时候,对于不熟悉的事情,一定要遵照原有的格式进行,而不是自己瞎折腾。一定要细心,我就是因为这个问题,浪费了很多本可以去做别的事情的时间。

07 rasa shell --debug这个命令很有用,可以看到是哪里出错误了,对于理解rasa可以更方便,也更容易找到自己的错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值