Facebook_wit.ai机器人对话平台的几个槽点

fb-wit-ai.png

规则未必都需要对应一个 intent,同一条规则在不同场景下应该会存在共用关系。

规则的使用是自始至终的,从识别 intent 到后续的对话过程。

规则应当有抽取非可枚举值,也即子串的能力。

intent 与通常意义的槽可以看做是平级的实体,只是搜索策略不同。

规则应当分为共用和非共用,不同业务方应当使用不同的规则域。因为同一位置的同一个词可能会被不同规则抽取到不同的实体中,不同业务方之间不应相互影响,同一业务方在编写规则时也应当注意通用性。

规则应当有能力根据位置/角色识别同类实体。

相似问句语料的提供可以通过与规则编写相同的方式进行,搜索策略采用 trait 即可。

模型的训练是实时的且不可见的,通过 expression 可以即时验证结果。

还不了解的是:

如果一次标注中抽取了多个实体,那么在用户问句不完整的情况下,能否将原标注结果中全部实体的一个子集抽取出来。也即抽取的粒度,是一个实体,还是一次完整的标注?推测为一个实体,但当出现冲突时,与完整标注更接近的应当拥有更高的优先级。

fb-bot.jpg

由此看来:

Bot 的回复应当能够使用从用户问句中抽取过的实体值。

slot-based bot 的实体之间是平级关系,flow-based bot 的实体之间是依赖关系。

槽的必填/非必填、单值/多值、值的使用方式都被隐藏在调用的函数中。

对话状态追踪(DST)通过函数对 context 的管理来完成,候选动作排序也在函数内部处理完成,并以 context-key 的方式作用于后续对话。

与百度 UNIT 平台相比,传入 context 并由函数进行 DST 和 policy 的方式要比为答案提供设置准入条件的方法要更加灵活。

目前的 wit.ai 中似乎没有反映出多轮过程与答案系统分离的思想,还是较为原始的,从头至尾,非叶子节点中的 Bot sends 算作多轮过程,叶子节点的 Bot sends 作为答案。

Facebook 也发现对话系统能够利用的不应该只局限于用户问句中提供的信息,推出了 Bot engine,可以使用用户画像以及场景信息;意识到答案也不应当只局限于简单的文本,推出了 Built-in NLP for Messager,可以调用丰富的前端样式来做答案的展示。

对话系统应当具有节点间跳转的能力,wit.ai 采用 bookmark 来完成。阿里小蜜的在订票场景下的『换出发地』应当也是相同的原理;商品推荐时的『换一换』推测是通过该方法重复进入相同的推荐节点,但 context 中会记录该节点的进入次数,进而展示不同的结果。

常用的肯定、否定、请求更多等用户动作应被当做 intent 来处理,同时要注意不能只将其看做一些词的合集来处理,而是采用 trait 策略整体看待以识别意图。

bookmark 是可以跨 branch 访问的。

同一个 Session 中,通常只有一个 context,这个context 由我们自己的函数维护,根据 context 的不同做出不同回应,返回不同的值,而后续的对话过程又依赖于函数调用的返回值来做多轮对话的分支。

quick replies 可以每次单独设置,但也可以尝试把 keywords 类型实体的实体值词典利用起来。

还不了解的是:

废弃现有的 Stories UI 后,用户画像以及场景信息由 context 传递,由函数来做 DST,应当是没有疑问的。但前端模板的调用是由函数来做,还是由当前的 Bot sends 模块改进得到?若由函数来做,一是更为灵活,二是可以将多轮过程与答案系统分离,Bot sends 只起到澄清以及推进对话的作用,而不是同时兼具答案提供的功能。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容