# 本地多标签 Detector 独立评测报告

## 概览
- 模型目录：`/Users/hwp/Documents/trae_projects/intelligent_cabin/models/local_bert_multi_intent`
- 评测集：`/Users/hwp/Documents/trae_projects/intelligent_cabin/app/data/bert_intent_multilabel_eval_independent.jsonl`
- 样本数：`37`
- 阈值 / top_k / max_labels：`0.45 / 8 / 4`
- `micro_precision`：`0.9362`
- `micro_recall`：`0.6377`
- `micro_f1`：`0.7586`
- `exact_match`：`0.5135`
- `multi_sentence_recall`：`0.4138`
- `single_guard_false_alarm_rate`：`0.0`

## 分类别结果
- `cabin_parallel`: count=15 micro_f1=0.807 exact_match=0.4667
- `cabin_sequence`: count=9 micro_f1=0.5385 exact_match=0.3333
- `cs_conditional`: count=3 micro_f1=0.9091 exact_match=0.6667
- `cs_sequence`: count=2 micro_f1=0.6667 exact_match=0.0
- `single_guard`: count=8 micro_f1=0.875 exact_match=0.875

## 主要混淆
- 漏掉 `cabin_sunroof_open`，同时误报 `cabin_window_open`：`1` 次
- 漏掉 `cabin_pause_music`，同时误报 `cabin_play_music`：`1` 次
- 漏掉 `cabin_window_open`，同时误报 `cabin_defog_front_on`：`1` 次

## 错误样例
- 文本：`锁车门，再把后视镜收起来` | 类别：`cabin_sequence` | 期望：`['cabin_lock_doors', 'cabin_mirror_fold']` | 预测：`[]`
- 文本：`把车门解锁，再把镜子展开` | 类别：`cabin_sequence` | 期望：`['cabin_mirror_unfold', 'cabin_unlock_doors']` | 预测：`[]`
- 文本：`路线别导了，音乐也停一下` | 类别：`cabin_parallel` | 期望：`['cabin_nav_cancel', 'cabin_pause_music']` | 预测：`[]`
- 文本：`雨停了，雨刮关掉，再把窗开一点` | 类别：`cabin_sequence` | 期望：`['cabin_window_open', 'cabin_wiper_off']` | 预测：`[]`
- 文本：`把天窗合上，然后把音乐暂停` | 类别：`cabin_sequence` | 期望：`['cabin_pause_music', 'cabin_sunroof_close']` | 预测：`[]`
- 文本：`先把音量调大，再切下一首` | 类别：`cabin_parallel` | 期望：`['cabin_next_track', 'cabin_volume_up']` | 预测：`[]`
- 文本：`静音之后切回上一首` | 类别：`cabin_sequence` | 期望：`['cabin_previous_track', 'cabin_volume_mute']` | 预测：`[]`
- 文本：`把天窗打开透口气，再开空调` | 类别：`cabin_parallel` | 期望：`['cabin_ac_on', 'cabin_sunroof_open']` | 预测：`['cabin_ac_on', 'cabin_window_open']`
- 文本：`音乐停一下，然后导航到公司` | 类别：`cabin_sequence` | 期望：`['cabin_nav_to', 'cabin_pause_music']` | 预测：`['cabin_nav_to', 'cabin_play_music']`
- 文本：`把左前窗降一点` | 类别：`single_guard` | 期望：`['cabin_window_open']` | 预测：`['cabin_defog_front_on']`
- 文本：`车里闷，给我透个气，再放点轻松的歌` | 类别：`cabin_parallel` | 期望：`['cabin_play_music', 'cabin_window_open']` | 预测：`['cabin_play_music']`
- 文本：`把空调开了，风别太小，再来首歌` | 类别：`cabin_parallel` | 期望：`['cabin_ac_on', 'cabin_fan_up', 'cabin_play_music']` | 预测：`['cabin_ac_on', 'cabin_play_music']`
- 文本：`开导航去徐家汇，顺便把风量调大` | 类别：`cabin_parallel` | 期望：`['cabin_fan_up', 'cabin_nav_to']` | 预测：`['cabin_nav_to']`
- 文本：`温度调到二十三度，风稍微小一点` | 类别：`cabin_parallel` | 期望：`['cabin_fan_down', 'cabin_set_ac']` | 预测：`['cabin_set_ac']`
- 文本：`帮我看A812302物流，要是太慢就转人工` | 类别：`cs_conditional` | 期望：`['cs_query_logistics', 'cs_transfer_human']` | 预测：`['cs_query_logistics']`

## 结论建议
- 先看多意图句是否存在系统性漏召回，再看单意图是否被误报成多意图。
- 若 `single_guard_false_alarm_rate` 偏高，需要先收紧 detector 阈值或补单意图负样本，再考虑进入 NER。
- 若 `multi_sentence_recall` 不稳定，应继续补条件句、弱连接句和口语化多动作语料。
