1.3 口语理解与人机对话系统
本书介绍的对话系统主要是任务型口语对话系统,如图1-4所示,该类型的口语对话系统主要由5个模块和1个任务相关的知识库组成,5个模块分别是:自动语音识别(Automatic Speech Recognition,ASR)、口语理解(Spoken Language Understanding,SLU)、对话管理(Dialog Management,DM)、自然语言生成(Nature Language Generator,NLG)和语音合成(Test-to-Speech,TTS)。知识库往往与系统要完成的具体对话任务相关,比如订餐馆的任务,知识库就是可查询的所有餐馆信息,每个餐馆都对应知识库中的一个实体。5个模块中的自动语音识别(ASR)模块将用户的声音转换为文字;口语理解(SLU)模块完成语义理解任务,但与一般自然语言处理中的语义理解略有不同的是,它的输入是语音识别模块的一个或多个文字序列输出,并将这些识别结果转换为系统能够识别的对话动作;在对话管理(DM)模块中,对话状态跟踪(Dialogue State Tracking,DST)模块负责根据口语理解部分输出的对话动作更新对话状态,对话决策(DialoguePolicy)根据系统的对话状态生成语义级的系统反馈动作,自然语言生成(NLG)模块将系统生成的反馈动作转换为自然文本语言,语音合成(TTS)模块将自然文本合成语音播放给用户。本书主要介绍口语理解、对话管理和自然语言生成3个模块。
图1-4 任务型对话系统架构图
语音识别将用户的音频输入转换为文字信息,原始的文字信息只是被计算机记录,还没有被计算机理解,因此需要有一个理解模块能够让计算机理解用户所说的话。口语理解模块将用户输入的文字信息转换成结构化的语义槽(Semantic slot)信息。比如,用户说了一句“帮我查询明天下午从上海到北京的机票”,其中包含了3个关键的语义信息:“出发时间=明天下午”“出发地=上海”“到达地=北京”。早期的语义解析方法往往基于规则,例如商业对话系统VoiceXML和Phoenix Parser。开发人员可以根据要应用的对话领域,设计与之对应的语言规则,来识别由语音识别模块产生的输入文本。在基于规则的系统(有时也被称为基于知识的系统)中[14-16],开发人员会写一些句法/语义的规则语法,并用这个规则来分析输入的文本以获取语义信息。这类方法最大的好处是不需要大量的训练数据,但是需要大量的人力资源来完善语义解析规则,随着规则的增加,规则之间的冲突检查又成为一项复杂的工作。基于统计学习的口语语义理解方法则解决了很多基于规则的方法问题,它可以从句子样例及相应的语义标注上自动学习。与手工书写规则相比,数据标注需要的特定专业知识要少很多。而且统计方法通过一些半监督、无监督学习等方法,可以向新数据自适应。近十年来,深度学习技术在人工智能各个领域都取得了突破性进展,包括语音处理、图像处理、自然语言处理等领域。在口语语义理解领域,循环神经网络[17-19]、卷积神经网络[20, 21]及与传统模型(条件随机场)的结合方法[20, 22, 23]都取得了很好的结果。深度学习方法在口语语义理解任务上的应用,在之后的章节中会被详细介绍。
口语理解模块将在每一轮对话中得到的文字信息都解析为计算机能够理解的结构化语义信息,对话管理模块中的对话状态跟踪模块的任务是通过分析结构化语义信息来更新当前对话系统的对话状态。对话状态可以被简单地理解为所有对话历史的语义信息的累计结果加上数据库中实体可能被提及的分布情况。早期的对话状态跟踪模块也是基于规则的方法,随着深度学习方法的突破,全连接前馈网络[24]和循环神经网络[25]也被用到基于语义信息的对话状态跟踪系统中。近年来,学术界研究热点逐渐趋向于端到端的对话状态跟踪[26, 27]。端到端的对话状态跟踪系统将传统的语义解析任务和状态跟踪任务视为一个整体,从自然语言直接得到对话状态,跳过了语义解析过程。对话管理中的另一个模块“对话决策”就是基于当前的对话状态选择一个合理的系统回复来完成用户目标的。Young等人[28]将对话动作决策过程形式化为一个序列决策过程,并且使用部分可观察马尔可夫决策过程对对话过程进行建模,提供了可用强化学习方法来优化对话决策过程的理论依据。随着深度强化学习(Deep Reinforcement Learnng,DRL)方法在游戏[29]、围棋[30]和机器人[31]等领域被成功应用,DRL在对话策略优化中也很快取得了进展[32-38]。
口语系统中的自然语言生成模块将便于计算机理解的结构化对话动作转化为人类能够理解的自然语言。早期的口语对话系统一般使用基于模板的方法将结构化的对话动作转化为自然语言,这样的方法回复的自然语言形式一般比较单一。随着深度学习方法的发展,基于深层神经网络的方法[39, 40]被应用到自然语言生成模块,相较于基于模板的方法,各项指标也取得了比较明显的提升。