1. 面向任务的对话系统
面向任务的对话系统指通过对话系统能够指导用户完成一项特定的任务。对话过程通常具有明确的目的性,主要以任务的完成情况来衡量对话的质量,实际上分为基于规则和基于数据两种方式。
平时所说的SDS(Spoken Dialogue System),默认指的是面向任务的对话系统。
对话系统符号表
符号 | 解释 |
---|---|
Hx | 用户的对话历史语句 |
Hy | 系统的对话历史语句 |
Xn | 第n轮的用户对话语句 |
Yn | 第n轮的系统对话语句 |
Un | 第n轮的用户动作 |
Sn | 第n轮的对话状态 |
An | 第n轮的系统动作 |
给定前n-1轮的对话历史信息,包括用户的对话历史语句Hx = {X1,X1,…,Xn-1}、系统的对话历史语句Hy = {Y1,Y1,…,Yn-1}及第n轮的用户对话语句Xn,求Yn。
2. 对话系统技术原理
模块化的对话系统
分模块串行处理对话任务,每一个模块负责特定的任务,并将结果传递给下一个模块,通常由NLU、DST(Dialogue State Tracking,对话状态追踪)、DPL(Dialogue Policy Learning,对话策略学习)、NLG4个部分构成。在具体实现上,可以针对任意模块采用基于规则的人工设计方式,或者基于数据驱动的模型方式。
- NLU:将用户的输入自然语言语句映射为机器可读的结构化语义表述,这种结构化语义一般由两部分构成,分别是用户意图(user intention)和槽值(slot-value)。
- DST:这一模块的目标是追踪用户需求并判断当前的对话状态。该模块以多伦对话历史、当前的用户动作为输入,通过总计和推理理解在上下文环境下用户当前输入自然语言的具体含义。对于对话系统来说,这一模块有着重大意义,很多时候需要综合考虑用户的多轮输入才能让对话系统理解用户的真正需求。
- DPL:也被称为对话策略优化(optimization),根据当前的对话状态,对话策略决定下一步执行什么系统动作。系统行动与用户意图类似,也由意图和槽位构成。
- NLG:负责把对话策略模块选择的系统动作转化为自然语言,最终反馈给用户。
2.1 NLU模块
NLU模块的输入是用户对话语句Xn,输出是解析Xn后得到的用户动作Un。该模块涉及的主要技术是意图识别和槽位填充,这两种结束分别对应用户动作的两项结构化参数,即意图和槽位。
- 意图和槽位和定义
意图和槽位共同构成了“用户动作”,机器是无法直接理解自然语言的,因此用户动作的作用便是将自然语言映射为机器能够理解的结构化语义表示。
意图识别,也被称为SUC(Spoken Utterance Classification),意思是将用户输入的自然语言会话进行划分,类别(classification)对应的就是用户意图。例如“今天天气如何”,其意图为“询问天气”。自然地,可以将意图识别看作一个典型的分类问题。意图的分类和定义可参考ISO-24617-2标准。面向任务的对话系统中的意图识别通常可以视为文本分类任务。
槽位,即意图所带的参数。一个意图可能对应若干个槽位,例如询问公交车路线时,需要给出出发地、目的地、时间等必要参数。以上参数即“询问公交车路线”这一意图对应的槽位。语义槽位填充任务的主要目标时在已知特定领域或特定意图的语义框架(semantic frame)的前提下,从输入语句中抽取该语义框架中预先定义好的语义槽的值。语义槽位填充任务可以转化为序列标注任务,即运用经典的IOB标记法,标记某一个词时某一语义槽的开始(begin)、延续(inside),或是非语义槽(outside)。 - 相比于传统的机器学习方法,深度学习模型能够自动学习输入数据的隐含特征。例如,将可以利用更多上下文特征的最大熵马尔可夫模型引入槽位填充的过程。
- 也有研究将条件随机场模型引入槽位填充。
- 基于RNN地深度学习模型在意图识别和槽位填充领域也得到了大量的应用。参考文献:Liu B,Lane I. Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling. 2016
- 与基于RNN的意图识别和槽位填充相比,基于LSTM模型的槽位填充可以有效解决RNN模型中存在的梯度消失问题。
- 对各个组成部分进行标注,所以通常也会应用到序列标注方法。由于串行执行的方式存在问题,所以使用参考文献:Multi-Domain Joint Semantic Frame Parsing Using Bi-Directional RNN-LSTM, INTERSPEECH中提到的联合学习(joint learning)方式进行意图识别和槽位填充。