开头先给rasa做个广告
rasa官网 https://rasa.com/
github的rasa页 https://github.com/RasaHQ/rasa
文档很重要 https://rasa.com/docs/rasa/
rasa官方Community https://forum.rasa.com/
rasa中国官方社区QQ群 820037374
第一个问题: 为什么选 rasa
一张图直白的说明了问题,对于我们要实现NLU+DM+NLG,rasa给了一个实现,而且是开放式的框架结构,非常方便扩展,还是开源的。当然也有商业的,想花钱的请直接联系。
当然在接触rasa之后,包括群里很多伙伴都说rasa也是个坑,原型好出,继续深入就由很多东西要改。我也发现了,包括用form action的过程,就直接自己改了源码的逻辑。
第二个问题:rasa 怎么用
以rasa目前的成熟程度来看,还是需要有一定的开发基础,至少从搭建环境、调试代码等方面都能自己来,咱先不说完善rasa了,毕竟rasa自己也在不断做新功能,很快你就发现rasa没那么理想,还是很多都得自己写,但是呢,有个框架又比什么都没有要好。
第三个问题:还有什么可选
Howdy,Botkit和Microsoft Bot Framework吧
- 它们都是开源的。
- 它们与当前流行的消息平台,如Slack,Facebook Messenger,Twilio等都有一定的整合。
- 它们都有很好的文档文件。
- 它们都有活跃的开发者社区。
现在呢,大概还可以考虑的是百度UNIT
不过我确实没有深度尝试这些,rasa还没玩够呢。
言归正传 - RASA框架介绍
The steps are:
1 The message is received and passed to an Interpreter, which converts it into a dictionary including the original text, the intent, and any entities that were found. This part is handled by NLU.
各种渠道的消息进入Interpreter,然后被转换成一个大的字典结构,里面包括原始的消息文本、意图、以及识别出来的实体(字段信息),这个部分就是这个的NLU了2 The Tracker is the object which keeps track of conversation state. It receives the info that a new message has come in.
Tracker这个是整个对话状态跟踪部分,每个渠道的用户消息单独一个Tracker,记录对话过程。3 The policy receives the current state of the tracker.
4 The policy chooses which action to take next.
策略就是根据tracker的过程,匹配下一步的行动。这个也是Core的核心。5 The chosen action is logged by the tracker.
Action也会被tracker记录,做为策略的输入信息。6 A response is sent to the user.
Action的执行结果,可以返回一条消息。
NLU
Rasa NLU是可以独立使用的,用来将一句文本,解析出来:意图,实体信息
NLU部分的训练数据,Rasa本身有两种存储格式,一种是markdown格式的,一种是json格式。
md格式的比较方便人来阅读,但是缺点是不好批量制作
json格式读起来稍微费点劲,优点是,有工具协助批量制作。
JSON Format:
批量制作工具:
Chatito: 在线的IDE工具 https://rodrigopivi.github.io/Chatito/
具体的使用办法,详见 用Chatito生成训练数据
Core
Rasa Core部分的功能也比较多
- Stories 这个部分主要是Core的训练数据,也就是什么样的对话过程,触发什么样的行为
- Policies 这个部分是模型,也就是支持不同的模型来触发行为
- Domains 这个是整个的配置信息,里面包括了所有的意图、槽位、回复模板等
其他的每个部分都会在后续的使用过程中,逐步介绍。