Gavin老师Transformer直播课感悟 - Rasa对话机器人项目实战之银行金融Financial Bot架构视角下的Training及Reference全生命周期、功能实现解析(五十四)

84 篇文章 16 订阅

    本文继续围绕工业级业务对话平台和框架Rasa,对Rasa对话机器人项目实战之银行金融Financial Bot架构视角下的Training及Reference全生命周期、功能实现、及产品的二次开发进行分析。

一、Rasa对话机器人项目实战之银行金融Financial Bot架构视角下的Training及Reference全生命周期、功能实现、及产品的二次开发

  1. Rasa 3.X中Graph Architecture解析及其在银行金融Financial Bot中的落地实现

   上面的DAG图可以分为两大部分,一是语言理解部分(NLU),另外一部分是对话决策部分(使用多个policies),最后由Public Ensemble组件来选择最后预测的action,如下一步要执行的微服务action,或者也可以是domain文件里定义的模板化responses。

从训练的角度讲,policies所使用的数据主要来自于stories文件,在这里可以通过不同的stories文件来切换不同的上下文(指以form为核心的不同业务场景),如:

另外也会使用定义的rules来进行预测。

NLU部分的训练数据主要来自nlu.yml文件:

关于config.yml,使用了recipe的概念,可以基于它来构建对话机器人,另外还定义了NLU部分的pipeline,以及对话决策使用的policies部分。在NLU部分使用了面向专业领域的实体提取器如第三方的DucklingEntityExtractor和SpacyEntityExtractor来完成entities的提取,由于这些是预训练好的模型,所以使用时不需要太多的训练数据,另外提取准确度也可以得到提升:

关于nlu.yml文件,定义了各个intents及其训练数据,需要进行标注来提取entities:

另外有的intent的训练数据所表达的意图不是很明确,如果在其它的intent的训练数据中出现了类似的数据,可能会造成识别intent时区分度很低,导致触发fallback处理的情况:

关于同义词技术的使用:

关于rules.yml,一般处理固定内容如常见问答faq,闲聊,触发或者提交form,转人工服务等都会使用rules:

     另外从图中可以看到,各个组件可以并行运行,不完全是按照pipeline的方式顺序执行。

在DAG图中,可以看到用户输入信息经过DIETClassifier处理后输出intents和entities。

譬如针对这句话:"I am looking for Chinese food",NLU处理后的输出如下:

{

    "text": "I am looking for Chinese food",

    "entities": [

        {

            "start": 8,

            "end": 15,

            "value": "chinese",

            "entity": "cuisine",

            "extractor": "DIETClassifier",

            "confidence": 0.864

        }

    ],

    "intent": {"confidence": 0.6485910906220309, "name": "restaurant_search"},

    "intent_ranking": [

        {"confidence": 0.6485910906220309, "name": "restaurant_search"},

        {"confidence": 0.1416153159565678, "name": "affirm"}

    ]

}

 2.  Rasa Architecture中的Agent、Channels、NLU Pipeline、Dialogue Policies、Tracker Store等解密

下面是Rasa提供的对话机器人架构图,可以看到

-Agent就是Rasa server,基于Sanic 构建

-Rasa server启动后会操作两大核心部分:NLU pipelines和Dialogue Policies

-用户通过channel和Rasa server进行交互

-Agent内部会使用核心组件Conversation Tracker来动态跟踪和更新整个对话的状态,包括intents,entities,slots和active loops等信息

-Tracker Lock用于识别与对话机器人连接的不同用户的身份信息

-Filesystem用于存放训练后的models和训练数据

-基于Rasa SDK的Action Server称为对话机器人的微服务,它是使用action和events来驱动的

-Agent和Action Server是基于HTTP进行通信的,并通过json封装数据,Rasa的Action Server是用Python实现,你也可以使用其它语言来自定义自己的Action Server

 3.  Rasa Component Training Lifecycle组件实例化、训练及持久化解密

    从Rasa文档中提供的这个图可以看到,各个组件在训练时存在依赖关系, 在训练时先要进行组件实例化,然后进行训练,最后再进行持久化操作来保存训练完成的组件,最后生成一个model metadata文件,训练完成加载模型时,需要使用这个metadata文件。

训练后会在models目录下生成压缩文件:

 4.  Rasa中多任务切换系统stories文件的设计及最佳实践及其在Financial Bot具体应用

    下面这个story是关于credit card支付,搜索交易信息,或者进行转账之间的form切换使用的训练数据,可以看到:

intent “pay_cc”会激活form “cc_payment_form”,这里使用了”or”的条件来定义在这个story中会使用的其它intents,当识别到这些intents时会触发action “action_switch_forms_ask”来询问用户是否需要切换form,这里的slot “next_form_name”的值是从“action_switch_forms_ask”中获取的。如果是deny的状态,那么又会回到当前运行的form “cc_payment_form”

     下面这个story是关于credit card支付,搜索交易信息,对是否切换form进行确认,当拒绝后询问用户下一步操作的训练数据,可以看到:

intent “pay_cc”会激活form “cc_payment_form”,这里使用了”or”的条件来定义在这个story中会使用的其它intents,当识别到这些intents时会触发action “action_switch_forms_ask”来询问用户是否需要切换form,这里的slot “next_form_name”的值设置为“transaction_search_form”。如果识别到intent为”affirm”,则执行action “action_switch_forms_affirm”,然后设置slot “previous_form_name”为”cc_payment_form”,并触发”transaction_search_form”;如果是deny,则触发action “utter_ask_whatelse”

    下面这个story是关于credit card支付,转账,对是否切换form进行确认,当拒绝后询问用户下一步操作的训练数据,可以看到:

intent “pay_cc”会激活form “cc_payment_form”,另外也定义了intent “transfer_money”,当识别到这个intent时会触发action “action_switch_forms_ask”来询问用户是否需要切换form,这里的slot “next_form_name”的值设置为“transfer_money_form”。如果识别到intent为”affirm”,则执行action “action_switch_forms_affirm”,然后设置slot “previous_form_name”为”cc_payment_form”,并触发”transfer_money_form”, 然后会触发action “action_switch_back_ask”询问用户是否需要切换回到之前的form,如果是deny,则触发action “utter_ask_whatelse”

    下面这个story是关于credit card支付,搜索交易信息,对是否切换到之前的form进行确认,当确认后会回到之前运行form的训练数据,可以看到:

intent “pay_cc”会激活form “cc_payment_form”,这里使用了”or”的条件来定义在这个story中会使用的其它intents,当识别到这些intents时会触发action “action_switch_forms_ask”来询问用户是否需要切换form,这里的slot “next_form_name”的值设置为“transaction_search_form”。如果识别到intent为”affirm”,则执行action “action_switch_forms_affirm”,然后设置slot “previous_form_name”为”cc_payment_form”,并触发”transaction_search_form”,然后会触发action “action_switch_back_ask”询问用户是否需要切换回到之前的form,如果是affirm,则触发action “cc_payment_form”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值