@mailwoman/neural 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/anchor-inference.d.ts +1 -1
- package/out/anchor-inference.js +1 -1
- package/out/classifier.d.ts +1 -1
- package/out/labels.d.ts +1 -1
- package/out/labels.js +1 -1
- package/out/postcode-repair.d.ts +1 -1
- package/out/postcode-repair.js +1 -1
- package/out/soft-features.d.ts +2 -2
- package/out/soft-features.js +1 -1
- package/out/span-bridge.d.ts +4 -4
- package/out/span-bridge.js +4 -4
- package/out/span-proposer-lexicon.d.ts +3 -3
- package/out/span-proposer-lexicon.js +3 -3
- package/out/street-morphology-prior.d.ts +4 -4
- package/out/street-morphology-prior.js +3 -3
- package/out/unit-repair.js +1 -1
- package/out/unit-repair.js.map +1 -1
- package/out/word-consistency.d.ts +1 -1
- package/out/word-consistency.js +1 -1
- package/package.json +3 -3
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* lookup the model trained against (`scripts/build-pilot-anchor-lookup.py`), so the feature
|
|
11
11
|
* layout matches byte-for-byte.
|
|
12
12
|
*
|
|
13
|
-
* The layout is
|
|
13
|
+
* The layout is ESSENTIAL and cross-language: a wrong locale order or centroid scale feeds the
|
|
14
14
|
* model garbage. `anchor-inference.test.ts` pins both `LOCALE_ORDER` and the vector to values
|
|
15
15
|
* emitted by the Python `anchor_feature_vector` — any drift fails the test.
|
|
16
16
|
*/
|
package/out/anchor-inference.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* lookup the model trained against (`scripts/build-pilot-anchor-lookup.py`), so the feature
|
|
11
11
|
* layout matches byte-for-byte.
|
|
12
12
|
*
|
|
13
|
-
* The layout is
|
|
13
|
+
* The layout is ESSENTIAL and cross-language: a wrong locale order or centroid scale feeds the
|
|
14
14
|
* model garbage. `anchor-inference.test.ts` pins both `LOCALE_ORDER` and the vector to values
|
|
15
15
|
* emitted by the Python `anchor_feature_vector` — any drift fails the test.
|
|
16
16
|
*/
|
package/out/classifier.d.ts
CHANGED
|
@@ -83,7 +83,7 @@ export interface NeuralAddressClassifierConfig {
|
|
|
83
83
|
* adjacent to a postcode-anchor hit (needs both `gazetteerLexicon` and `postcodeAnchorLookup`).
|
|
84
84
|
* Targets the region-clue→postcode CRF interference (~3pp US postcode).
|
|
85
85
|
*
|
|
86
|
-
* PAIRING IS
|
|
86
|
+
* PAIRING IS ESSENTIAL: set this IFF the model was TRAINED with the matching train-time
|
|
87
87
|
* choreography (`data.gazetteer_choreography`). The 2026-06-10 diagnostic showed the harm is
|
|
88
88
|
* WEIGHT-BAKED — applying this at inference on a model trained _without_ train-choreography does
|
|
89
89
|
* NOT recover postcode and adds train/inference skew. Only enable for a consolidation-era model
|
package/out/labels.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Mirror of `packages/corpus-python/src/mailwoman_train/labels.py`.
|
|
7
7
|
*
|
|
8
|
-
* Index ↔ label parity is
|
|
8
|
+
* Index ↔ label parity is essential: the model emits logits in one canonical order on both sides
|
|
9
9
|
* and any drift here silently corrupts BIO decoding. STAGE2 strictly extends STAGE1 — the first
|
|
10
10
|
* 15 indices are identical, so reading a v0.2.0 (Stage 1) model with the Stage 2 label vocabulary
|
|
11
11
|
* stays correct; the extra entries are unused.
|
package/out/labels.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Mirror of `packages/corpus-python/src/mailwoman_train/labels.py`.
|
|
7
7
|
*
|
|
8
|
-
* Index ↔ label parity is
|
|
8
|
+
* Index ↔ label parity is essential: the model emits logits in one canonical order on both sides
|
|
9
9
|
* and any drift here silently corrupts BIO decoding. STAGE2 strictly extends STAGE1 — the first
|
|
10
10
|
* 15 indices are identical, so reading a v0.2.0 (Stage 1) model with the Stage 2 label vocabulary
|
|
11
11
|
* stays correct; the extra entries are unused.
|
package/out/postcode-repair.d.ts
CHANGED
|
@@ -76,7 +76,7 @@ export declare function repairPostcodeLabels(text: string, input: readonly Decod
|
|
|
76
76
|
* 5-digit before a street is a _postcode_ in reversed-order FR ("75008 Rue de la Paix", the #560
|
|
77
77
|
* shard), so applying it outside US would re-break FR reversed-order house numbers. The "a street
|
|
78
78
|
* follows" check is a second guard (FR/DE postcode-first puts a LOCALITY after the leading 5-digit,
|
|
79
|
-
* "08523 Plauen"), but the locale gate is the
|
|
79
|
+
* "08523 Plauen"), but the locale gate is the decisive one.
|
|
80
80
|
*/
|
|
81
81
|
export declare function repairLeadingHouseNumber(text: string, input: readonly DecoderToken[]): RepairResult;
|
|
82
82
|
//# sourceMappingURL=postcode-repair.d.ts.map
|
package/out/postcode-repair.js
CHANGED
|
@@ -182,7 +182,7 @@ export function repairPostcodeLabels(text, input) {
|
|
|
182
182
|
* 5-digit before a street is a _postcode_ in reversed-order FR ("75008 Rue de la Paix", the #560
|
|
183
183
|
* shard), so applying it outside US would re-break FR reversed-order house numbers. The "a street
|
|
184
184
|
* follows" check is a second guard (FR/DE postcode-first puts a LOCALITY after the leading 5-digit,
|
|
185
|
-
* "08523 Plauen"), but the locale gate is the
|
|
185
|
+
* "08523 Plauen"), but the locale gate is the decisive one.
|
|
186
186
|
*/
|
|
187
187
|
export function repairLeadingHouseNumber(text, input) {
|
|
188
188
|
const tokens = input.map((t) => ({ ...t }));
|
package/out/soft-features.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* anchor, build the gazetteer clue, and (when paired with the matching train-time half) suppress
|
|
10
10
|
* the gazetteer clue adjacent to a postcode-anchor hit.
|
|
11
11
|
*
|
|
12
|
-
* It is the
|
|
12
|
+
* It is the essential contract surface for the ProductionScorer (#718): the scorer asserts which
|
|
13
13
|
* channels are fed, this function decides HOW they are fed. Keeping it a pure function means both
|
|
14
14
|
* the classifier and any harness build features identically — there is exactly one choreography.
|
|
15
15
|
*
|
|
@@ -45,7 +45,7 @@ export interface SoftFeatureSources {
|
|
|
45
45
|
/**
|
|
46
46
|
* Channel choreography (#464, v0.9.13 postcode fix): zero the gazetteer clue on pieces adjacent
|
|
47
47
|
* to a postcode-anchor hit. Needs BOTH a `gazetteerLexicon` and a `postcodeAnchorLookup` to take
|
|
48
|
-
* effect (the suppression is keyed off the anchor's confidence). PAIRING IS
|
|
48
|
+
* effect (the suppression is keyed off the anchor's confidence). PAIRING IS ESSENTIAL — enable
|
|
49
49
|
* this IFF the model was trained with the matching train-time choreography. See
|
|
50
50
|
* `suppressGazetteerNearPostcode` in `gazetteer-inference.ts`.
|
|
51
51
|
*/
|
package/out/soft-features.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* anchor, build the gazetteer clue, and (when paired with the matching train-time half) suppress
|
|
10
10
|
* the gazetteer clue adjacent to a postcode-anchor hit.
|
|
11
11
|
*
|
|
12
|
-
* It is the
|
|
12
|
+
* It is the essential contract surface for the ProductionScorer (#718): the scorer asserts which
|
|
13
13
|
* channels are fed, this function decides HOW they are fed. Keeping it a pure function means both
|
|
14
14
|
* the classifier and any harness build features identically — there is exactly one choreography.
|
|
15
15
|
*
|
package/out/span-bridge.d.ts
CHANGED
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
*
|
|
16
16
|
* The fix is deterministic: AFTER decode, merge adjacent same-label spans whose gap consists only
|
|
17
17
|
* of punctuation/whitespace, contains at least one non-space character, and is short (≤ 3 chars).
|
|
18
|
-
* The non-space requirement is
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* The non-space requirement is essential — space-only gaps ("Saint Paul" as two locality spans)
|
|
19
|
+
* are NOT bridged, because a space between two same-tag spans is often a real boundary (the
|
|
20
|
+
* Saint-Albans fragmentation wants this fix too, but it must come with its own evidence; this
|
|
21
|
+
* pass stays conservative by construction).
|
|
22
22
|
*
|
|
23
23
|
* Runs beside the postcode/unit repair passes in the classifier, before tree-building.
|
|
24
24
|
*/
|
package/out/span-bridge.js
CHANGED
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
*
|
|
16
16
|
* The fix is deterministic: AFTER decode, merge adjacent same-label spans whose gap consists only
|
|
17
17
|
* of punctuation/whitespace, contains at least one non-space character, and is short (≤ 3 chars).
|
|
18
|
-
* The non-space requirement is
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* The non-space requirement is essential — space-only gaps ("Saint Paul" as two locality spans)
|
|
19
|
+
* are NOT bridged, because a space between two same-tag spans is often a real boundary (the
|
|
20
|
+
* Saint-Albans fragmentation wants this fix too, but it must come with its own evidence; this
|
|
21
|
+
* pass stays conservative by construction).
|
|
22
22
|
*
|
|
23
23
|
* Runs beside the postcode/unit repair passes in the classifier, before tree-building.
|
|
24
24
|
*/
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* delivery-service types. Which systems are loaded conditions the proposer's locale-dependent
|
|
11
11
|
* readings (the AU/NZ `Flat 2/14` split exists only when those tables are present).
|
|
12
12
|
*
|
|
13
|
-
* No entry here is hand-invented (the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* No entry here is hand-invented (the provenance-first rule): every token/pattern derives from a
|
|
14
|
+
* codex table row. AU `MS` (Mail Service) and the identifier-less counter types (CARE PO, CMA,
|
|
15
|
+
* CPA, Counter Delivery, Poste Restante) are excluded from the mid-text SCAN regex — a bare
|
|
16
16
|
* two-letter designator with no required number is exactly the false-positive shape ("Ms Smith")
|
|
17
17
|
* the AU matcher special-cases; the scan keeps only number-carrying forms.
|
|
18
18
|
*/
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* delivery-service types. Which systems are loaded conditions the proposer's locale-dependent
|
|
11
11
|
* readings (the AU/NZ `Flat 2/14` split exists only when those tables are present).
|
|
12
12
|
*
|
|
13
|
-
* No entry here is hand-invented (the
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* No entry here is hand-invented (the provenance-first rule): every token/pattern derives from a
|
|
14
|
+
* codex table row. AU `MS` (Mail Service) and the identifier-less counter types (CARE PO, CMA,
|
|
15
|
+
* CPA, Counter Delivery, Poste Restante) are excluded from the mid-text SCAN regex — a bare
|
|
16
16
|
* two-letter designator with no required number is exactly the false-positive shape ("Ms Smith")
|
|
17
17
|
* the AU matcher special-cases; the scan keeps only number-carrying forms.
|
|
18
18
|
*/
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* - **Affix-token (the matched span):** toward `B/I-street_prefix` AND `B/I-street_suffix` (position
|
|
14
14
|
* unknown — let the model + context disambiguate).
|
|
15
15
|
* - **Adjacent token (one before AND one after each match):** toward `B/I-street`, AWAY from
|
|
16
|
-
* `B/I-dependent_locality`. The negative bias on `dependent_locality` is the
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* `B/I-dependent_locality`. The negative bias on `dependent_locality` is the essential piece
|
|
17
|
+
* — it closes the inference-time vacuum that caused v0.6.1's 1066 dep_locality hallucinations
|
|
18
|
+
* (see [[project-v061-failure-mechanism]]).
|
|
19
19
|
*
|
|
20
20
|
* The morphology FST itself is built by `resolver-wof-sqlite/street-morphology-fst-builder.ts` and
|
|
21
21
|
* ships as a separate binary (`fst-street-morphology.bin`) loaded into a second `FstMatcher`
|
|
@@ -40,7 +40,7 @@ export interface StreetMorphologyPriorOpts {
|
|
|
40
40
|
maxNeighbourStreetBias?: number;
|
|
41
41
|
/**
|
|
42
42
|
* Magnitude of the negative bias applied to `dependent_locality` BIO labels on the adjacent
|
|
43
|
-
* tokens. Default 2.0. This is the
|
|
43
|
+
* tokens. Default 2.0. This is the essential piece.
|
|
44
44
|
*/
|
|
45
45
|
dependentLocalityPenalty?: number;
|
|
46
46
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* - **Affix-token (the matched span):** toward `B/I-street_prefix` AND `B/I-street_suffix` (position
|
|
14
14
|
* unknown — let the model + context disambiguate).
|
|
15
15
|
* - **Adjacent token (one before AND one after each match):** toward `B/I-street`, AWAY from
|
|
16
|
-
* `B/I-dependent_locality`. The negative bias on `dependent_locality` is the
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* `B/I-dependent_locality`. The negative bias on `dependent_locality` is the essential piece
|
|
17
|
+
* — it closes the inference-time vacuum that caused v0.6.1's 1066 dep_locality hallucinations
|
|
18
|
+
* (see [[project-v061-failure-mechanism]]).
|
|
19
19
|
*
|
|
20
20
|
* The morphology FST itself is built by `resolver-wof-sqlite/street-morphology-fst-builder.ts` and
|
|
21
21
|
* ships as a separate binary (`fst-street-morphology.bin`) loaded into a second `FstMatcher`
|
package/out/unit-repair.js
CHANGED
|
@@ -38,7 +38,7 @@ const UNIT_DESIGNATORS = "APARTMENT|APT|SUITE|STE|UNIT|ROOM|RM|FLOOR|FLR|FL|BUIL
|
|
|
38
38
|
const UNIT_PATTERNS = [
|
|
39
39
|
// Designator + optional "#"/"No." + identifier, e.g. "Apt 4B", "Ste 12", "STE D",
|
|
40
40
|
// "Unit 9400", "Suite 100", "Rm 5", "Flat 2", "Apartment #3", "Bldg C".
|
|
41
|
-
// The `\b` after the designator is
|
|
41
|
+
// The `\b` after the designator is essential: it stops "Unit" matching inside
|
|
42
42
|
// "United", "Fl" inside "Florida", etc. The trailing `\b` on the identifier stops
|
|
43
43
|
// "Apt Main" capturing the "M" of "Main" (single-letter ident only fires on a
|
|
44
44
|
// standalone token like "STE D").
|
package/out/unit-repair.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit-repair.js","sourceRoot":"","sources":["../unit-repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAYH;;;;;GAKG;AACH,MAAM,gBAAgB,GACrB,qIAAqI,CAAA;AAEtI,MAAM,aAAa,GAAyC;IAC3D,kFAAkF;IAClF,wEAAwE;IACxE,
|
|
1
|
+
{"version":3,"file":"unit-repair.js","sourceRoot":"","sources":["../unit-repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* existing cross-word merge still joins them.
|
|
25
25
|
*
|
|
26
26
|
* Safety: a word whose pieces already agree is left byte-identical (no change). The vote includes
|
|
27
|
-
* `O`, so
|
|
27
|
+
* `O`, so an all-`O` word stays `O` (no spurious spans).
|
|
28
28
|
*
|
|
29
29
|
* Gate outcome (2026-06-19, fr-admin-split-gate + per-locale-f1, MAILWOMAN_WORD_CONSISTENCY=1): NOT
|
|
30
30
|
* a clean win, so this ships DEFAULT-OFF. It heals clean-latin fragments (`PRUNIÈRES LOZÈRE
|
package/out/word-consistency.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* existing cross-word merge still joins them.
|
|
25
25
|
*
|
|
26
26
|
* Safety: a word whose pieces already agree is left byte-identical (no change). The vote includes
|
|
27
|
-
* `O`, so
|
|
27
|
+
* `O`, so an all-`O` word stays `O` (no spurious spans).
|
|
28
28
|
*
|
|
29
29
|
* Gate outcome (2026-06-19, fr-admin-split-gate + per-locale-f1, MAILWOMAN_WORD_CONSISTENCY=1): NOT
|
|
30
30
|
* a clean win, so this ships DEFAULT-OFF. It heals clean-latin fragments (`PRUNIÈRES LOZÈRE
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/neural",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.0",
|
|
4
4
|
"description": "Mailwoman neural classifier runtime: SentencePiece tokenizer + ONNX inference + decoder wiring.",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"./browser": "./out/browser.js"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@mailwoman/codex": "4.
|
|
26
|
-
"@mailwoman/core": "4.
|
|
25
|
+
"@mailwoman/codex": "4.12.0",
|
|
26
|
+
"@mailwoman/core": "4.12.0",
|
|
27
27
|
"@sctg/sentencepiece-js": "^1.3.3",
|
|
28
28
|
"onnxruntime-node": "^1.26.0"
|
|
29
29
|
},
|