槽位填充
NLU核心任务之一:从用户自然语言中提取结构化关键信息,与意图识别配合让对话系统理解”用户想做什么”以及”涉及什么参数”
简介
槽位填充(Slot Filling)是自然语言理解(NLU)中与意图识别(Intent Recognition)配对的核心任务。意图识别回答”用户想做什么”(如退款),槽位填充回答”操作涉及哪些具体参数”(如商品名、订单号、退款原因)。两者协同工作时,系统从用户一句话中同时提取意图和槽位,输出结构化JSON——这就是智能客服MVP中”大模型做NLU翻译层”的完整含义。
槽位填充本质是一个序列标注或信息抽取问题,传统做法用BERT等预训练模型+CRF层做token级别的BIO标注,但在大模型时代更常见的做法是直接让LLM输出JSON格式的结构化抽取结果。
关键信息
- 类型:技术 / NLP子任务
- 领域:自然语言理解 / 对话系统 / 智能客服 / 语音助手
- 核心输入:用户自然语言文本 + 槽位定义 schema(槽位名、类型、是否必填)
- 核心输出:键值对形式的槽位值,通常与意图一起打包为JSON
- 相关概念:意图识别、智能客服、对话管理器(状态机)
核心特性
槽位填充在对话系统中的位置
用户输入:"薯片碎了,订单号12345,我要退款"
↓
意图识别 → intent: "apply_refund"
+
槽位填充 → slots: {product: "薯片", issue: "破损", order_id: "12345"}
↓
打包为结构化JSON
↓
{
"intent": "apply_refund",
"slots": {
"product": "薯片",
"issue": "破损",
"order_id": "12345"
}
}
↓
对话管理器(状态机)→ 检查必要槽位是否齐全 → 齐全则调API / 缺失则追问槽位的三种基本类型
| 类型 | 说明 | 示例 |
|---|---|---|
| 必填槽位 | 执行操作前必须获取的参数 | 退款需要 order_id |
| 可选槽位 | 有则更精准、无则用默认值 | 退款原因(破损/漏发/不喜欢)影响审批流 |
| 追问槽位 | 第一次NLU未提取到,需要对话管理器发起追问 | ”请问您的订单号是多少?“ |
槽位缺失时的处理——对话管理器的追问逻辑
当NLU输出的槽位不全时,对话管理器(状态机)负责判断下一步:
- 缺失必填槽位 → 生成追问(“请问您的订单号是多少?”)
- 槽位值模糊 → 生成确认(“您说的是订单12345吗?”)
- 槽位齐全 → 直接调用业务API
这就是为什么智能客服MVP架构中大模型只做NLU、确定性流程用状态机——追问逻辑是确定的,不需要大模型生成。
与意图识别的关系
槽位填充和意图识别是一对联合作业:
- 意图决定槽位模板:不同的意图需要不同的槽位。退款意图需要 {order_id, product, issue},查物流只需要 {order_id}
- 槽位反哺意图消歧:某些情况下槽位填充的结果可以辅助意图消歧——用户提到”退款”和”订单号”,即使NLU对”apply_refund”置信度不高,槽位的存在也能增加判断信心
不同素材中的观点
- 2026-05-26-智能客服MVP三件事:嘻嘻李在零食品牌智能客服项目中,将槽位填充与意图识别一起交给通义千问完成——输入用户自然语言+预定义意图列表+槽位定义,输出包含 intent 和 slots 的JSON。方案中槽位填充的准确率受益于大模型的理解能力(能从”薯片碎了”中抽取 product=“薯片”、issue=“破损”,即使没有明确说”破损”),同时确定性状态机接管槽位校验和追问——大模型只管”填槽”,填不全时由代码补问。这一分工既发挥了LLM的语言理解优势,又避免了LLM自由生成追问的不确定性。
实用信息
槽位定义示例(退款场景)
意图:apply_refund(申请退款)
槽位定义:
- order_id: string, 必填, 用户在对话中提及的订单号
- product: string, 可选, 退款涉及的商品名
- issue: string, 可选, 退款原因,枚举值[破损, 漏发, 不喜欢, 其他]
适用场景
- 客服系统(订单查询、退款申请、会员积分查询等需要提取参数的场景)
- 语音助手(“提醒我明天下午3点开会” → {action: 提醒, time: 明天下午3点, event: 开会})
- 订票/预约系统(“订一张周五北京到上海的高铁票” → {from: 北京, to: 上海, date: 周五, type: 高铁})
- 表单自动填写(从自然语言描述中提取结构化字段)
不适用场景
- 开放式对话(无预定义槽位模板可套用)
- 需要多轮跨句信息聚合的复杂抽取(简单槽位填充只看单句)
- 槽位值需要复杂推理的场景(如”比上次那个便宜一点的”——需要关联历史上下文)