nickypro commited on
Commit
2ea76ea
·
verified ·
1 Parent(s): 93af2d6

Upload data_night3/MANIFEST.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. data_night3/MANIFEST.md +143 -0
data_night3/MANIFEST.md ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # datasets_night3 — MANIFEST
2
+ *Built 2026-06-13 by EX5 (dataset-synthesis agent), NIGHT3_PLAN.md §C "Datasets to
3
+ synthesize". Local CPU build; validation encodes on arena8-keepsake (SONAR
4
+ encode→decode round-trip, see `validation_report.json`). All four files uploaded to
5
+ HF `nickypro/sonar-sae` under `data_night3/`.*
6
+
7
+ Build scripts (deterministic, seed 0): `lexicon.py`, `build_token_position_grid.py`,
8
+ `build_spec_edit_corpus.py`, `build_paraphrase_bank.py`, `build_construction_specs.py`,
9
+ `validate_roundtrip.py`.
10
+
11
+ Frequency bands everywhere (wordfreq zipf): **high ≥ 4.6 · mid 3.6–4.5 · low 2.3–3.3**
12
+ (gap zones avoid borderline assignment).
13
+
14
+ ---
15
+
16
+ ## 1. token_position_grid.jsonl — 9,600 rows (consumers: T1-E1 E-table fit, F-3)
17
+
18
+ **Design:** 200 frequency-stratified words × positions 1–16 × 3 frames. The SAME word
19
+ appears at EVERY position — the design point for conditioning the embedding-table fit.
20
+
21
+ - Words: 50 high / 100 mid / 50 low; POS mix 68 nouns / 67 verbs (base form) /
22
+ 65 adjectives, roughly balanced within each band.
23
+ - Zipf ranges actually realized: high [4.63, 6.25], mid [3.60, 4.49], low [2.38, 3.24].
24
+ - Frames: list-style carrier sentences of exactly **20 words** = 16 comma-separated
25
+ slot words + a fixed 4-word tail ("were on the list" / "appeared in that order" /
26
+ "were read aloud twice"). Fillers are fixed mid-frequency nouns, disjoint across the
27
+ 3 frames and disjoint from the 200 targets. Target replaces the filler at slot p;
28
+ `pos_word_index` is the 1-based word index (slot 1 = sentence-initial, capitalized).
29
+ - Fields: `{word, pos_class, freq_band, zipf, pos_word_index, frame_id, text}`.
30
+ - All 9,600 texts unique.
31
+
32
+ **Known gaps / notes:** frames are word-LIST sentences, not narrative prose — chosen
33
+ deliberately: it is the only construction that admits any POS at any of positions 1–16
34
+ (matches the serial-position / unbinding experimental idiom). Round-trip check shows
35
+ the expected mid-list lexical substitution behavior of SONAR on 16-item lists
36
+ (cos .91, token-F1 .73 — this *is* the capacity phenomenon T1-E1/F-3 measure, not a
37
+ data defect; frame structure and edges decode reliably).
38
+
39
+ ## 2. spec_edit_corpus.jsonl — 1,000 rows (consumers: T1-E4, T2-E10)
40
+
41
+ **Design:** the 10 frozen TAEBench v2 edit types (`taebench_v2.E1_EDIT_TYPES`) × 100
42
+ wild bases each. Bases from the project's fineweb-derived corpus
43
+ (nickypro/llama-3b-split → paragraphs → `SENT_SPLIT`), 8–25 words (mean 19.0),
44
+ quality-filtered, **all 1,000 bases globally unique** (no base reused across types).
45
+ Transforms REUSE `taebench_v2_e1.py` machinery (WORD_PAIRS, ENTITY_PAIRS, TENSE_MAP,
46
+ CONTRACTIONS, `_negate`, `_delete_clause`, `_map_transform`).
47
+
48
+ - Fields: `{base_text, edit_type, spec, gold_rewrite}`;
49
+ `spec = {type, target_lemma, position_index, replacement, parameter, n_words}`.
50
+ - **Leakage-safe schema** (pre-registered, per T1-E4 C4): spec carries edit-type,
51
+ lemma, 1-based whitespace-token position, replacement/parameter — NEVER the target
52
+ sentence. Verified programmatically: 0 rows where gold appears in the spec JSON.
53
+ - Every gold rewrite passes an E1-style per-type heuristic check at build time.
54
+
55
+ **Coverage per type (n=100 each; restrictions that buy gold reliability):**
56
+
57
+ | type | gold rule | restriction | reliability |
58
+ |---|---|---|---|
59
+ | word-swap | E1 WORD_PAIRS, case-preserving | exactly 1 occurrence; mid-sentence capitalized matches skipped (proper-noun guard) | rule-exact |
60
+ | entity-swap | E1 ENTITY_PAIRS | exactly 1 occurrence; skipped if part of longer proper-noun phrase (no "New York City"→"Tokyo City") | rule-exact |
61
+ | number-change | n → n+1 | exactly 1 occurrence, no leading zero | rule-exact |
62
+ | tense | TENSE_MAP present→past | exactly ONE mapped verb; noun/verb-ambiguous forms ("leaves","needs",…) only after pronouns; det/poss-preceded matches skipped | rule-exact under restriction |
63
+ | person | we/us/our→they/them/their (+contractions) | **first-person PLURAL only** (verb agreement is invariant for we→they; singular I→she needs conjugation and was excluded rather than emit garbage) | rule-exact under restriction |
64
+ | negation | insert "not" after first aux (E1 `_negate`) | BE/modal aux always; has/have/do/does only before a clear participle/verb form | rule-exact under restriction |
65
+ | register | contraction expansion (the project's frozen E1 operationalization — a register PROXY) | exactly 1 contraction | rule-exact; flagged as proxy |
66
+ | insert-clause | append ", according to officials." | base ≤22 words, no prior "according to" | rule-exact |
67
+ | delete-clause | E1 `_delete_clause` (trailing ", clause" of 3–14 words) | rule must fire | rule-exact |
68
+ | reorder | swap two consecutive corpus sentences | both 4–12 words, combined 8–25; abbreviation-split pairs ("… v." etc.) filtered | rule-exact |
69
+
70
+ **Honest coverage statement:** all 10/10 types ship with rule-based golds, but tense,
71
+ person, negation are *restricted sub-distributions* (see table) — they cover the
72
+ machine-verifiable subset, not the full linguistic phenomenon. Register is contraction
73
+ expansion (proxy), matching the frozen E1 suite. No type was LLM-generated.
74
+
75
+ ## 3. paraphrase_bank_v2.jsonl — 2,000 rows (consumer: T2-E12)
76
+
77
+ **Design:** length-matched pairs, |len_a − len_b| ≤ 2 enforced on every row
78
+ (distribution: 795 diff-0, 457 diff-1, 748 diff-2). Mean len_a 8.4 words.
79
+ Fields: `{text_a, text_b, len_a, len_b, len_diff, pair_type}`.
80
+
81
+ | pair_type | n | provenance |
82
+ |---|---|---|
83
+ | mined_orbit | 142 | mined from existing artifact hf:`tae_wording_subspace_paras.json` (Q3-009 SSAE/wording orbits); the cache has known batch misalignment, so pairs filtered by length match + content-Jaccard ≥.2 + SBERT cos ≥.78 + markup/abbreviation filters |
84
+ | template_active_passive | 700 | rule transform, lexicon templates ("The Adj N Vt the Adj N." ↔ "The Adj N was PP by the Adj N."), verbs restricted to past==participle so the passive is morphologically exact |
85
+ | template_cleft_passive | 400 | "It was the X that Vt the Y." ↔ "The Y was PP by the X." |
86
+ | template_adverb_move | 758 | sentence-final manner adverb ↔ fronted "Adv, …" (pure reorder, diff 0) |
87
+
88
+ **Known gaps:** (i) wild-corpus adverb-fronting was attempted and yielded ~0 pairs
89
+ after the attachment-safety filter (single-clause only, no subordinators/gerunds) —
90
+ the 63 lenient candidates were REJECTED for clause-attachment ambiguity ("…selling out
91
+ quickly" ≠ "Quickly, …") rather than shipped; so 93% of the bank is template-derived,
92
+ length-controlled but synthetic-register. (ii) mined_orbit is small (142) because the
93
+ source cache holds only 197 orbits and is contaminated. (iii) template pairs are
94
+ semantically absurd-but-grammatical by construction (lexicon sampling) — meaning
95
+ equivalence WITHIN each pair holds by the transform, which is what T2-E12's CE-margin
96
+ contrast needs.
97
+
98
+ ## 4. construction_specs.jsonl — 300 rows (consumer: T1-E7)
99
+
100
+ **Design:** lengths {4,6,8,12,16} words × 60 specs. Past-tense POS templates:
101
+ - 4: `The N Vi Adv.` · 6: `The Adj N Vt the N.` · 8: `The Adj N Vt the Adj N Adv.`
102
+ - 12: `… near the Adj N.` · 16: `… near the Adj N before the Adj N.`
103
+
104
+ **Frequency matching (the anti-confound):** every content slot is filled with exactly
105
+ 20 high / 20 mid / 20 low draws across the 60 specs of each length, so the marginal
106
+ band distribution of content words is IDENTICAL across lengths — length is not
107
+ confounded with rarity. Verified: per-length band counts are exactly uniform
108
+ (60/60/60, 80/80/80, 120/120/120, 160/160/160, 200/200/200).
109
+
110
+ - Fields: `{length, spec_id, template, words (ordered), text, content_slots,
111
+ content_bands}`. No word repeats within a sentence; quantifier/predicative-only
112
+ adjectives (few/own/able/sure) excluded; all 300 texts unique.
113
+ - **Known gaps:** sentences are grammatical but semantically random ("The soggy garden
114
+ scoured the wild squirrel faintly…") — intentional, so recall is not inflated by
115
+ semantic predictability. Only 5 fixed function words (the/near/before) appear.
116
+
117
+ ---
118
+
119
+ ## Validation (arena8-keepsake, SONAR encode→decode round-trip, `validation_report.json`)
120
+
121
+ ~30 texts per dataset (spec corpus: 3/type × base+gold; paraphrase: 15 pairs both
122
+ sides; construction: 6/length). SBERT = all-MiniLM-L6-v2.
123
+
124
+ | dataset | n | SBERT cos (min) | token-F1 (min) | exact | extra |
125
+ |---|---|---|---|---|---|
126
+ | token_position_grid | 30 | .909 (.85) | .726 (.59) | .00 | expected: 16-item lists sit beyond SONAR's verbatim-recall capacity; list structure + edges decode, interior items get near-synonym substitution — the phenomenon under study |
127
+ | spec_edit_corpus base | 30 | .982 (.87) | .945 (.76) | .47 | |
128
+ | spec_edit_corpus gold | 30 | .982 (.88) | .956 (.80) | .43 | golds decode as cleanly as bases |
129
+ | paraphrase_bank a | 15 | .968 (.83) | .949 (.86) | .60 | |
130
+ | paraphrase_bank b | 15 | .963 (.82) | .947 (.84) | .53 | both sides round-trip symmetrically |
131
+ | construction_specs | 30 | .905 (.65) | .875 (.67) | .27 | content-word recall .82; degrades with length as the capacity curve predicts |
132
+
133
+ Verdict: decode quality is sane on all four datasets; no garbage rows surfaced; the
134
+ two low-F1 datasets are low for the *capacity* reasons the consuming experiments are
135
+ designed to measure.
136
+
137
+ ## HF locations (repo `nickypro/sonar-sae`, repo_type=model)
138
+
139
+ - `data_night3/token_position_grid.jsonl`
140
+ - `data_night3/spec_edit_corpus.jsonl`
141
+ - `data_night3/paraphrase_bank_v2.jsonl`
142
+ - `data_night3/construction_specs.jsonl`
143
+ - `data_night3/MANIFEST.md`, `data_night3/validation_report.json`