Files
Maven/docs/evals/2026-09-07-expanded-corpus-linear-head-experiment.md
T
claude cbac8b9c4f router/semantic: experiment reports (slice 15)
- 2026-09-07-linear-e5-router-experiment: 136-example baseline (superseded)
- 2026-09-07-expanded-corpus-linear-head-experiment: 3025-example expanded (live)
- CLAUDE.md: index updates for both evals
2026-09-07 13:52:54 +04:00

636 lines
52 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Semantic Router Linear Head Experiment — Report
## 1. Exact e5 representation used
- **Model**: model_quantized@384/tok2
- **Checkpoint**: models/embedder/multilingual-e5-small/model_quantized.onnx
- **Tokenizer**: models/embedder/multilingual-e5-small/tokenizer.json
- **Dimension**: 384
- **Pooling**: mean-pool + L2-normalize
- **Normalization**: L2
- **Input template**: query: <text>
## 2. Development/residual row counts
- Total corpus: 3025
- Frozen holdout: 535
- Development pool: 2490
- Fast-path resolved: 82
- Router-residual: 2943
Route distribution (full corpus):
- action: 990
- conversation: 103
- knowledge: 880
- memory_write: 705
- system: 226
- uncertain: 121
## 3. Grouped fold composition
Folds: 5
- Fold 0: eval=476 train=2014 routes={'action': 144, 'conversation': 30, 'knowledge': 150, 'memory_write': 74, 'system': 58, 'uncertain': 20}
- Fold 1: eval=341 train=2149 routes={'action': 201, 'conversation': 30, 'knowledge': 44, 'memory_write': 39, 'system': 9, 'uncertain': 18}
- Fold 2: eval=707 train=1783 routes={'action': 297, 'conversation': 12, 'knowledge': 210, 'memory_write': 125, 'system': 45, 'uncertain': 18}
- Fold 3: eval=506 train=1984 routes={'action': 86, 'conversation': 12, 'knowledge': 160, 'memory_write': 125, 'system': 90, 'uncertain': 33}
- Fold 4: eval=460 train=2030 routes={'action': 68, 'conversation': 9, 'knowledge': 151, 'memory_write': 190, 'system': 24, 'uncertain': 18}
## 4. Selected regularization
### Experiment A: All development examples
- Best C: 10.0
- Mean accuracy: 69.2% ± 10.2%
- Mean macro F1: 0.616 ± 0.093
- Total false actions (CV): 390
### Experiment B: Router-residual only
- Best C: 10.0
- Mean accuracy: 68.5% ± 10.2%
- Mean macro F1: 0.608 ± 0.089
- Total false actions (CV): 388
### Stability across folds
C=0.01 acc=30.1%±18.1% f1=0.107±0.074 folds_acc=['33.6%', '21.4%', '63.8%', '17.0%', '14.8%']
C=0.1 acc=55.0%±16.8% f1=0.276±0.077 folds_acc=['63.4%', '70.7%', '71.6%', '35.2%', '34.3%']
C=1.0 acc=65.2%±10.7% f1=0.522±0.075 folds_acc=['75.4%', '76.0%', '68.9%', '56.9%', '48.7%']
C=10.0 acc=69.2%±10.2% f1=0.616±0.093 folds_acc=['79.8%', '79.5%', '66.8%', '67.8%', '52.0%']
C=100.0 acc=67.4%±9.0% f1=0.595±0.079 folds_acc=['74.4%', '77.4%', '66.5%', '67.2%', '51.3%']
## 5. All-example CV metrics
- Accuracy: 68.5%
- Macro F1: 0.675
- False-action count: 390
- False-action rate: 15.7%
- Action precision: 0.629
- Action recall: 0.832
- Uncertain precision: 0.618
- Uncertain recall: 0.589
Per-class metrics:
action P=0.629 R=0.832 F1=0.716 (n=796)
conversation P=0.825 R=0.710 F1=0.763 (n=93)
knowledge P=0.721 R=0.610 F1=0.661 (n=715)
memory_write P=0.748 R=0.635 F1=0.687 (n=553)
system P=0.698 R=0.562 F1=0.623 (n=226)
uncertain P=0.618 R=0.589 F1=0.603 (n=107)
Confusion matrix (rows=expected, cols=predicted):
action conversation knowledge memory_write system uncertain
action 662 4 65 45 4 16
conversation 2 66 8 4 4 9
knowledge 195 0 436 46 34 4
memory_write 135 0 49 351 13 5
system 33 4 42 15 127 5
uncertain 25 6 5 8 0 63
## 6. Residual-only CV metrics
- Accuracy: 67.9%
- Macro F1: 0.663
- False-action count: 388
- False-action rate: 16.0%
- Action precision: 0.620
- Action recall: 0.826
- Uncertain precision: 0.604
- Uncertain recall: 0.570
Per-class metrics:
action P=0.620 R=0.826 F1=0.708 (n=766)
conversation P=0.807 R=0.720 F1=0.761 (n=93)
knowledge P=0.713 R=0.606 F1=0.655 (n=715)
memory_write P=0.754 R=0.649 F1=0.698 (n=553)
system P=0.685 R=0.484 F1=0.567 (n=184)
uncertain P=0.604 R=0.570 F1=0.587 (n=107)
Confusion matrix (rows=expected, cols=predicted):
action conversation knowledge memory_write system uncertain
action 633 4 69 43 0 17
conversation 2 67 8 6 1 9
knowledge 198 1 433 44 35 4
memory_write 133 0 50 359 5 6
system 29 5 42 15 89 4
uncertain 26 6 5 9 0 61
## 7. Legacy-vs-linear comparison
### All examples
metric legacy linear e5 delta
-------------------------------------------------------
accuracy 52.2% 68.5% 16.3%
macro F1 — 0.675 —
action precision — 0.629 —
false-action rate 19.9% 15.7% -4.2%
uncertain F1 0.000 0.603 0.603
### Router-residual only
metric legacy linear e5 delta
-------------------------------------------------------
accuracy 40.8% 67.9% 27.1%
macro F1 — 0.663 —
false-action rate — 16.0% —
## 8. Fold variance
All-example CV:
Fold 0: acc=79.8% f1=0.758 false_action=27
Fold 1: acc=79.5% f1=0.594 false_action=40
Fold 2: acc=66.8% f1=0.582 false_action=92
Fold 3: acc=67.8% f1=0.667 false_action=102
Fold 4: acc=52.0% f1=0.478 false_action=129
Residual-only CV:
Fold 0: acc=78.7% f1=0.747 false_action=28
Fold 1: acc=78.7% f1=0.590 false_action=38
Fold 2: acc=67.6% f1=0.582 false_action=92
Fold 3: acc=66.2% f1=0.648 false_action=104
Fold 4: acc=51.0% f1=0.474 false_action=126
## 9. False-action repair/new-error analysis
Note: Legacy per-example predictions were not available for this experiment.
The legacy baseline was measured in aggregate in the Go test suite.
Learned router false-action cases (out-of-fold):
kq-deadline-1717: 'когда дедлайн по задаче, пожалуйста' (true=knowledge, proba(action)=0.559)
kq-deadline-1720: 'я хочу я успеваю до дедлайна по задаче' (true=knowledge, proba(action)=0.491)
kq-deadline-1724: 'я хочу когда дедлайн по задаче' (true=knowledge, proba(action)=0.566)
kq-deadline-1725: 'надо бы когда дедлайн по задаче' (true=knowledge, proba(action)=0.526)
kq-deadline-1729: 'по задаче когда дедлайн' (true=knowledge, proba(action)=0.361)
mw-fact-pills-2224: 'принял таблетки сегодня' (true=memory_write, proba(action)=0.342)
mw-fact-pills-2229: 'принял таблетки вечером, пожалуйста' (true=memory_write, proba(action)=0.416)
mw-fact-pills-2230: 'принял таблетки сегодня, пожалуйста' (true=memory_write, proba(action)=0.282)
mw-note-idea-2363: 'запиши идею: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.395)
mw-note-idea-2366: 'идея: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.399)
mw-note-idea-2367: 'идея: сервер в шкаф, пожалуйста' (true=memory_write, proba(action)=0.517)
mw-note-idea-2369: '记住: гидропоника на балконе, пожалуйста' (true=memory_write, proba(action)=0.410)
mw-note-idea-2370: '记住: сервер в шкаф, пожалуйста' (true=memory_write, proba(action)=0.539)
mw-note-idea-2380: 'я хочу идея: сервер в шкаф' (true=memory_write, proba(action)=0.455)
mw-note-idea-2386: 'я хочу 记住: сервер в шкаф' (true=memory_write, proba(action)=0.460)
mw-note-idea-2393: 'гидропоника на балконе идея:' (true=memory_write, proba(action)=0.483)
mw-note-idea-2396: 'гидропоника на балконе 记住:' (true=memory_write, proba(action)=0.464)
sys-quiet-on-2577: 'я хочу режим тишина' (true=system, proba(action)=0.448)
conv-goodbye-2869: 'до свидания, пожалуйста' (true=conversation, proba(action)=0.253)
conv-goodbye-2875: 'я хочу до свидания' (true=conversation, proba(action)=0.213)
unc-single-word-verb-2947: 'выключи' (true=uncertain, proba(action)=0.873)
unc-single-word-verb-2948: 'включи' (true=uncertain, proba(action)=0.698)
unc-single-word-verb-2949: 'перезапусти, пожалуйста' (true=uncertain, proba(action)=0.428)
unc-single-word-verb-2950: 'выключи, пожалуйста' (true=uncertain, proba(action)=0.835)
unc-single-word-verb-2951: 'включи, пожалуйста' (true=uncertain, proba(action)=0.691)
unc-single-word-verb-2953: 'я хочу выключи' (true=uncertain, proba(action)=0.733)
unc-single-word-verb-2954: 'я хочу включи' (true=uncertain, proba(action)=0.720)
kq-homelab-disk-1494: 'хватает ли места на диске' (true=knowledge, proba(action)=0.635)
kq-homelab-disk-1498: 'хватает ли места на диске, пожалуйста' (true=knowledge, proba(action)=0.664)
kq-homelab-disk-1503: 'я хочу хватает ли места на диске' (true=knowledge, proba(action)=0.500)
kq-homelab-disk-1504: 'надо бы хватает ли места на диске' (true=knowledge, proba(action)=0.630)
kq-homelab-disk-1510: 'на диске хватает ли места' (true=knowledge, proba(action)=0.541)
kq-task-check-1700: 'покажи задачи' (true=knowledge, proba(action)=0.859)
kq-task-check-1702: 'какие задачи есть, пожалуйста' (true=knowledge, proba(action)=0.574)
kq-task-check-1703: 'покажи задачи, пожалуйста' (true=knowledge, proba(action)=0.808)
kq-task-check-1706: 'я хочу покажи задачи' (true=knowledge, proba(action)=0.715)
kq-task-check-1709: 'покажи задачи?' (true=knowledge, proba(action)=0.514)
mw-note-task-2429: 'добавь в задачи купить молоко' (true=memory_write, proba(action)=0.935)
mw-note-task-2430: 'добавь в задачи починить кран' (true=memory_write, proba(action)=0.721)
mw-note-task-2431: 'добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.900)
mw-note-task-2432: 'запиши задачу купить молоко' (true=memory_write, proba(action)=0.740)
mw-note-task-2433: 'запиши задачу починить кран' (true=memory_write, proba(action)=0.548)
mw-note-task-2434: 'запиши задачу обновить сервер' (true=memory_write, proba(action)=0.773)
mw-note-task-2435: 'добавь в задачи купить молоко, пожалуйста' (true=memory_write, proba(action)=0.851)
mw-note-task-2436: 'добавь в задачи починить кран, пожалуйста' (true=memory_write, proba(action)=0.743)
mw-note-task-2437: 'добавь в задачи обновить сервер, пожалуйста' (true=memory_write, proba(action)=0.925)
mw-note-task-2438: 'запиши задачу купить молоко, пожалуйста' (true=memory_write, proba(action)=0.617)
mw-note-task-2439: 'запиши задачу починить кран, пожалуйста' (true=memory_write, proba(action)=0.549)
mw-note-task-2440: 'запиши задачу обновить сервер, пожалуйста' (true=memory_write, proba(action)=0.739)
mw-note-task-2441: 'я хочу добавь в задачи купить молоко' (true=memory_write, proba(action)=0.820)
mw-note-task-2442: 'надо бы добавь в задачи купить молоко' (true=memory_write, proba(action)=0.791)
mw-note-task-2443: 'я хочу добавь в задачи починить кран' (true=memory_write, proba(action)=0.568)
mw-note-task-2444: 'надо бы добавь в задачи починить кран' (true=memory_write, proba(action)=0.503)
mw-note-task-2445: 'я хочу добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.870)
mw-note-task-2446: 'надо бы добавь в задачи обновить сервер' (true=memory_write, proba(action)=0.724)
mw-note-task-2447: 'я хочу запиши задачу купить молоко' (true=memory_write, proba(action)=0.658)
mw-note-task-2448: 'надо бы запиши задачу купить молоко' (true=memory_write, proba(action)=0.676)
mw-note-task-2449: 'я хочу запиши задачу починить кран' (true=memory_write, proba(action)=0.557)
mw-note-task-2450: 'надо бы запиши задачу починить кран' (true=memory_write, proba(action)=0.458)
mw-note-task-2451: 'я хочу запиши задачу обновить сервер' (true=memory_write, proba(action)=0.676)
mw-note-task-2452: 'надо бы запиши задачу обновить сервер' (true=memory_write, proba(action)=0.495)
mw-note-task-2453: 'купить молоко добавь в задачи' (true=memory_write, proba(action)=0.926)
mw-note-task-2454: 'починить кран добавь в задачи' (true=memory_write, proba(action)=0.895)
mw-note-task-2455: 'обновить сервер добавь в задачи' (true=memory_write, proba(action)=0.933)
mw-note-task-2456: 'купить молоко запиши задачу' (true=memory_write, proba(action)=0.884)
mw-note-task-2457: 'починить кран запиши задачу' (true=memory_write, proba(action)=0.701)
mw-note-task-2458: 'обновить сервер запиши задачу' (true=memory_write, proba(action)=0.783)
kq-cal-time-1063: 'когда планёрка, пожалуйста' (true=knowledge, proba(action)=0.499)
kq-cal-time-1066: 'я хочу когда планёрка' (true=knowledge, proba(action)=0.457)
kq-world-def-1205: 'что такое TCP' (true=knowledge, proba(action)=0.592)
kq-world-def-1207: 'что такое Kubernetes' (true=knowledge, proba(action)=0.581)
kq-world-def-1209: 'что такое React' (true=knowledge, proba(action)=0.396)
kq-world-def-1210: 'кто такой TCP' (true=knowledge, proba(action)=0.428)
kq-world-def-1215: 'что значит TCP' (true=knowledge, proba(action)=0.581)
kq-world-def-1217: 'что значит Kubernetes' (true=knowledge, proba(action)=0.564)
kq-world-def-1219: 'что значит React' (true=knowledge, proba(action)=0.441)
kq-world-def-1220: 'что такое TCP, пожалуйста' (true=knowledge, proba(action)=0.785)
kq-world-def-1221: 'что такое Docker, пожалуйста' (true=knowledge, proba(action)=0.456)
kq-world-def-1222: 'что такое Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.700)
kq-world-def-1224: 'что такое React, пожалуйста' (true=knowledge, proba(action)=0.587)
kq-world-def-1225: 'кто такой TCP, пожалуйста' (true=knowledge, proba(action)=0.615)
kq-world-def-1227: 'кто такой Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.687)
kq-world-def-1229: 'кто такой React, пожалуйста' (true=knowledge, proba(action)=0.411)
kq-world-def-1230: 'что значит TCP, пожалуйста' (true=knowledge, proba(action)=0.771)
kq-world-def-1231: 'что значит Docker, пожалуйста' (true=knowledge, proba(action)=0.444)
kq-world-def-1232: 'что значит Kubernetes, пожалуйста' (true=knowledge, proba(action)=0.639)
kq-world-def-1234: 'что значит React, пожалуйста' (true=knowledge, proba(action)=0.561)
kq-world-def-1235: 'я хочу что такое TCP' (true=knowledge, proba(action)=0.588)
kq-world-def-1236: 'надо бы что такое TCP' (true=knowledge, proba(action)=0.415)
kq-world-def-1239: 'я хочу что такое Kubernetes' (true=knowledge, proba(action)=0.442)
kq-world-def-1240: 'надо бы что такое Kubernetes' (true=knowledge, proba(action)=0.460)
kq-world-def-1243: 'я хочу что такое React' (true=knowledge, proba(action)=0.411)
kq-world-def-1244: 'надо бы что такое React' (true=knowledge, proba(action)=0.331)
kq-world-def-1245: 'я хочу кто такой TCP' (true=knowledge, proba(action)=0.350)
kq-world-def-1249: 'я хочу кто такой Kubernetes' (true=knowledge, proba(action)=0.418)
kq-world-def-1250: 'надо бы кто такой Kubernetes' (true=knowledge, proba(action)=0.358)
kq-world-def-1255: 'я хочу что значит TCP' (true=knowledge, proba(action)=0.630)
kq-world-def-1256: 'надо бы что значит TCP' (true=knowledge, proba(action)=0.442)
kq-world-def-1259: 'я хочу что значит Kubernetes' (true=knowledge, proba(action)=0.576)
kq-world-def-1263: 'я хочу что значит React' (true=knowledge, proba(action)=0.480)
kq-world-def-1265: 'TCP что такое' (true=knowledge, proba(action)=0.510)
kq-world-def-1267: 'Kubernetes что такое' (true=knowledge, proba(action)=0.483)
kq-world-def-1269: 'React что такое' (true=knowledge, proba(action)=0.365)
kq-world-def-1270: 'TCP кто такой' (true=knowledge, proba(action)=0.331)
kq-world-def-1272: 'Kubernetes кто такой' (true=knowledge, proba(action)=0.406)
kq-world-def-1275: 'TCP что значит' (true=knowledge, proba(action)=0.493)
kq-world-def-1277: 'Kubernetes что значит' (true=knowledge, proba(action)=0.436)
kq-world-def-1279: 'React что значит' (true=knowledge, proba(action)=0.358)
kq-world-def-1280: 'что такое TCP?' (true=knowledge, proba(action)=0.624)
kq-world-def-1282: 'что такое Kubernetes?' (true=knowledge, proba(action)=0.544)
kq-world-def-1284: 'что такое React?' (true=knowledge, proba(action)=0.350)
kq-world-def-1285: 'кто такой TCP?' (true=knowledge, proba(action)=0.407)
kq-world-def-1289: 'кто такой React?' (true=knowledge, proba(action)=0.266)
kq-world-def-1290: 'что значит TCP?' (true=knowledge, proba(action)=0.514)
kq-world-def-1292: 'что значит Kubernetes?' (true=knowledge, proba(action)=0.509)
kq-world-def-1294: 'что значит React?' (true=knowledge, proba(action)=0.356)
kq-homelab-status-1429: 'как дела с бэкапами' (true=knowledge, proba(action)=0.442)
kq-homelab-status-1431: 'как дела с доменом' (true=knowledge, proba(action)=0.518)
kq-homelab-status-1433: 'есть новости по бэкапами, пожалуйста' (true=knowledge, proba(action)=0.389)
kq-homelab-status-1435: 'есть новости по доменом, пожалуйста' (true=knowledge, proba(action)=0.497)
kq-homelab-status-1439: 'что там с доменом, пожалуйста' (true=knowledge, proba(action)=0.418)
kq-homelab-status-1441: 'как дела с бэкапами, пожалуйста' (true=knowledge, proba(action)=0.509)
kq-homelab-status-1442: 'как дела с сервером, пожалуйста' (true=knowledge, proba(action)=0.569)
kq-homelab-status-1443: 'как дела с доменом, пожалуйста' (true=knowledge, proba(action)=0.697)
kq-homelab-status-1444: 'как дела с DNS, пожалуйста' (true=knowledge, proba(action)=0.452)
kq-homelab-status-1461: 'я хочу как дела с бэкапами' (true=knowledge, proba(action)=0.434)
kq-homelab-status-1462: 'надо бы как дела с бэкапами' (true=knowledge, proba(action)=0.437)
kq-homelab-status-1465: 'я хочу как дела с доменом' (true=knowledge, proba(action)=0.427)
kq-homelab-status-1471: 'доменом есть новости по' (true=knowledge, proba(action)=0.350)
kq-homelab-status-1477: 'бэкапами как дела с' (true=knowledge, proba(action)=0.386)
mw-fact-break-2172: 'час took a break' (true=memory_write, proba(action)=0.508)
mw-fact-break-2173: 'пять минут took a break' (true=memory_write, proba(action)=0.416)
sys-self-version-2739: 'текущая версия maven' (true=system, proba(action)=0.668)
sys-self-version-2741: 'текущая версия праксиса' (true=system, proba(action)=0.363)
sys-self-version-2742: 'what version maven' (true=system, proba(action)=0.750)
sys-self-version-2743: 'what version нексуса' (true=system, proba(action)=0.395)
sys-self-version-2744: 'what version праксиса' (true=system, proba(action)=0.570)
sys-self-version-2745: 'какая версия maven, пожалуйста' (true=system, proba(action)=0.589)
sys-self-version-2747: 'какая версия праксиса, пожалуйста' (true=system, proba(action)=0.396)
sys-self-version-2748: 'текущая версия maven, пожалуйста' (true=system, proba(action)=0.737)
sys-self-version-2749: 'текущая версия нексуса, пожалуйста' (true=system, proba(action)=0.384)
sys-self-version-2750: 'текущая версия праксиса, пожалуйста' (true=system, proba(action)=0.486)
sys-self-version-2751: 'what version maven, пожалуйста' (true=system, proba(action)=0.711)
sys-self-version-2752: 'what version нексуса, пожалуйста' (true=system, proba(action)=0.394)
sys-self-version-2753: 'what version праксиса, пожалуйста' (true=system, proba(action)=0.576)
sys-self-version-2760: 'я хочу текущая версия maven' (true=system, proba(action)=0.601)
sys-self-version-2761: 'надо бы текущая версия maven' (true=system, proba(action)=0.633)
sys-self-version-2763: 'надо бы текущая версия нексуса' (true=system, proba(action)=0.409)
sys-self-version-2764: 'я хочу текущая версия праксиса' (true=system, proba(action)=0.367)
sys-self-version-2766: 'я хочу what version maven' (true=system, proba(action)=0.714)
sys-self-version-2767: 'надо бы what version maven' (true=system, proba(action)=0.501)
sys-self-version-2768: 'я хочу what version нексуса' (true=system, proba(action)=0.408)
sys-self-version-2770: 'я хочу what version праксиса' (true=system, proba(action)=0.568)
sys-self-version-2775: 'maven текущая версия' (true=system, proba(action)=0.734)
sys-self-version-2776: 'нексуса текущая версия' (true=system, proba(action)=0.386)
sys-self-version-2777: 'праксиса текущая версия' (true=system, proba(action)=0.557)
sys-self-version-2778: 'maven what version' (true=system, proba(action)=0.712)
sys-self-version-2779: 'нексуса what version' (true=system, proba(action)=0.441)
sys-self-version-2780: 'праксиса what version' (true=system, proba(action)=0.582)
kq-world-explain-1303: 'опиши машинное обучение' (true=knowledge, proba(action)=0.545)
kq-world-explain-1309: 'объясни машинное обучение, пожалуйста' (true=knowledge, proba(action)=0.536)
kq-world-explain-1312: 'опиши машинное обучение, пожалуйста' (true=knowledge, proba(action)=0.607)
kq-world-explain-1330: 'надо бы опиши машинное обучение' (true=knowledge, proba(action)=0.376)
kq-world-explain-1336: 'машинное обучение объясни' (true=knowledge, proba(action)=0.471)
kq-world-explain-1339: 'машинное обучение опиши' (true=knowledge, proba(action)=0.587)
kq-cap-ha-1734: 'ты можешь выключить свет' (true=knowledge, proba(action)=0.920)
kq-cap-ha-1735: 'ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.988)
kq-cap-ha-1736: 'ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.983)
kq-cap-ha-1737: 'ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.909)
kq-cap-ha-1738: 'умеешь ли включить свет' (true=knowledge, proba(action)=0.779)
kq-cap-ha-1739: 'умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.942)
kq-cap-ha-1740: 'умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.898)
kq-cap-ha-1741: 'умеешь ли включить вентилятор' (true=knowledge, proba(action)=0.508)
kq-cap-ha-1742: 'сможешь открыть свет' (true=knowledge, proba(action)=0.919)
kq-cap-ha-1743: 'сможешь открыть жалюзи' (true=knowledge, proba(action)=0.986)
kq-cap-ha-1744: 'сможешь открыть вытяжку' (true=knowledge, proba(action)=0.981)
kq-cap-ha-1745: 'сможешь открыть вентилятор' (true=knowledge, proba(action)=0.900)
kq-cap-ha-1746: 'ты можешь выключить свет, пожалуйста' (true=knowledge, proba(action)=0.928)
kq-cap-ha-1747: 'ты можешь выключить жалюзи, пожалуйста' (true=knowledge, proba(action)=0.988)
kq-cap-ha-1748: 'ты можешь выключить вытяжку, пожалуйста' (true=knowledge, proba(action)=0.976)
kq-cap-ha-1749: 'ты можешь выключить вентилятор, пожалуйста' (true=knowledge, proba(action)=0.938)
kq-cap-ha-1750: 'умеешь ли включить свет, пожалуйста' (true=knowledge, proba(action)=0.846)
kq-cap-ha-1751: 'умеешь ли включить жалюзи, пожалуйста' (true=knowledge, proba(action)=0.938)
kq-cap-ha-1752: 'умеешь ли включить вытяжку, пожалуйста' (true=knowledge, proba(action)=0.902)
kq-cap-ha-1753: 'умеешь ли включить вентилятор, пожалуйста' (true=knowledge, proba(action)=0.559)
kq-cap-ha-1754: 'сможешь открыть свет, пожалуйста' (true=knowledge, proba(action)=0.892)
kq-cap-ha-1755: 'сможешь открыть жалюзи, пожалуйста' (true=knowledge, proba(action)=0.978)
kq-cap-ha-1756: 'сможешь открыть вытяжку, пожалуйста' (true=knowledge, proba(action)=0.975)
kq-cap-ha-1757: 'сможешь открыть вентилятор, пожалуйста' (true=knowledge, proba(action)=0.929)
kq-cap-ha-1758: 'я хочу ты можешь выключить свет' (true=knowledge, proba(action)=0.835)
kq-cap-ha-1759: 'надо бы ты можешь выключить свет' (true=knowledge, proba(action)=0.746)
kq-cap-ha-1760: 'я хочу ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.951)
kq-cap-ha-1761: 'надо бы ты можешь выключить жалюзи' (true=knowledge, proba(action)=0.961)
kq-cap-ha-1762: 'я хочу ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.932)
kq-cap-ha-1763: 'надо бы ты можешь выключить вытяжку' (true=knowledge, proba(action)=0.952)
kq-cap-ha-1764: 'я хочу ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.837)
kq-cap-ha-1765: 'надо бы ты можешь выключить вентилятор' (true=knowledge, proba(action)=0.754)
kq-cap-ha-1766: 'я хочу умеешь ли включить свет' (true=knowledge, proba(action)=0.793)
kq-cap-ha-1767: 'надо бы умеешь ли включить свет' (true=knowledge, proba(action)=0.640)
kq-cap-ha-1768: 'я хочу умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.892)
kq-cap-ha-1769: 'надо бы умеешь ли включить жалюзи' (true=knowledge, proba(action)=0.784)
kq-cap-ha-1770: 'я хочу умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.822)
kq-cap-ha-1771: 'надо бы умеешь ли включить вытяжку' (true=knowledge, proba(action)=0.798)
kq-cap-ha-1774: 'я хочу сможешь открыть свет' (true=knowledge, proba(action)=0.840)
kq-cap-ha-1775: 'надо бы сможешь открыть свет' (true=knowledge, proba(action)=0.838)
kq-cap-ha-1776: 'я хочу сможешь открыть жалюзи' (true=knowledge, proba(action)=0.946)
kq-cap-ha-1777: 'надо бы сможешь открыть жалюзи' (true=knowledge, proba(action)=0.940)
kq-cap-ha-1778: 'я хочу сможешь открыть вытяжку' (true=knowledge, proba(action)=0.936)
kq-cap-ha-1779: 'надо бы сможешь открыть вытяжку' (true=knowledge, proba(action)=0.933)
kq-cap-ha-1780: 'я хочу сможешь открыть вентилятор' (true=knowledge, proba(action)=0.857)
kq-cap-ha-1781: 'надо бы сможешь открыть вентилятор' (true=knowledge, proba(action)=0.700)
kq-cap-ha-1782: 'свет ты можешь выключить' (true=knowledge, proba(action)=0.893)
kq-cap-ha-1783: 'жалюзи ты можешь выключить' (true=knowledge, proba(action)=0.982)
kq-cap-ha-1784: 'вытяжку ты можешь выключить' (true=knowledge, proba(action)=0.971)
kq-cap-ha-1785: 'вентилятор ты можешь выключить' (true=knowledge, proba(action)=0.897)
kq-cap-ha-1786: 'свет умеешь ли включить' (true=knowledge, proba(action)=0.786)
kq-cap-ha-1787: 'жалюзи умеешь ли включить' (true=knowledge, proba(action)=0.946)
kq-cap-ha-1788: 'вытяжку умеешь ли включить' (true=knowledge, proba(action)=0.924)
kq-cap-ha-1789: 'вентилятор умеешь ли включить' (true=knowledge, proba(action)=0.674)
kq-cap-ha-1790: 'свет сможешь открыть' (true=knowledge, proba(action)=0.931)
kq-cap-ha-1791: 'жалюзи сможешь открыть' (true=knowledge, proba(action)=0.983)
kq-cap-ha-1792: 'вытяжку сможешь открыть' (true=knowledge, proba(action)=0.967)
kq-cap-ha-1793: 'вентилятор сможешь открыть' (true=knowledge, proba(action)=0.886)
kq-cap-ha-1794: 'ты можешь выключить свет?' (true=knowledge, proba(action)=0.913)
kq-cap-ha-1795: 'ты можешь выключить жалюзи?' (true=knowledge, proba(action)=0.980)
kq-cap-ha-1796: 'ты можешь выключить вытяжку?' (true=knowledge, proba(action)=0.970)
kq-cap-ha-1797: 'ты можешь выключить вентилятор?' (true=knowledge, proba(action)=0.862)
kq-cap-ha-1798: 'умеешь ли включить свет?' (true=knowledge, proba(action)=0.709)
kq-cap-ha-1799: 'умеешь ли включить жалюзи?' (true=knowledge, proba(action)=0.866)
kq-cap-ha-1800: 'умеешь ли включить вытяжку?' (true=knowledge, proba(action)=0.862)
kq-cap-ha-1802: 'сможешь открыть свет?' (true=knowledge, proba(action)=0.905)
kq-cap-ha-1803: 'сможешь открыть жалюзи?' (true=knowledge, proba(action)=0.975)
kq-cap-ha-1804: 'сможешь открыть вытяжку?' (true=knowledge, proba(action)=0.967)
kq-cap-ha-1805: 'сможешь открыть вентилятор?' (true=knowledge, proba(action)=0.859)
mw-fact-water-1881: 'воды попил стакан, пожалуйста' (true=memory_write, proba(action)=0.543)
mw-fact-water-1882: 'воды попил литр, пожалуйста' (true=memory_write, proba(action)=0.444)
mw-fact-water-1886: 'пил воду литр, пожалуйста' (true=memory_write, proba(action)=0.480)
mw-fact-water-1894: 'я хочу выпил воды стакан' (true=memory_write, proba(action)=0.527)
mw-fact-water-1896: 'я хочу выпил воды литр' (true=memory_write, proba(action)=0.465)
mw-fact-water-1902: 'я хочу воды попил стакан' (true=memory_write, proba(action)=0.503)
mw-fact-water-1904: 'я хочу воды попил литр' (true=memory_write, proba(action)=0.403)
mw-fact-water-1910: 'я хочу пил воду стакан' (true=memory_write, proba(action)=0.468)
mw-fact-water-1925: 'стакан выпил воды' (true=memory_write, proba(action)=0.575)
mw-fact-water-1929: 'стакан воды попил' (true=memory_write, proba(action)=0.613)
unc-ambiguous-noun-2892: 'вода' (true=uncertain, proba(action)=0.371)
unc-ambiguous-noun-2893: 'бэкап' (true=uncertain, proba(action)=0.641)
unc-ambiguous-noun-2894: 'сервер' (true=uncertain, proba(action)=0.505)
unc-ambiguous-noun-2895: 'контейнер' (true=uncertain, proba(action)=0.978)
unc-ambiguous-noun-2896: 'задача' (true=uncertain, proba(action)=0.746)
unc-ambiguous-noun-2897: 'вода, пожалуйста' (true=uncertain, proba(action)=0.381)
unc-ambiguous-noun-2898: 'бэкап, пожалуйста' (true=uncertain, proba(action)=0.636)
unc-ambiguous-noun-2899: 'сервер, пожалуйста' (true=uncertain, proba(action)=0.720)
unc-ambiguous-noun-2900: 'контейнер, пожалуйста' (true=uncertain, proba(action)=0.938)
unc-ambiguous-noun-2901: 'задача, пожалуйста' (true=uncertain, proba(action)=0.742)
unc-ambiguous-noun-2902: 'я хочу вода' (true=uncertain, proba(action)=0.476)
unc-ambiguous-noun-2903: 'я хочу бэкап' (true=uncertain, proba(action)=0.731)
unc-ambiguous-noun-2904: 'я хочу сервер' (true=uncertain, proba(action)=0.661)
unc-ambiguous-noun-2905: 'я хочу контейнер' (true=uncertain, proba(action)=0.946)
unc-ambiguous-noun-2906: 'я хочу задача' (true=uncertain, proba(action)=0.747)
unc-multi-ambiguous-3001: 'всё ок' (true=uncertain, proba(action)=0.391)
unc-multi-ambiguous-3007: 'я хочу всё ок' (true=uncertain, proba(action)=0.447)
kq-cap-tool-1806: 'ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.975)
kq-cap-tool-1807: 'ты можешь перезапустить docker' (true=knowledge, proba(action)=0.936)
kq-cap-tool-1808: 'ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.736)
kq-cap-tool-1809: 'сможешь остановить nginx' (true=knowledge, proba(action)=0.923)
kq-cap-tool-1810: 'сможешь остановить docker' (true=knowledge, proba(action)=0.849)
kq-cap-tool-1811: 'сможешь остановить сервер' (true=knowledge, proba(action)=0.802)
kq-cap-tool-1812: 'умеешь ли проверить nginx' (true=knowledge, proba(action)=0.691)
kq-cap-tool-1815: 'ты можешь перезапустить nginx, пожалуйста' (true=knowledge, proba(action)=0.975)
kq-cap-tool-1816: 'ты можешь перезапустить docker, пожалуйста' (true=knowledge, proba(action)=0.942)
kq-cap-tool-1817: 'ты можешь перезапустить сервер, пожалуйста' (true=knowledge, proba(action)=0.834)
kq-cap-tool-1818: 'сможешь остановить nginx, пожалуйста' (true=knowledge, proba(action)=0.958)
kq-cap-tool-1819: 'сможешь остановить docker, пожалуйста' (true=knowledge, proba(action)=0.890)
kq-cap-tool-1820: 'сможешь остановить сервер, пожалуйста' (true=knowledge, proba(action)=0.877)
kq-cap-tool-1821: 'умеешь ли проверить nginx, пожалуйста' (true=knowledge, proba(action)=0.761)
kq-cap-tool-1824: 'я хочу ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.937)
kq-cap-tool-1825: 'надо бы ты можешь перезапустить nginx' (true=knowledge, proba(action)=0.934)
kq-cap-tool-1826: 'я хочу ты можешь перезапустить docker' (true=knowledge, proba(action)=0.813)
kq-cap-tool-1827: 'надо бы ты можешь перезапустить docker' (true=knowledge, proba(action)=0.787)
kq-cap-tool-1828: 'я хочу ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.676)
kq-cap-tool-1829: 'надо бы ты можешь перезапустить сервер' (true=knowledge, proba(action)=0.570)
kq-cap-tool-1830: 'я хочу сможешь остановить nginx' (true=knowledge, proba(action)=0.908)
kq-cap-tool-1831: 'надо бы сможешь остановить nginx' (true=knowledge, proba(action)=0.918)
kq-cap-tool-1832: 'я хочу сможешь остановить docker' (true=knowledge, proba(action)=0.806)
kq-cap-tool-1833: 'надо бы сможешь остановить docker' (true=knowledge, proba(action)=0.789)
kq-cap-tool-1834: 'я хочу сможешь остановить сервер' (true=knowledge, proba(action)=0.795)
kq-cap-tool-1835: 'надо бы сможешь остановить сервер' (true=knowledge, proba(action)=0.721)
kq-cap-tool-1836: 'я хочу умеешь ли проверить nginx' (true=knowledge, proba(action)=0.587)
kq-cap-tool-1837: 'надо бы умеешь ли проверить nginx' (true=knowledge, proba(action)=0.505)
kq-cap-tool-1842: 'nginx ты можешь перезапустить' (true=knowledge, proba(action)=0.943)
kq-cap-tool-1843: 'docker ты можешь перезапустить' (true=knowledge, proba(action)=0.908)
kq-cap-tool-1844: 'сервер ты можешь перезапустить' (true=knowledge, proba(action)=0.776)
kq-cap-tool-1845: 'nginx сможешь остановить' (true=knowledge, proba(action)=0.880)
kq-cap-tool-1846: 'docker сможешь остановить' (true=knowledge, proba(action)=0.790)
kq-cap-tool-1847: 'сервер сможешь остановить' (true=knowledge, proba(action)=0.660)
kq-cap-tool-1848: 'nginx умеешь ли проверить' (true=knowledge, proba(action)=0.633)
kq-cap-tool-1851: 'ты можешь перезапустить nginx?' (true=knowledge, proba(action)=0.947)
kq-cap-tool-1852: 'ты можешь перезапустить docker?' (true=knowledge, proba(action)=0.886)
kq-cap-tool-1853: 'ты можешь перезапустить сервер?' (true=knowledge, proba(action)=0.661)
kq-cap-tool-1854: 'сможешь остановить nginx?' (true=knowledge, proba(action)=0.916)
kq-cap-tool-1855: 'сможешь остановить docker?' (true=knowledge, proba(action)=0.628)
kq-cap-tool-1856: 'сможешь остановить сервер?' (true=knowledge, proba(action)=0.625)
kq-cap-tool-1857: 'умеешь ли проверить nginx?' (true=knowledge, proba(action)=0.604)
mw-fact-meal-1946: 'пообедал салатом' (true=memory_write, proba(action)=0.634)
mw-fact-meal-1950: 'поужинал салатом' (true=memory_write, proba(action)=0.685)
mw-fact-meal-1951: 'поужинал пиццей' (true=memory_write, proba(action)=0.493)
mw-fact-meal-1955: 'ел пиццей' (true=memory_write, proba(action)=0.238)
mw-fact-meal-1962: 'позавтракал салатом, пожалуйста' (true=memory_write, proba(action)=0.459)
mw-fact-meal-1966: 'пообедал салатом, пожалуйста' (true=memory_write, proba(action)=0.656)
mw-fact-meal-1968: 'поужинал овсянкой, пожалуйста' (true=memory_write, proba(action)=0.414)
mw-fact-meal-1970: 'поужинал салатом, пожалуйста' (true=memory_write, proba(action)=0.662)
mw-fact-meal-1974: 'ел салатом, пожалуйста' (true=memory_write, proba(action)=0.592)
mw-fact-meal-1975: 'ел пиццей, пожалуйста' (true=memory_write, proba(action)=0.290)
mw-fact-meal-1976: 'just ate овсянкой, пожалуйста' (true=memory_write, proba(action)=0.328)
mw-fact-meal-1978: 'just ate салатом, пожалуйста' (true=memory_write, proba(action)=0.429)
mw-fact-meal-1984: 'я хочу позавтракал салатом' (true=memory_write, proba(action)=0.483)
mw-fact-meal-1992: 'я хочу пообедал салатом' (true=memory_write, proba(action)=0.626)
mw-fact-meal-1993: 'надо бы пообедал салатом' (true=memory_write, proba(action)=0.528)
mw-fact-meal-2000: 'я хочу поужинал салатом' (true=memory_write, proba(action)=0.675)
mw-fact-meal-2001: 'надо бы поужинал салатом' (true=memory_write, proba(action)=0.483)
mw-fact-meal-2010: 'я хочу ел пиццей' (true=memory_write, proba(action)=0.265)
mw-fact-meal-2016: 'я хочу just ate салатом' (true=memory_write, proba(action)=0.561)
mw-fact-meal-2024: 'овсянкой пообедал' (true=memory_write, proba(action)=0.385)
mw-fact-meal-2026: 'салатом пообедал' (true=memory_write, proba(action)=0.612)
mw-fact-meal-2027: 'пиццей пообедал' (true=memory_write, proba(action)=0.444)
mw-fact-meal-2028: 'овсянкой поужинал' (true=memory_write, proba(action)=0.438)
mw-fact-meal-2030: 'салатом поужинал' (true=memory_write, proba(action)=0.591)
mw-fact-meal-2031: 'пиццей поужинал' (true=memory_write, proba(action)=0.571)
mw-note-homelab-2401: 'заметка про 备份策略' (true=memory_write, proba(action)=0.633)
mw-note-homelab-2404: 'запиши про настройку 备份策略' (true=memory_write, proba(action)=0.657)
mw-note-homelab-2406: 'заметка про DNS записи, пожалуйста' (true=memory_write, proba(action)=0.442)
mw-note-homelab-2407: 'заметка про 备份策略, пожалуйста' (true=memory_write, proba(action)=0.730)
mw-note-homelab-2410: 'запиши про настройку 备份策略, пожалуйста' (true=memory_write, proba(action)=0.719)
mw-note-homelab-2415: 'я хочу заметка про 备份策略' (true=memory_write, proba(action)=0.671)
mw-note-homelab-2416: 'надо бы заметка про 备份策略' (true=memory_write, proba(action)=0.645)
mw-note-homelab-2421: 'я хочу запиши про настройку 备份策略' (true=memory_write, proba(action)=0.561)
mw-note-homelab-2422: 'надо бы запиши про настройку 备份策略' (true=memory_write, proba(action)=0.666)
mw-note-homelab-2425: '备份策略 заметка про' (true=memory_write, proba(action)=0.742)
mw-note-homelab-2428: '备份策略 запиши про настройку' (true=memory_write, proba(action)=0.633)
mw-free-remember-2460: 'запомни пароль от wifi' (true=memory_write, proba(action)=0.836)
mw-free-remember-2461: 'запомни адрес электрика' (true=memory_write, proba(action)=0.753)
mw-free-remember-2462: 'сохрани что встреча в 3' (true=memory_write, proba(action)=0.457)
mw-free-remember-2463: 'сохрани пароль от wifi' (true=memory_write, proba(action)=0.939)
mw-free-remember-2464: 'сохрани адрес электрика' (true=memory_write, proba(action)=0.980)
mw-free-remember-2466: 'занеси пароль от wifi' (true=memory_write, proba(action)=0.733)
mw-free-remember-2467: 'занеси адрес электрика' (true=memory_write, proba(action)=0.734)
mw-free-remember-2469: 'внеси пароль от wifi' (true=memory_write, proba(action)=0.847)
mw-free-remember-2470: 'внеси адрес электрика' (true=memory_write, proba(action)=0.898)
mw-free-remember-2472: 'запомни пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.866)
mw-free-remember-2473: 'запомни адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.734)
mw-free-remember-2474: 'сохрани что встреча в 3, пожалуйста' (true=memory_write, proba(action)=0.595)
mw-free-remember-2475: 'сохрани пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.942)
mw-free-remember-2476: 'сохрани адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.935)
mw-free-remember-2478: 'занеси пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.830)
mw-free-remember-2479: 'занеси адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.807)
mw-free-remember-2481: 'внеси пароль от wifi, пожалуйста' (true=memory_write, proba(action)=0.942)
mw-free-remember-2482: 'внеси адрес электрика, пожалуйста' (true=memory_write, proba(action)=0.946)
mw-free-remember-2485: 'я хочу запомни пароль от wifi' (true=memory_write, proba(action)=0.692)
mw-free-remember-2486: 'надо бы запомни пароль от wifi' (true=memory_write, proba(action)=0.698)
mw-free-remember-2487: 'я хочу запомни адрес электрика' (true=memory_write, proba(action)=0.768)
mw-free-remember-2488: 'надо бы запомни адрес электрика' (true=memory_write, proba(action)=0.706)
mw-free-remember-2489: 'я хочу сохрани что встреча в 3' (true=memory_write, proba(action)=0.585)
mw-free-remember-2490: 'надо бы сохрани что встреча в 3' (true=memory_write, proba(action)=0.465)
mw-free-remember-2491: 'я хочу сохрани пароль от wifi' (true=memory_write, proba(action)=0.826)
mw-free-remember-2492: 'надо бы сохрани пароль от wifi' (true=memory_write, proba(action)=0.868)
mw-free-remember-2493: 'я хочу сохрани адрес электрика' (true=memory_write, proba(action)=0.914)
mw-free-remember-2494: 'надо бы сохрани адрес электрика' (true=memory_write, proba(action)=0.932)
mw-free-remember-2497: 'я хочу занеси пароль от wifi' (true=memory_write, proba(action)=0.606)
mw-free-remember-2498: 'надо бы занеси пароль от wifi' (true=memory_write, proba(action)=0.775)
mw-free-remember-2499: 'я хочу занеси адрес электрика' (true=memory_write, proba(action)=0.723)
mw-free-remember-2500: 'надо бы занеси адрес электрика' (true=memory_write, proba(action)=0.776)
mw-free-remember-2503: 'я хочу внеси пароль от wifi' (true=memory_write, proba(action)=0.738)
mw-free-remember-2504: 'надо бы внеси пароль от wifi' (true=memory_write, proba(action)=0.895)
mw-free-remember-2505: 'я хочу внеси адрес электрика' (true=memory_write, proba(action)=0.946)
mw-free-remember-2506: 'надо бы внеси адрес электрика' (true=memory_write, proba(action)=0.955)
mw-free-remember-2508: 'пароль от wifi запомни' (true=memory_write, proba(action)=0.843)
mw-free-remember-2509: 'адрес электрика запомни' (true=memory_write, proba(action)=0.817)
mw-free-remember-2510: 'что встреча в 3 сохрани' (true=memory_write, proba(action)=0.582)
mw-free-remember-2511: 'пароль от wifi сохрани' (true=memory_write, proba(action)=0.955)
mw-free-remember-2512: 'адрес электрика сохрани' (true=memory_write, proba(action)=0.974)
mw-free-remember-2514: 'пароль от wifi занеси' (true=memory_write, proba(action)=0.672)
mw-free-remember-2515: 'адрес электрика занеси' (true=memory_write, proba(action)=0.541)
mw-free-remember-2517: 'пароль от wifi внеси' (true=memory_write, proba(action)=0.838)
mw-free-remember-2518: 'адрес электрика внеси' (true=memory_write, proba(action)=0.781)
sys-quiet-off-2583: 'громкий режим' (true=system, proba(action)=0.559)
sys-quiet-off-2584: 'выключи тихий' (true=system, proba(action)=0.372)
sys-quiet-off-2588: 'громкий режим, пожалуйста' (true=system, proba(action)=0.528)
sys-quiet-off-2589: 'выключи тихий, пожалуйста' (true=system, proba(action)=0.470)
sys-quiet-off-2593: 'я хочу громкий режим' (true=system, proba(action)=0.381)
unc-anaphora-2922: 'сделай это, пожалуйста' (true=uncertain, proba(action)=0.312)
## 10. Contrast-family results
### Experiment A (all dev)
family count correct accuracy false_act
------------------------------------------------------------
question 123 91 74.0% 27
capability_question 126 15 11.9% 111
### Experiment B (residual only)
family count correct accuracy false_act
------------------------------------------------------------
question 123 91 74.0% 27
capability_question 126 14 11.1% 112
## 11. Calibration metrics
### Experiment A
- ECE: 0.045
- Brier score: 0.459
- Log loss: 0.929
### Experiment B
- ECE: 0.046
- Brier score: 0.467
- Log loss: 0.946
## 12. Abstention curves
### Experiment A (all dev)
threshold n_accepted coverage accuracy macro_f1 false_act
--------------------------------------------------------------
0.40 2293 92.1% 70.7% 0.706 351
0.50 1968 79.0% 74.5% 0.751 289
0.60 1584 63.6% 78.0% 0.781 227
0.70 1244 50.0% 80.9% 0.812 177
0.80 851 34.2% 84.1% 0.883 120
0.90 438 17.6% 83.3% 0.830 73
### Experiment B (residual only)
threshold n_accepted coverage accuracy macro_f1 false_act
--------------------------------------------------------------
0.40 2244 92.8% 70.4% 0.700 346
0.50 1941 80.3% 73.6% 0.733 285
0.60 1571 65.0% 77.3% 0.771 229
0.70 1228 50.8% 79.9% 0.792 178
0.80 845 34.9% 83.6% 0.873 120
0.90 431 17.8% 81.9% 0.827 78
## 13. Action-threshold curve
### Experiment A
threshold action_P action_R false_act
----------------------------------------
0.40 0.645 0.803 351
0.50 0.672 0.745 289
0.60 0.697 0.655 227
0.70 0.708 0.539 177
0.80 0.733 0.413 120
0.90 0.721 0.237 73
### Experiment B
threshold action_P action_R false_act
----------------------------------------
0.40 0.640 0.803 346
0.50 0.664 0.736 285
0.60 0.687 0.655 229
0.70 0.698 0.537 178
0.80 0.722 0.407 120
0.90 0.690 0.227 78
## 14. Model artifact size and runtime cost
- Trainable parameters: 2310
- 6 classes × 384 features = 2304 weights
- 6 bias terms
- Serialized head size: 9240 bytes (9.0 KB)
- Additional inference FLOPs: 2304 multiply-accumulates
- Incremental cost (e5 already computed): ~2304 FLOPs, <1µs
- Cost if semantic router must trigger its own e5: full ONNX inference (~384 × 128 × 12 = ~590K FLOPs)
## 16. Recommendation
**linear head sufficient**
Residual macro F1 of 0.663 and accuracy of 67.9% exceed the legacy baseline (40.8% residual accuracy) by a meaningful margin. A linear head over frozen e5-small embeddings is a viable first production candidate.
## 17. Commit hash for experiment tooling
`59a0a08d329fbcbefad4ec858cf8c6cc07014a36`