目录
1.零样本/小样本识别
2.联合语义解析
3.动作路由/工具选择
4.三者之间的关系
“大模型的意图识别”可以理解为:用大语言模型(LLM)判断用户这句话“想做什么”,并把这个目标转成可执行的结果。和传统意图识别相比,大模型的关键变化不在于“分类器更大”,而在于它不再只做封闭标签集分类。传统方法通常是在固定标签里选一个,例如“查天气、订票、投诉”;典型代表是 JointBERT,把意图分类和槽位抽取联合建模。
大模型则更常见三种做法:第一,零样本/小样本识别,只给标签说明或少量示例就直接判断意图;第二,联合语义解析,同时输出 intent、slots、约束条件;第三,动作路由/工具选择,不仅判断意图,还直接决定调用哪个 API 或工具。下面详细讲一下这三类方法:
1.零样本/小样本识别
这一类最接近传统“意图分类”,只是把原来必须大量标注训练的事情,改成由大模型靠提示、标签说明和少量示例直接完成。做法通常是:给模型一段用户话语,再给一组候选意图及其自然语言描述,例如“查询余额:想知道账户还有多少钱”“转账:想把钱转给别人”,然后要求模型从中选出最匹配的一个,或者输出 top-k 候选。
传统分类器往往只把标签当成 ID,大模型则能利用标签名、标签描述、正反例之间的语义关系来判断。因此当你没有很多标注数据,或者新意图经常增加时,零样本和小样本方法特别实用。
这里特别讲一下零样本意图识别,参考论文:Zero-Shot Spoken Language Understanding via Large Language Models: A Preliminary Study
零样本识别,即不给目标任务的标注训练样本,只给任务定义、标签清单和输出规则,让大模型直接完成理解任务。在任务型对话里,这类任务通常属于 SLU(spoken language understanding),核心包括两个子任务:意图识别(intent detection)和槽位填充/实体抽取(slot filling)。
槽位填充,即从用户输入的句子中抽取出预先定义好的特定信息片段(即“槽位”)。例如在订机票场景中识别出“出发地”“目的地”“日期”等关键参数。
下图想要说明:意图识别和槽位抽取其实高度相关,如果两个任务分开做,容易漏信息;如果让它们相互提示,就可能更准。
Stage one:先让模型独立做一个粗判,图里虽然把“Intent Detection”和 “Slot Filling”放在一起,但本质上还是两个子任务:① 意图识别prompt:告诉模型:“请从给定的intent列表中,选出这句话对应的意图;② 槽位填充prompt告诉模型:“请从给定的slot列表中,抽取这句话里的槽位。这个阶段会给出一个初步答案。图中并没有抽出fettuccine是served_