在上一期的分享中,我为你开启了另外一种和文字相关的人工智能系统——对话系统的一些基础知识。我重点和你分享了对话系统的由来,以及对话系统分为“任务型”和“非任务型”两种类型的概况。同时,我们也聊了聊早期的基于规则的对话系统的构建,以及这样的系统对后来各式系统的影响。最后,我为你简单介绍了对话系统的各个基本组件以及这些组件的主要目标。
在今天的分享里,我们就来看一看任务型对话系统的一些技术要点。
任务型对话系统的基本架构
首先,我们来回顾一下任务型对话系统的一些基本架构。尽管不同的对话系统有着不同的目的,但是从大的架构上来看,所有的任务型对话系统都有一些基本共同的组件。
第一个组件是“自动语音识别器”(ASR),这个组件是把人的语音进行识别,转换成为计算机能够理解的信号。
第二个组件是“自然语言理解器”(NLU)。在这个组件里,我们主要是针对已经文字化了的输入进行理解,比如提取文字中的关键字,对文字中的信息进行理解等。
第三个组件是“对话管理器”(DM)。这个组件的意义是能够管理对话的上下文,从而能够对指代信息,上下文的简称,以及上下文的内容进行跟踪和监测。
第四个组件是“任务管理器”(TM),用于管理我们需要完成的任务的状态。
第五个组件是 NLG,既从管理器的这些中间状态中产生输出的文本,也就是自然和连贯的语言。
最后一个组件是 TTS。在一些产品中,我们还需要把自然语言能够用语音的方法回馈给用户。
在我们今天的分享里,因为 ASR 和 TTS 都并不是对话系统的特殊组件,我们就不对这两个部分进行更加深入的探讨了。
任务型对话系统组件详解
我们先来看一下 NLU 这个组件。这个组件的目的是把用户输入的文字信息给转换成为任务型对话系统可以理解的内部的表征(Representation)形式。
我们试想一个餐馆的对话系统,当用户输入了一个句子“看一下北京西单附近今晚 7 点左右的西餐厅”,这个时候,我们都需要了解哪些信息呢?