自然语言理解:将自然语言的 query 识别成结构化的语义表示。在对话系统中,这个结构化的语义表示通常被称作 dialogue act 由 communicative function 和 slot-value pairs 组成,其中 communicative function 表示 query 的类型(如:陈述需求,询问属性,否定,选择疑问,等等)而每个 slot-value pair 则表达一个限制条件(constraint),也可理解为用户目标的一个组成单元。 例如“我要西二旗附近的川菜”对应的 dialogue act 可以表示为 inform(foodtype=川菜,location=西二旗)。这里“inform”就是 communicative function,表示陈述需求,“foodtype=川菜”和“location=西二旗”是限制条件(slot-value pairs) 。常用的 communicative function 定义可以参考剑桥大学的对话系统中使用的集合[2],而语言学家 Harry Bunt 等人则总结出了一套 ISO-24617-2 标准包含56个 communicative function 的定义,以及它的扩展集 DIT++ 包含88种定义。但由于 ISO-24617-2 和 DIT++ 体系过于复杂,通常的任务驱动类对话系统只用到其中很小一个子集就足够满足需求了,不过感兴趣的读者可以参考 DIT++ 网站(1)。 由于对话系统更关注口语处理,而且通常是处理经过了语音识别后的口语,所以在这个领域,我们通常说 Spoken Language Understanding(SLU),以突出与广义的自然语言理解的不同,并蕴含了对非严谨语法和语音识别错误鲁棒的问题。 对话状态跟踪:坦率的讲这个翻译有点儿诡异,英文中这个概念叫 Dialogue State Tracking(DST),看起来就是顺眼得多。概括的说,对话状态跟踪就是根据多轮的对话来确定用户当前的目标(user goal)到底是什么的过程。为了更好的理解这个过程,我们先来看看什么是对话状态。一个对话状态中,最主要的信息是用户的目的,即 user goal。用户目的的表示形式是一组 slot-value pairs 的组合。
图1中3-6行 概率分布,称作置信状态(belief state或者belief)。所以,对话状态跟踪有时也称作置信状态跟踪(belief state tracking)。 为了方便后面的讲解,这里再介绍两个概念,用户的目的在一个置信状态中的表示可以分为两部分:首先每个 slot 上都可以有多个可能的 value,每个 value 对应一个置信概率,这就形成了每个 slot 上的边缘置信状态(marginal belief);然后这些可能的 slot-value pairs 的组合的概率分布就形成的联合置信状态(joint be仍以图1中3-6行的对话为例,当对话进行到第3行时,用户的目的是“occasion=跑步”,到第5行时,这个目的就变成了“occasion=跑步,language=英文”。对话状态中还可以记录完成对话任务所需的其他额外信息,例如用户当前询问的属性(requested slots),用户的交互方式(communication method),和用户或系统的历史对话动作(dialogue history)等等。 此外,大家应该已经注意到无论 ASR 或者 SLU 都是典型的分类问题,既然是分类就会有误差,于是这给任务驱动的对话系统引入了一个在不确定性环境下决策的问题(planning under uncertainty)。虽然最终的决策是由下面要介绍的对话策略完成的,但是对话状态需要为后面的决策提供依据,也就是如何刻画这个不确定性的问题。要解决这个问题,首先我们希望 ASR 或 SLU(或两者)在输出分类结果的同时输出一个置信度打分,最好还能给出多个候选结果(n-best list)以更好的保证召回。然后对话状态跟踪模块在上述置信度和 n-best list 的基础上,不仅需要维护一个对话状态,而是估计所有可能的对话状态的 belief),也就是用户完整目的的概率分布。通常对话系统的决策过程需要参考这两部分信息才能找到最优的对话策略。 (责任编辑:本港台直播) |