Page 156 - 《软件学报》2025年第4期
P. 156
1562 软件学报 2025 年第 36 卷第 4 期
生成式槽填充任务最终的训练目标是最小化下面的损失函数:
∑
L = logp(V|u t ,T) (3)
t
2.4 话语填充任务
为了能够更好地建立槽类型与话语中槽实体之间的映射, 并且加强槽实体与话语文本之间的潜在依赖关系,
本文设计了话语填充子任务. 如图 4 所示, 该任务同样采用生成的方式利用提示中的实体对话语进行修复生成. 本
文首先对用户话语中存在的槽实体“tea place”和“seven”进行掩码, 将这两个槽实体拼接到其对应的槽提示后, 模型
通过给定的提示信息对话语中的掩码部分进行填充, 话语填充任务的提示表示如下:
′
T = Q(s 1 ),v 1 ,...,Q(s n ),v n (4)
′
u = MASK(u t ) (5)
t
′ ′ ′
V = Seq2seq(u ,T ) = M 1 ,v 1 ,..., M n ,v n (6)
t
i
具体而言, 对于话语中的槽实体使用 M i 进行掩码, 依次将 M i 替换到每个实体的位置, 然后将第 个槽实体 v i
t
′
′ ′ T 拼接作为模型的
restaurant_type
拼接到相应的槽提示后, 构成该任务的提示模板 T . 模型将经过掩码后的第 个用户话语 u 与
t
′
输入, 模型可以根据提示模板选择相应的槽实体对原文进行填充. 同样地, 模型生成相应的槽实体序列 V , 生成序
列中使用 M i 作为标识词与话语中的掩码词相呼应, 每个 M i 后的实体词是对原文中的掩码部分 M i 的填充词.
此外, 对于话语中不存在槽实体的槽类型, 在槽类型提示后拼接 None 标识, 并且不进行掩码操作, 在生成阶
段对应的槽实体生成 None 即可. 话语填充任务的训练目标是最小化下面的损失函数:
∑
′
′
′
′
L = logp(V |u ,T ) (7)
t t
2.5 提示整合模板
对于多个槽提示, 为了加强不同槽类型之间的依赖关系, 本文提出的方法设计了整合模块来连接多个槽类型.
该模块由两部分组成, 包括描述槽类型的槽语义提示和槽共享提示.
早期的工作从槽类型的多方信息考虑, 包括领域描述信息、针对槽类型本身构造的问题以及槽类型对应的数
据示例, 这使得建模的过程过于冗余并且有较强的领域依赖性, 不够灵活. 本文只借助槽类型描述词作为语义提
示, 帮助模型更好地理解不同的槽类型含义, 模型感知一部分先验知识后, 进而激发预训练模型的语言理解能力,
从而增强模型的槽实体生成性能. 表 1 是不同领域槽类型描述.
表 1 不同领域槽类型描述
领域 槽类型 槽类型描述
timeRange time range
current_location current location
GetWeather geographic_poi geographic position
condition_temperature temperature
condition_description weather
restaurant_name restaurant name
restaurant type
BookRestaurant part_size_number number
served_dish served dish
party_size_description person
此外, 考虑到简单地利用槽类型描述不足以充分构建槽类型之间的联系, 本文在整合模块部分增加了可学习
的序列作为槽共享提示, 从而更好地建立不同槽类型之间的依赖关系. 传统的离散提示虽然便于直观的理解 (直接
使用可读性内容作为提示词), 但其构造过程过于主观, 并且最终确定的模板不一定是最优效果, 仍然可以进行改
进. 此外, 不同槽类型之间存在的隐式依赖很难通过直观的方式人为定义. 因此, 本文选择使用可学习的嵌入序列
来建模不同槽类型共享的提示序列, 该序列在训练过程中可以不断进行调整, 通过训练逐步接近最优的序列表征.