用户需能纠正被误解的部分
别名: 只改被听错的那一块 · 针对槽的修复 · other-initiated slot repair
概念解释
订位时系统把七点听成十一点,并回述了整桌:四人、靠窗、十一点。用户必须能只改时间,而不被逼把人数和靠窗再报一遍。用户发起的局部修复(user-initiated partial repair)把「针对被误解成分的纠正」做成对话行为:人指出错的那一块,系统只重开那一块,其余已接地的槽保持。没有这条路径,发现错误的人只能整单重来,或接受错的那一项。怎么措辞去承认听错,是另一层问题;这里管的是状态机允不允许改其中一项。
机制
共同基础里的槽一旦被当成接地,默认不重新打开。用户的纠正是一次他方修复:针对刚才被系统展示出来的某个成分。系统要做三件事才能接住——认出这是修复而不是新任务或新订单、把修复对准正确的槽、只作废那一槽的接地。认不出,会把「不是十一点,是七点」当成一桌新预订;对准错,会改到人数;作废范围过大,靠窗也丢了。修复常常不带槽名(「七点」而不是「时间改成七点」),对准要靠刚才回述里的对比:新值与哪个已填项类型相同、与哪个冲突。回述因此不只是礼貌,它给了修复一个可指的靶。没有被展示过的错误,用户无法瞄准,局部修复无从发起。
怎么研究
槽填充任务里在一个已知槽上注入识别替换,让系统回述整单,再观察用户的纠正话步能否命中该槽且只改该槽。自变量:错误槽是否出现在回述里、纠正时是否允许只说新值、同时还有几个已填槽。因变量:正确槽被修的比例、无辜槽被清空的比例、用户放弃后整单重说的比例。
语料上把「用户在系统回述之后立刻给出一个与某槽同类型的新值」标成修复发起。看现网是否把它当成新意图。Wizard-of-Oz 可以在没有稳健 NLU 时先测:人在能看见回述的情况下,会不会自然只改一块。
边界
用户还没听到任何回述,无从知道哪一块错了,这时要求局部修复不公平——先展示再修。所有槽都错(整句识别崩溃)时,局部没有可保留的基础,整单重来是对的。法律或库存已锁定的项(已出票的航班号)不能按口头修复直接改,应走显式的改签路径,而不是当普通槽重开。把修复做成必须说「修改预订」才能进的子技能,等于大多数人没有这条路径。输入通道上的口头编辑(改刚才那句听写)和对话里改一个槽,机制相邻但不是同一状态机。
怎么落地
- 回述之后的下一轮,把与已填槽类型冲突或同类型替换的新值默认解释为对该槽的修复,不要新开一张单。
- 修复命中后只把那一槽标成未接地,其余不动;用一句短回述确认新值,让下一次瞄准仍有靶。
- 用户点名槽(「时间不对」)即使没给新值,也只重开那一槽,不要从第一个空槽重新问。
- 验证:四人靠窗七点被听成十一点。用户说「是七点」。人数和靠窗应仍在,时间变成七点。若整单被重置,或人数被改,局部修复没有接通。