浅谈Chatbot的架构模型和响应机制

changyuanchn 2020-02-26

聊天机器人的不同架构类型

聊天机器人的架构模型通常是根据开发的核心目标所决定的。在普遍应用中,我们可以采用两种类型的响应方式,它们分别是:

  • 按照机器学习模型从头开始生成响应。
  • 使用启发式方法从预定义的响应库中选择适当的响应。

生成模型(Generative Models)

如下图所示(下文中出现的图像均源自pavel.surmenok),此类模型可用于通过原生的方式,开发出相当的高级智能化机器人。不过,由于它在实现中需要复杂的算法,因此这种聊天机器人在实际高并发量的场景中很少被使用到。

浅谈Chatbot的架构模型和响应机制

同时,其生成的模型比较难以构建和开发。为了培训此类机器人,开发人员需要花费大量的时间和精力,包括提供数百万种示例。虽然我们可以让深度学习的相关模型参与到对话的应用场景中,但是仍然无法确保此类模型能够生成正确的响应结果。

基于检索的模型(Retrieval-Based Models)

如下图所示,此类聊天机器人架构模型相对于上述生成模型更易于构建,也更加可靠。虽然无法实现100%的准确响应,但是您可以通过它来获悉可能的响应类型,并确保聊天机器人不会传递出不适当、或不正确的响应。

浅谈Chatbot的架构模型和响应机制

目前,基于检索的模型正在被广泛地使用在各种场景中。开发人员可以很容易地使用多种算法和API,在此类架构模型的基础上构建出自动化的聊天应用。通过充分地考虑消息和会话的上下文,此类模型能够从预定义的消息列表中提供最佳的响应结果。

聊天机器人的响应生成机制

下面让我们一起讨论聊天机器人是如何通过两种不同的方式,来理解用户的消息,以及获取消息的意图。

基于模型的启发式(Pattern-Based Heuristics)

通常,我们可以通过两种不同的方式来生成一个响应:

  • 使用if-else的条件逻辑
  • 使用机器学习分类器

其中,最简单的方法是:使用预定义的模型来定义一组规则。这些规则可以充当框架规则(framed rules)的条件。

如下面的代码段所示,为了编写出不同的模型和响应,人工智能标记语言(Artificial Intelligence Markup Language,AIML)被普遍地运用在聊天机器人的开发过程中。

浅谈Chatbot的架构模型和响应机制

借助自然语言的处理管道和预定义的丰富模型,AIML可以被用来构建出智能的聊天机器人。它们不但可以解析用户消息,还能够查找同义词和概念,标记出语音部分,并找出与用户查询相匹配的各种规则。当然,除非提前进行了特殊编程,否则这些机器人是无法自动调用机器学习算法、或任何其他API的。

使用机器学习进行意图分类

尽管基于模型的启发式方法可以提供良好的结果,但问题在于:它需要开发人员手动对所有的模型进行事先编程。而这恰好是一项非常繁琐的任务,尤其是在要求聊天机器人能够区分数百种针对不同场景的请求意图时。

通常情况下,我们可以通过为聊天机器人准备数千个可能面对的案例集合,来培训它们,进而挑选出合适的数据模型,以供应用反复进行学习。可以说,只有通过持续训练聊天机器人的应变能力,我们才能实现对不同请求意图的分类。

值得一提的是,scikit-learn是一个非常流行的机器学习库,它可以协助执行各种机器学习的相关算法。开发人员甚至可以选择使用诸如:api.ai、wit.ai和Microsoft LUIS等任何一种云端API。其中,作为第一个用于聊天机器人的机器学习类API,wit.ai最近已被Facebook收购了。

响应生成

一旦聊天机器人理解了用户的消息意图,下一步就需要生成响应了。通常有两种响应方法:

  • 生成简单的静态响应。
  • 获取基于意图的模板,并放入各种对应的变量。

开发人员可以根据实际需求和目的,选择生成响应的方法。例如:天气预报类聊天机器人可以使用API​​获取给定地理位置的天气信息,然后回复查询请求:“今天很可能下雨”,“今天是雨天”或者“下雨的概率为80%,请带好雨伞。”

当然,响应的类型(请参见:https://www.hiddenbrains.com/blog/4-ux-elements-for-engaging-and-interactive-chatbots.html)也可以根据具体用户的特征而有所不同。也就是说,聊天机器人可以研究和分析过往的聊天记录、及其相关参数,为用户量身定制响应语言。下图展示了单独的简单响应生成,与响应选择模块的不同:

相关推荐