导读:在过去的20年中,互联网把人们带入了一个全新的时代。在这个全新的时代,我们创造出了4种连接方式:人和物品之间的连接;人与人之间的连接;人和信息之间的连接;人和设备之间的连接。

但连接不是目的,它只是为交互提供相应的服务。对我们每一个人来说,最友好最自然的交流方式就是采用自然语言的方式进行交互。并通过自然语言的方式进行交互完成对话系统的设计与实现。


前文已经详细描述了对话系统的发展历程。这里笔者只想通过介绍几个行业对话系统的架构实现,抽象出它们的共性,为读者在搭建自己的对话系统提供便利。


阿里小蜜

阿里巴巴于2015年7月推出了阿里小蜜产品,在面世的仅仅几年中,阿里小蜜发展之迅速令人难以想象。阿里小蜜给出了一个典型的智能对话系统的架构,如图9-4所示。


这个架构不失一般性,放到任何一家公司,只要替换相应的底层数据,做好与数据对应的具体算法及服务,就可以成为一个实实在在的落地项目。

从上面这张智能对话系统的架构图中可以看出,自然语言处理 ( NLP ) 是对话系统的核心部分。通过阿里巴巴公开分享的技术文档来看,在阿里小蜜中有一个比较核心的功能模块。这个核心模块功能,除了自然语言理解和对话管理之外,还包括智能问答模块用来完成问答类任务,以及智能聊天用来完成闲聊类任务。它对外提供了 SaaS 平台支持、PaaS 平台支持以及 BotFrameWork 支持。BotFrameWork 为用户提供可定制化智能助理平台服务。图9-5充分体现了分层架构的思想,也清晰地讲解了阿里小蜜的架构。


在核心模块中可以突显出几个重要的知识点:

  • 自然语言理解 NLU 是整个系统的核心;

  • 智能问答和智能聊天是游离在 NLU 功能模块外的;

  • 对话系统提供不同平台的服务功能。

自然语言理解的语义表示主要有分布语义表示 ( Distributional Semantics )、框架语义表示 ( Frame Semantics ) 和模型论语义表示 ( Model-theoretic Semantics ) 3种方式。一般地,在对话系统自然语言理解采用的是 Frame Semantics 表示的一种变形,即采用领域 ( Domain )、意图 ( Intent ) 和属性槽 ( Slots ) 来表示语义结果,如图9-6所示。



同时小蜜的技术分享文档中也给出了自然语言理解的处理逻辑流程。这张图主要讲述了阿里小蜜 NLU 部分的处理流程,可以看出意图分类、属性抽取以及基于上下文的意图排序是 NLU 重要的组成部分。这里给出了每一个部分对应所采用的算法模型,这些算法模型在前文中都有所提及,这里就不再详细展开了。如图9-7所示。



由于篇幅的问题,这里不再展开图9-7中智能问答模块和智能聊天模块部分的内容。阿里小蜜智能问答模块主要处理的常见问题解答 ( Frequently Asked Questions,FAQ ),它使用的算法也是前文中提到的注意力模型。智能聊天模块部分采用了 IR+Rerank+Generation 处理流程和算法。

对话管理 ( Dialogue Management,DM ) 的主要功能是对输入进行结构化语义表示,根据上下文来管理整个对话的状态,并决定下一步采取什么样的动作。阿里小蜜将对话分为两个阶段:

  • 第一阶段通过多轮对话交互,利用 NLU 收集相关完成用户的需求,将用户需求结构化;

  • 第二阶段就是请求服务阶段。

图9-8就是阿里小蜜的 DM 框架图实例。



百度对话系统

百度依托搜索的天然优势也研发了相应的对话系统。百度对话系统目标是实现人与机器的自然对话,百度的对话系统是基于多任务、多领域的对话系统。在百度的对话系统的架构中明确了服务,模糊了算法层和数据层。阿里小蜜相比将对话管理明确拆分成了两个部分:对话管理和用户对话流管理。百度的机器人通过对话系统中的分发功能模块,被分发到相应的服务。在对话系统中,百度共实现了3种类型的服务子系统 ( 参照图9-4典型的智能对话系统 ),即基于知识的信息查询子系统、可完成特定任务的对话子系统以及开放域聊天子系统,如图9-9所示。



从图9-4和图9-10可以看出,两幅图中有很多相似地方,在和用户交互的过程中起重要作用的都是两部分功能——自然语言理解 ( NLU ) 和自然语言生成 ( NLG )。图9-10中对话管理模块给出了一份非常详细处理逻辑。



百度和阿里对话机器人都把意图分析作为对话机器人最重要的组成部分。百度采用了3种方法进行意图识别:

  • 融合了知识与统计的意图分析技术;

  • 基于文法规则的意图分析技术;

  • 基于语义匹配的意图分析技术。


① 融合了知识与统计的意图分析技术

百度面向特定任务的对话中,用户意图可以用语义框架来表示。语义框架包括用户的意图以及槽位 ( Slot ) 填充。通过从用户的 Query 中识别出意图及槽位。具体的做法就是首先基于已有的大规模文本数据、知识库、以及人工标注数据通过知识图谱、RNN、Bi-RNN 以及 CRF 等算法将用户意图和槽位的联合学习相互融合,如表9-4所示。


② 基于文法规则的意图分析技术

对话系统中意图分析技术的目标就是将 Query 转化成可查询的结构化数据以及逻辑表达式,然后系统可以执行这些命令,如图9-11所示。

Query = 提醒我明天查下张震的动作电影好吗?


对上面这句 Query 经过乔姆斯基文法规则分析后,最终产生了一个机器可以识别的指令。在引导分析和识别的过程中也使用了 NLP 中多个相关技术作为支持。

③ 基于语义匹配的意图分析技术

百度对话机器人技术中引入了意图图谱技术解决意图表示、需求满足和交互引导等问题。意图图谱采用了基于图结构的方案表示用户意图以及各个图节点之间的关联关系。意图图谱中每个节点都代表一个意图,节点之间的边代表意图的关系。例如,“阿拉斯加→阿拉斯加州  阿拉斯加雪橇犬”这里“阿拉斯加”从语义的角度上看并不是很明确,但是在意图图谱中就可以通过和用户交互细化到某一个意图图谱的节点上,如图9-12所示。



垂直领域对话系统的架构

垂直领域或者被称封闭领域的机器人,是指对话系统的输入和输出的空间可能是有限的。这些机器人系统都试图实现一个非常特定的目标。技术支持或购物助理都是封闭领域问题中最好的例子。下面介绍一个在电商领域可以完成推荐导购功能机器人的架构,如图9-13所示。


在图9-13中所承载的信息并不仅仅是一张具有推荐导购功能的机器人,其实它囊括了前面介绍的所有知识。具有推荐功能的机器人,需要更多地考虑用户行为特征。从图上也可以看出整个对话系统架构和实现上的不易。它不仅需要有数据方面的支持,还需要有工程技术上的支持,更需要有算法方面的突破和支持,尤其是在自然语言处理算法方面的支持。


开放领域对话系统的架构

开放领域的对话系统,因为用户不一定有明确的目标或意图。如 Twitter 这样的社交媒体网站上的对话通常是开放领域的,之所以是开放领域就是因为他们可以谈论任何方向的任何话题。无数的话题和生成合理的反应所需要的知识规模,使得开放领域的对话系统实现相当困难。下面给一个开放领域对话系统的架构,如图9-14所示。


微软小冰是开放领域聊天的代表,它是微软亚洲院于2014年推出的一款人工智能聊天机器人。微软凭借在大数据、自然语言语义分析、机器学习方面的技术长年累月地积累开发出了微软小冰。自它推出到现在,微软小冰通过语料和技术不断更新,已经慢慢开始对开放领域聊天和搜索引擎进行了整合。


小结

作为对话系统算法和工程开发人员,对本文内容都会非常感兴趣。本文详细介绍了两个机器人:阿里小蜜和百度对话的架构设计。并在中间部分介绍了一些对话系统常用的一些工程技术以及工程运维相关的知识。最后,通过介绍两种不同领域对话系统的一般性架构来串联所有对话系统架构设计共性知识。通过学习本文内容,可以使读者在设计架构对话系统时有一个全新的认识。