Page 155 - 《软件学报》2025年第4期
P. 155
王泽 等: 基于槽依赖建模的跨领域槽填充方法 1561
本文的模型结构如图 4 所示, 主要包括槽填充任务和话语填充子任务两部分. 在流程上, 两个任务都是先对槽
提示进行重组, 然后输入到生成式模型中得到相应的槽实体序列. 输入可以有多个槽提示进行组合, 通过提示整合
模块的槽共享提示来建模不同槽类型之间的依赖关系. 此外, 本文通过构建话语填充子任务来增强话语中槽实体
与槽类型之间的映射关系, 同时进一步强化槽实体与用户话语之间的语义联系.
用户话语
槽语义提示 1 槽共享提示 槽语义提示 2
槽提示 1 槽提示 2
槽填充任务 话语填充任务
话语: 提 示整 合 模 块 话语:
Book a tea place at seven Book a M 1 at M 2
提示: 提示:
Q(restaurant _type) M 1 Q(restaurant _type) tea place
Q(part_size_number ) M 2 Q(part_size_number ) seven
Q(restaurant _name) M 3 Q(restaurant _name) M 3
生 成预 训 练 模型
M 1 tea place M 2 seven M 3 None M 1 tea place M 2 seven M 3 None
图 4 模型总体框架图
2.3 槽依赖建模 M 1 Q(part_size_number)
T , 每个槽提示都是
为了建模不同槽类型之间的隐式依赖, 本文对多个槽提示进行拼接作为最终的输入提示
t
针对某一槽类型的序列表示. 通过一个生成式预训练模型将提示序列 T 与第 个用户话语 u t 进行拼接作为模型输
入, 由模型输出 T 中相关槽类型所对应的槽实体序列:
(1)
T = Q(s 1 ), M 1 ,...,Q(s n ), M n
(2)
V = Seq2seq(u t ,T) = M 1 ,v 1 ,..., M n ,v n
公式 (1) 中 Q(s i ) 表示将第 i 个槽类型 s i 转换为槽提示表示, 具体的转换流程在后面的槽提示模板中进行介绍.
M i 表示掩码词. 为了帮助模型对每个槽类型
模型的输出序列 V 中包含所有 s i 所对应的槽实体 v i i = 1,2,...,n ),
(
V 中生成的槽实体
进行准确地区分, 我们在输入序列中的每个槽提示后插入 M i , 对不同槽类型进行分割. 同时, 在
前加入 M i , 使得标识词与输入序列中的槽类型构成映射. 通过这种设置能够帮助模型在生成过程中关注到槽类型
相对应的槽实体, 直接完成类型的匹配工作. 如图 4 中的槽填充任务所示, 用户话语和 3 个槽类型组成的提示模
板 (Q(restaurant_type) M 2 Q(restaurant_name) M 3 ) 进行拼接后, 生成槽实体序列“ M 1 tea
M 3 None”, 其中“tea place”属于槽类型“restaurant_type”所对应的实体, “seven”属于槽类型
place M 2 seven
“part_size_number”所对应的实体, “restaurant_name”没有对应的实体.
槽实体数量的选择我们在后续进行了实验分析, 在训练阶段通过随机组合槽类型的方式来构建输入, 本文对
槽类型进行组合的时候考虑到可能存在的噪声, 比如在文本中本不具备明显依赖关系的两个槽类型强行联合的话
会影响性能. 因此, 我们基于当前文本实际存在的槽类型进行随机组合, 即对于 None 值也就是不存在的槽类型不需
要进行组合. 从文本实际存在的槽类型出发, 考虑可能存在的槽依赖, 这样很大程度上降低了多槽融合的噪声问题.