Skip to content

Aโ€“G taxonomy

The NEXORA annotation guide describes 7 observation categories (letters A to G), each with coded labels (e.g. A1). Each 15 s window carries one label per category; each label has a base score /10 (see scoring.py::BASE_SCORE).

The 7 categories

Cat. Name Labels Examples
A Attention Orientation A1โ€“A5 on-task gaze (A1), off-task (A2), peer gaze (A3), prolonged stare (A4), head down (A5)
B Task Activity B1โ€“B5 writing (B1), reading (B2), hand raise (B3), idle (B4), off-task interaction (B5)
C Posture C1โ€“C5 upright attentive (C1), leaning forward (C2), slouched (C3), head on desk (C4), arms crossed (C5)
D Physical Activity D1โ€“D5 yawning (D1), fidgeting (D2), nodding (D3), stretching (D4), no movement (D5)
E Facial / Affective E1โ€“E5 neutral (E1), positive affect (E2), confusion (E3), frustration (E4), face obscured (E5)
F Peer Interaction F1โ€“F4 none (F1), task talk (F2), off-task talk (F3), physical contact (F4)
G Teacher-Cue Response G1โ€“G4 reorients to teacher (G1), no response (G2), delayed (G3), no cue (G4)

Scoring rules

Window = mean of the 7 category scores (unless overridden):

window score = (A + B + C + D + E + F + G) / 7

Contextual rules (a label's score may depend on other categories):

Rule Condition Result
A3 resolved by F A3 + F2 (task talk) A = 10
A3 + F3 (off-task talk) A = 3
A5 resolved by B A5 + B1/B2 (writing/reading) A = 9
A5 + B4/B5 (idle / off-task) A = 0
A5 unresolved A = 5
B4 adjusted by A B4 + A2/A4 (off-task gaze) B = 2
otherwise B = 5
G2 override G2 (no response to a cue) window = 0 (always)

Default labels (rule R2)

When a category was not annotated on a window:

A โ†’ A2 (unverifiable gaze)   B โ†’ B4 (idle)   C โ†’ C1 (standard posture)
D โ†’ D5 (no movement)         E โ†’ E1 (neutral) F โ†’ F1 (no interaction)   G โ†’ G4 (no cue)

Posture C is sampled every 60 s then propagated (forward_fill) over the intermediate windows.

Base scores (extract /10)

Label Score Label Score Label Score
A1 10 B1/B2/B3 10 C2 10
A2 2 B4 5 C1 8
A4 1 B5 0 C3 3
A3 (solo) 3 D5 7 C4 0
D3 10 C5 5
E2 10 D2 3 F1 8
E1/E5 6 D1 2 F2 10
E3 5 D4 4 F3 2
E4 2 F4 4
G1 10 G2 0 G3 5 ยท G4

Input tolerance

The pipeline accepts free text (human CSV) and normalizes it: category variants ("physical activity signals" โ†’ D), punctuation/case ignored, aliases ("on task" โ†’ A1, "writing" โ†’ B1โ€ฆ). What cannot be normalized goes to silver/rejects.