Dialogue-State-Tracking简述

学习一些中文论文来大概理解下DST这个任务:

Reference:

郑正凯. 基于深度学习端到端的对话状态跟踪研究[D].山东大学,2021.

1. Dialogue State Tracking简述

dst任务一般用在任务型对话中,是pipeline中的一个部分。组成对话系统的各模块按照①自然语言理解(NLU)、②对话状态跟踪(DST)、③策略学习(Policy Learning)、④自然语言生成(NLG)四部分组成。

其中NLU模块将输入文本转化为结构化的语义表示,提取出对用户当前话语中与任务相关的信息,主要使用意图识别和槽值填充的方法;

DST模块负责维护系统状态,即获取用户目标,对用户目标进行实时更新;

PL模块负责根据系统状态选择合适的信息对用户进行反馈;

NLG模块负责把系统反馈的信息转化为自然语言输出给用户。

2. 对话状态跟踪相关理论

英文数据集MultiWOZ 2.0 2.1 2.2 2.3,其中2.3应该是非常新的版本

中文数据集CrossWOZ

2.1 数据组成结构

在对话状态跟踪任务中,数据由以下几方面组成:基于特定任务的槽值对、用户当前轮输入、上轮次的系统反馈(以前所有轮?)、上轮次的系统状态(以前所有轮?)

(1)槽值对(Slot-Value)
“槽”指系统向用户提供服务之前需要事先确定的信息,而“槽值”是指用户需要提供给系统的具体信息。槽值是具体信息,槽是槽值的统称,一个槽可以对应多个槽值,同一领域内一个槽值只能对应一个槽。

在跨领域对话系统中,槽的上类称为领域,比如餐馆、酒店、景点等;一个领域可以对应很多槽(酒店有价格、酒店有地理位置……),一个槽也可以对应很多领域(酒店有价格、餐厅有价格……)。所以我们将领域与槽拼接起来作为槽,这样使得槽变成了唯一,例如“酒店-名称”,“景点-价格”

在任务型系统中,一般都会有多个槽,每个槽有多个值,用户的意图是多样且不确定的,系统需要与用户通过多轮互动获取用户的真实意图,如在旅游咨询系统中,将“景点-名称”、“酒店-价格”,“餐馆-推荐菜”等用户需要提供信息的类定义为槽,而“餐馆-推荐菜”对应的“北京烤鸭”,“小笼包”等均为槽值。对话状态追踪的目的是在每一轮对话中能够准确识别出用户是否表达出某个槽通过对数据集中槽值对进行统计分析可以获得槽值对形式的知识库,这个知识库能够作为主体文件参与模型的训练与预测。

(2)用户当前轮输入
在多轮对话中,用户当前输入作为对话状态追踪的重要信息,当前轮输入可以是陈述需求或者有疑问推荐,也可以是对上一轮系统反馈的回答及提出新的要求。通过与系统的交互过程中,用户可以随时更新自己的需求,系统会根据用户输入的信息及时更新对话状态。

(3)上轮次的系统状态与系统反馈(系统角度
在DST任务中,一般都会初始化系统状态为{Slot: None},通过不断地更新状态使得系统获取相关信息。在DST过程中,上下文信息在一定程度上影响了后续的动作,由于上一轮系统反馈与当前轮用户输入有着密切联系,所以一般对话状态跟踪模型均会将上一轮系统状态及反馈作为输入。

而上一轮的系统反馈无外乎两种信息,一种是针对上一轮用户输入给出的问答式回复或推荐,另一种是由于用户给与的信息量不足或者意图不明确,需要用户增加信息,所以系统会主动向用户发送确认或者请求。

系统确认是对用户进行槽值确认,如“你喜欢面条吗?”,此时系统的状态为{food: noodle,request: None …}【需要用户增加信息】

系统请求是询问用户特定槽对应的值,如“不幸的是,价格便宜的已售罄,请选择其他价格范围的菜品”,此时系统状态变为{food: noodle, request: price range}【需要用户增加信息】

2.2 对话状态追踪过程(DST)


Dialogue-State-Tracking简述
http://example.com/2021/09/14/research/papers/Dialogue-State-Tracking简述/
作者
Curious;
发布于
2021年9月14日
许可协议