# Joint NLU 独立评测报告

## 概览
- 模型目录：`/Users/hwp/Documents/trae_projects/intelligent_cabin/models/local_joint_bert_nlu`
- 评测集：`/Users/hwp/Documents/trae_projects/intelligent_cabin/app/data/joint_nlu_eval_independent.jsonl`
- 样本数：`43`
- `intent_accuracy`：`0.9302`
- `slot_exact_match`：`1.0`
- `joint_exact_match`：`0.9302`
- `slot_micro_precision`：`1.0`
- `slot_micro_recall`：`1.0`
- `slot_micro_f1`：`1.0`

## 训练摘要
- 训练集 / 评测集：`337 / 10`
- 训练阶段 `intent_accuracy`：`1.0`
- 训练阶段 `slot_exact_match`：`0.8`

## 分类别结果
- `failure_replay`: count=12 intent_acc=0.75 slot_exact=1.0 joint_exact=0.75
- `no_slot_control`: count=14 intent_acc=1.0 slot_exact=1.0 joint_exact=1.0
- `slot_destination`: count=4 intent_acc=1.0 slot_exact=1.0 joint_exact=1.0
- `slot_music`: count=5 intent_acc=1.0 slot_exact=1.0 joint_exact=1.0
- `slot_order`: count=4 intent_acc=1.0 slot_exact=1.0 joint_exact=1.0
- `slot_temperature`: count=4 intent_acc=1.0 slot_exact=1.0 joint_exact=1.0

## 主要意图混淆
- 期望 `cabin_window_open`，预测成 `None`：`1` 次
- 期望 `cabin_window_open`，预测成 `cabin_play_music`：`1` 次
- 期望 `cabin_fan_up`，预测成 `cabin_fan_down`：`1` 次

## 失败样例回放
- 文本：`把左前窗降一点` | 类别：`failure_replay` | 期望意图：`cabin_window_open` | 预测意图：`None` | 期望槽位：`{}` | 预测槽位：`{}` | 缺失槽位：`[]` | 多出槽位：`[]`
- 文本：`给我透个气` | 类别：`failure_replay` | 期望意图：`cabin_window_open` | 预测意图：`cabin_play_music` | 期望槽位：`{}` | 预测槽位：`{}` | 缺失槽位：`[]` | 多出槽位：`[]`
- 文本：`风别太小` | 类别：`failure_replay` | 期望意图：`cabin_fan_up` | 预测意图：`cabin_fan_down` | 期望槽位：`{}` | 预测槽位：`{}` | 缺失槽位：`[]` | 多出槽位：`[]`

## 结论
- 先看 `failure_replay` 是否仍然错，能直接判断先前多意图失败到底是联合模型本体问题还是上层组合问题。
- 若 `slot_music` 或 `slot_destination` 仍不稳，优先补 span 标注，不要回退到规则抽槽。
- 若 `no_slot_control` 很稳但 `failure_replay` 中仍有大量错误，下一步应补长尾控制语义数据，而不是急着上更复杂结构。
