Upload data_night3/MANIFEST.md with huggingface_hub
Browse files- 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`
|