口语对话系统(Spoken Dialogue System, SDS)在虚拟个人助手(virtual personal assistants ,VPAs)方向上是一个比较重要的应用。在这些VPA中,Microsoft的Cortana,Apple的Siri,Amazon Alexa,Google Assistant和Facebook的M已在各种设备中集成了SDS模块,这些模块使用户能够自然说话,从而更有效地完成任务。
传统的对话系统具有相当复杂的模块化的pipeline。深度学习技术的进步最近已将神经模型应用于对话建模。然而,将深度学习技术用于构建健壮且可扩展的对话系统仍然是一项艰巨的任务,也是一个开放的研究领域,因为它需要对经典管道的深入理解,以及对先前工作和最新模型基准的详细了解最新的工作。
主要分为3个部分:
当用户使用SDS可能是语音(speech)输入,也可能是文本(utterance)输入,如果是语音,则需要ASR把语音转化为文本。
- LU模块
以图片中的例子:Are there any action movies to see this weekend? 问最近的动作电影有哪些。Language Understanding 模块对问句进行意图识别和实体识别,然后进行槽填充。
每个一个意图可以认为是一个表单(Form),上面有很多的槽位需要来填充。而填充槽位的值则来自实体识别。经过填槽后,在进入对话管理中。 - DM模块
对话管理有两个挑战:(1)当对话依赖于之前对话时,需要把上下文(context)信息加入到intention classifier和slot tragger 中。(2) 如果当前对话突然转化的话题,这个时候需要把历史的槽位清除,并且不使用历史信息。在这个例子中,发现槽位是缺少location的,所以选择Policy,对用户进行询问request_location,以补全槽位信息。 - NLG模块
回复用的模板配置,或进行语音合成
如果我们对整个系统进行概述,则如下所示:我们有一个用户,我们从他或她那里得到语音或文本,然后,我们有了自然语言理解模块,该模块可以为我们的话语输出意图和内容。然后,我们有一个对话管理(Dialogue Management)的模块,而对话框管理器负责两个任务。第一个是对话框状态跟踪(Dialogue State Tracking),因此,我们需要在整个对话中了解用户的需求并跟踪该状态。而且,它还执行对话框策略管理(Dialogue Policy Management),因此,有一个确定的策略。如果状态为以下状态,那么我们需要向用户查询一些信息或向用户请求一些信息,或者我们只是通知用户某些事情。我们还可以查询后端服务,例如Google Maps或Yelp,当我们准备向用户提供一些信息时,我们使用自然语言生成(NLG)框为用户输出语音,因此这是一次对话。