一句话里可能含多个意图
别名: 复合意图 · multi-label intent · packed commands
概念解释
唤醒一次很贵,用户会把几件不同的事塞进同一口气:「客厅灯关掉,放点爵士,明天七点叫我。」这不是一张表里的多个槽,是三个可以各自独立成技能的意图。单标签分类器通常只留下第一件或「看起来最像」的那件,其余被当噪声丢掉。用户以为说了三句,系统只办了一句。
机制
开口成本(唤醒词、被旁听、占住话轮)使人在计划阶段就把待办压成一句。连词(然后、还有、顺便)是弱线索,单意图内部也会出现(「七点跟七点半两个闹钟」仍是设闹钟)。训练数据若每句一个标签,多出来的意图会变成槽噪声或被最大类吃掉。解码常在第一个高置信意图处截断,后半句声学还在,语义已经被丢。
判别标准是:若这几件事分几天说,会不会走不同技能。会,就是多意图;不会,就是同一意图的多槽乱序。把后者当前者拆,会把「四人靠窗」拆成订桌加设偏好两个任务;把前者当后者并,会把关灯和设闹钟揉进一个填槽帧,其中一个必然丢。
怎么研究
建多标签意图集合:一句可有若干意图跨度。比较单标签对多标签模型的意图召回(第二、第三意图被留下的比例),以及用户事后以为办成了几件。现场切法是对首句做意图计数:真实日志里一句多于一个技能的比例。标注时画出跨度,不要只打一个主标签。
实验室若规定「每次只说一件事」,会把要研究的现象设计掉。Wizard-of-Oz 里让人一次把早上出门前的几件事说完,看他们是否自发打包。
边界
严格单技能设备(只有灯)没有第二意图可接,但用户仍会打包;接不住时至少要听见还有别的事,而不是静默丢掉。按键菜单一句一键,这条不成立。短指令「关灯」是单意图。依赖唤醒词、公共场合不愿多次开口的人,打包率更高。同一句里的指代(「也把它关掉」)是第二意图还是同一意图的第二槽,要看「它」是不是另一技能的对象。
怎么落地
- 按「分天说会不会换技能」给语料打多意图标签;评估第二意图召回,不要只用单标签准确率。
- 暂时执行不了多件的,至少要检测并开口:「灯先关了,闹钟要我等下再设吗。」静默丢掉后半句算缺陷。
- 不要在提示里要求「一次只说一件」来逃避:日志若显示打包是常态,提示改变不了开口成本。
- 验证:用含两个以上技能的首句测试。只执行第一件且不提及其余的,检测失败;把「订四人靠窗」拆成两个技能的,是把多槽误当成多意图。