Page 152 - 《软件学报》2025年第4期
P. 152
1558 软件学报 2025 年第 36 卷第 4 期
任务型对话系统主要分为 4 个部分: 自然语言理解、对话状态跟踪、对话策略、对话生成. 其中槽填充任
务是自然语言理解模块的关键部分, 该任务通过抽取用户话语中存在的槽实体为对话系统下游任务提供必要的
语义信息. 在现实的人机交互应用中, 模型对自然语言的理解尤其重要. 例如, 如果存在话语“Book a tea place for
seven”, 那么槽填充任务需要识别出话语中的“tea place”和“seven”, 并对应到它们在当前领域所属的槽类型,
restaurant_type 和 party_size_number. 一些传统的有监督学习方法已经取得了很高的性能 [1−8] , 但是这些方法依赖
于大量的高质量标注语料, 这个步骤是耗时耗力的. 尤其针对一个新兴领域而言, 无法在短时间内搜集到大规模的
训练数据, 难以迁移到新的任务中. 因此, 跨领域槽填充成为一个必要且极具挑战性的任务, 它有效地弥补了数据
缺失带来的领域迁移问题 [9] .
跨领域槽填充任务利用原有领域的数据作为训练集, 通过从源域中学习任务知识然后将其迁移到目标领域中
进行应用, 这个过程不需要目标领域的监督数据作为支撑. 如图 1 所示, 两个领域中包含若干不同的槽类型 (例如
BookRestaurant 领域中的 restaurant_type), 模型在 BookRestaurant 领域中学习先验知识, 然后应用到 PlayMusic 中
对新的槽实体进行预测.
BookRestaurant PlayMusic
编 码层
话语: Book a tea place for seven 话语: Play a ballad from 1997
槽类型: restaurant_type: tea place 槽类型: music_item: ballad
party_size_number: seven year: 1997
图 1 槽填充任务领域迁移示例
早期的一些研究将槽填充任务形式化为序列标注任务, 如图 2(a) 所示, 该框架为领域中的每个槽类型分配两
个 BI 位置标签 [10,11] . 例如, 槽类型 restaurant_type 对应有 B-restaurant_type, I-restaurant_type 两个标签. 但是这种方
法存在严重的缺陷, 随着槽类型数量的增长, 标签数量也会成倍上升, 对于槽类型数量较多的新领域来说, 这种缺
陷对性能影响较大. 针对这个问题, Liu 等人 [12] 提出了一种两阶段的框架, 该方法将实体位置识别和类型匹配分开
进行处理, 基本解决这一缺陷. 后续很多研究也是基于此框架开展的 [13−16] . 考虑到序列标注任务的有限性, 一些研
究者从一个新的视角出发, 将槽填充任务转换为机器阅读理解任务 (MRC) [17,18] , 如图 2(b) 所示, 这种框架为每个槽
类型构造一个查询问题, 然后与话语文本拼接作为输入, 通过预测实体跨度的起始位置来完成槽实体的预测任务.
但是, 受此任务形式的限制, 该方法需要为每个槽类型手工设置查询问题, 鲁棒性较差, 而且需要使用大量 MRC
数据对预训练模型做二次训练, 这样训练数据的选择也会直接影响模型的性能. 随着提示学习范式 (prompt
learning) 的出现 [19] , 越来越多的任务被转换成生成式问题. Yan 等人 [20] 首次将槽填充任务视为生成任务, 他们为每
个槽类型构造融合领域和样例信息的槽提示, 用于生成相应的槽实体. 该框架试图利用提示来激发预训练模型的
潜在能力, 如图 2(c) 所示.
O O O O O B-restaurant_type 答案: bistro
分类层 + CRF 开始和结束位置预测 答案: bistro
编 码层 生 成式 预 训 练模 型
book a reservation for a bistro book a reservation for a bistro
book a reservation for a bistro
问题: what is restaurant type? 槽提示: restaurant_type
(a) 序列标注框架 (b) MRC 框架 (c) 生成式框架
图 2 槽填充任务框架