本帖最后由 ljg2np 于 2025-4-9 16:47 编辑
对话管理(DM)分为会话状态追踪(DST)和会话策略学习(DPL)两个部分。
本文对书中讲述的在整个人机对话系统中关于会话状态追踪(DST)的学习内容进行阅读分享。
一.DST定义
1.基本概念
“会话”是一段时间内用户与机器人从咨询开始到咨询结束的一段完整交互。
“对话”是用户和机器人的一次问答(即一问一答)。
通常情况下,一个会话包含若干个对话。
会话状态是一种包含0时刻到t时刻的对话、对话历史、用户目标、用户信息、意图、领域、槽值对等的数据结构。
会话状态可以认为是整个会话的上下文信息。下图展示了会话状态在时序上的表达,当一个会话开启后,用户和机器人不停地进行问答交换,其DST会不断跟随时序的前进而迭代跟踪。
2.不同应答类型下的DST
人机对话系统按照应答类型分为:任务型、问答型、推荐型和闲聊型。在不同类型的人机对话系统中,对话管理(DM)也是不相同的。
任务型应答引擎:DM是在NLU(领域分类和意图识别、槽填充等)的基础上,进行对话状态的追踪以及对话策略的学习,以便NLG阶段答案决策、引导用户、反问、确认、对话结束语等。
问答型应答引擎:DM是在问句的类型识别与分类的基础上,进行文本的检索以及知识的匹配,以便NLG阶段生成用户想要的文本片段或知识库实体。
推荐型应答引擎:DM是进行用户兴趣的匹配以及推荐内容评分、排序和筛选等,以便NLG阶段生成更好的给用户推荐的内容。
闲聊型应答引擎:DM是对上下文进行序列建模、对候选回复进行评分、排序和筛选等,以便NLG阶段生成更好的回复。
总体来看,会话状态是对当前对话和整个对话历史的累积语义表示,DST主要用于维护用户信息及会话状态,提供会话状态数据给之后的会话策略学习(DPL)阶段学习策略。
二.DST构造
1.DST结构
DST结构包括:用户基本信息、当前对话信息、历史对话信息。综合型人机交互系统中的DST结构如下图所示。
用户基本信息,一般包括用户账户ID和用户属性。
当前对话信息的简单要素:对话ID、会话ID、终端类型、机器人Code、对话类型、时间戳。
①对话ID,用于表示一个一问一答的ChatRecord唯一标识。
②会话ID,用于标识从咨询开始到咨询结束这一系列对话的标识符。
③终端类型,指用户和机器人交互的时候使用的客户端类型。
④机器人Code,用于对机器人进行标识。
⑤对话类型,包括“正常应答”、“开头”、“结束”、“补全”、“反馈”、“任意话术”六种类型。
⑥时间戳,指对话的一问一答中发出问题的时间。
当前对话信息的复杂要素:NLU信息、问句信息、答案信息、场景信息。
①NLU信息,包含语言理解方面的信息,包括:开放/垂直分类、意图分类、领域分类、上文领域、上文意图、领域识别结果列表、意图识别结果列表、FAQ结果列表、问句类型结果、分词/词性/实体识别、拼音列表、音调列表、用户情绪、用户继承信息。
②问句信息,包括:原始问句、复合问句、中间临时处理问句、最终处理问句、问句形式。
③答案信息,包括:答案类型、是否邀评、转人工信息、答案列表。
④场景信息,包括:场景业务ID、场景子意图信息、槽位信息、场景变量信息、触发方式、场景流程状态(开始\结束\异常等)、流程ID、流程实例ID。
历史对话信息,采用由多个对话记录(ChatRecord)构成的列表结构,将用户在会话中不同时间点的全部对话记录(ChatRecord)按照时间线存储起来,形成一个历史对话链。
2.DST存储
DST数据在整个人机对话过程中使用频繁,且只需在用户对话期留存,因此一般将用户基本信息和历史对话信息存储在高速缓存中,当前对话信息存储在机器节点内存中,待对话完成后,再将当前对话作为最近发生的对话信息从内存更新到缓存中。
如在Redis、Memcached中以Key-Value形式存储,设置过期时间为12小时。如下图所示,可以看出DST主要与当前用户及当前会话有关,存取DST需要用户ID和会话ID。
三.结语
通过对第4章DST内容的学习,可以看到:
1.针对人机对话的不同应答类型,用于维护用户信息及会话状态的DST也相应有所变化;
2. DST作为人机对话的信息载体,其结构的组成分类比较固定,但是其中对话信息要素里涉及语言理解的细项内容还是比较多的,正如书中所说,这些内容构成了DST的微观世界。