本文继续围绕工业级业务对话平台和框架Rasa,深入解析Rasa与ElasticSearch整合项目案例数据及配置工作机制、最佳实践,以及对源码进行剖析。具体包括语言理解部分(NLU,意图识别和提取实体信息);使用的policies,训练数据stories,rules的设置(DM,对话管理)等内容。
一、Rasa与ElasticSearch整合项目案例数据及配置工作机制、最佳实践、及源码剖析
- domain.yml中的config及session_config工作机制、最佳实践、自定义源码剖析
Domain配置定义了对话机器人能够实现哪些功能,譬如能够识别哪些意图(intent),有哪些slots,entities,actions,responses,以及forms等,这些都是在domain.yml文件里配置的。如果要了解任何一个Rasa项目,都需要重点分析domain配置信息,并且建议从分析domain配置开始来理解项目。
在Rasa 3.x中,domain.yml中的”config:store_entities_as_slots”可以去掉或者把它的值设为”false”,在之前的版本中,只要entity和slot的名称相同,就会自动把提取的entity的值填充到slot中。在3.x版本中,推荐使用slot全局配置方式,如下图中可以通过”conditions”来控制slots的填充,避免因为同一slot也在其它场景中使用而导致的slot设置状态混乱的问题:
接下来可以在定义form时使用上图中配置好的slots:
Session_config:
-session_expiration_time:设置对话session超时时间,单位是分钟,如果设置为0则永远不会超时,一个session开始时会触发default action “action_session_start”,其默认行为是把来自前一个session的已经存在的slots带入到新的session中,覆写这个action的使用场景包括:
-使用通过一个外部API调用获取的slots来初始化tracker
-使用一个对话机器人消息来启动对话