@mailwoman/phrase-grouper 8.0.0 → 8.2.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/group.ts +4 -6
- package/index.ts +3 -0
- package/out/group.d.ts.map +1 -1
- package/out/group.js +4 -5
- package/out/group.js.map +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js.map +1 -1
- package/out/rules.d.ts +0 -4
- package/out/rules.d.ts.map +1 -1
- package/out/rules.js +54 -11
- package/out/rules.js.map +1 -1
- package/out/types.d.ts +9 -3
- package/out/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/rules.ts +84 -11
- package/types.ts +9 -3
package/group.ts
CHANGED
|
@@ -37,7 +37,7 @@ function tokensPerSegment(
|
|
|
37
37
|
): Array<{ tokens: SegmentToken[]; isFirst: boolean; isLast: boolean }> {
|
|
38
38
|
const segs = shape.segments
|
|
39
39
|
|
|
40
|
-
if (segs && segs.length
|
|
40
|
+
if (segs && segs.length) {
|
|
41
41
|
return segs.map((s, idx) => {
|
|
42
42
|
const start = s.span?.start ?? 0
|
|
43
43
|
const end = s.span?.end ?? text.length
|
|
@@ -71,16 +71,14 @@ export function groupPhrasesSync(
|
|
|
71
71
|
): PhraseProposal[] {
|
|
72
72
|
const text = input.normalized
|
|
73
73
|
|
|
74
|
-
if (text.length
|
|
75
|
-
|
|
76
|
-
const proposals: PhraseProposal[] = []
|
|
74
|
+
if (!text.length) return []
|
|
77
75
|
|
|
78
76
|
// Postcode rule consumes QueryShape directly (segment-agnostic).
|
|
79
|
-
proposals
|
|
77
|
+
const proposals: PhraseProposal[] = [...scorePostcode(shape, text)]
|
|
80
78
|
|
|
81
79
|
// Per-segment rules.
|
|
82
80
|
for (const { tokens, isFirst, isLast } of tokensPerSegment(text, shape)) {
|
|
83
|
-
if (tokens.length
|
|
81
|
+
if (!tokens.length) continue
|
|
84
82
|
proposals.push(...scoreNumeric(tokens, text))
|
|
85
83
|
proposals.push(...scoreRegionAbbreviation(tokens, text, isLast))
|
|
86
84
|
proposals.push(...scoreHyphenatedCompound(tokens, text))
|
package/index.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
export { groupPhrases, groupPhrasesSync } from "./group.ts"
|
|
23
|
+
|
|
23
24
|
export {
|
|
24
25
|
scoreHyphenatedCompound,
|
|
25
26
|
scoreLocalityPhrase,
|
|
@@ -30,7 +31,9 @@ export {
|
|
|
30
31
|
scoreVenuePhrase,
|
|
31
32
|
tokenizeSegment,
|
|
32
33
|
} from "./rules.ts"
|
|
34
|
+
|
|
33
35
|
export type { SegmentToken } from "./rules.ts"
|
|
36
|
+
|
|
34
37
|
export type {
|
|
35
38
|
GroupPhrasesOpts,
|
|
36
39
|
LocaleHint,
|
package/out/group.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA6BnH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,UAAU,EACpB,KAAK,GAAE,gBAAqB,GAC1B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA6BnH;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,UAAU,EACpB,KAAK,GAAE,gBAAqB,GAC1B,cAAc,EAAE,CA4BlB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,cAAc,EACrB,MAAM,CAAC,EAAE,UAAU,EACnB,IAAI,CAAC,EAAE,gBAAgB,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3B"}
|
package/out/group.js
CHANGED
|
@@ -20,7 +20,7 @@ import { scoreHyphenatedCompound, scoreLocalityPhrase, scoreNumeric, scorePostco
|
|
|
20
20
|
*/
|
|
21
21
|
function tokensPerSegment(text, shape) {
|
|
22
22
|
const segs = shape.segments;
|
|
23
|
-
if (segs && segs.length
|
|
23
|
+
if (segs && segs.length) {
|
|
24
24
|
return segs.map((s, idx) => {
|
|
25
25
|
const start = s.span?.start ?? 0;
|
|
26
26
|
const end = s.span?.end ?? text.length;
|
|
@@ -45,14 +45,13 @@ function tokensPerSegment(text, shape) {
|
|
|
45
45
|
*/
|
|
46
46
|
export function groupPhrasesSync(input, shape, _locale, _opts = {}) {
|
|
47
47
|
const text = input.normalized;
|
|
48
|
-
if (text.length
|
|
48
|
+
if (!text.length)
|
|
49
49
|
return [];
|
|
50
|
-
const proposals = [];
|
|
51
50
|
// Postcode rule consumes QueryShape directly (segment-agnostic).
|
|
52
|
-
proposals
|
|
51
|
+
const proposals = [...scorePostcode(shape, text)];
|
|
53
52
|
// Per-segment rules.
|
|
54
53
|
for (const { tokens, isFirst, isLast } of tokensPerSegment(text, shape)) {
|
|
55
|
-
if (tokens.length
|
|
54
|
+
if (!tokens.length)
|
|
56
55
|
continue;
|
|
57
56
|
proposals.push(...scoreNumeric(tokens, text));
|
|
58
57
|
proposals.push(...scoreRegionAbbreviation(tokens, text, isLast));
|
package/out/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAEf,MAAM,YAAY,CAAA;AAGnB;;;;GAIG;AACH,SAAS,gBAAgB,CACxB,IAAY,EACZ,KAAqB;IAErB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE3B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../group.ts"],"names":[],"mappings":"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"}
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GACf,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,YAAY,EACX,gBAAgB,EAChB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,OAAO,GACP,MAAM,YAAY,CAAA"}
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GACf,MAAM,YAAY,CAAA"}
|
package/out/rules.d.ts
CHANGED
|
@@ -25,10 +25,6 @@ export interface SegmentToken {
|
|
|
25
25
|
start: number;
|
|
26
26
|
end: number;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Split a segment body into whitespace-separated tokens. Offsets are absolute into the original input (caller supplies
|
|
30
|
-
* the segment's `start` offset).
|
|
31
|
-
*/
|
|
32
28
|
export declare function tokenizeSegment(segmentBody: string, segmentStart: number): SegmentToken[];
|
|
33
29
|
/**
|
|
34
30
|
* `NUMERIC` rule: emit one proposal per all-digit token. House numbers, postcodes (when no format hit), unit numbers
|
package/out/rules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACX;AAoGD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE,CAwBzF;AAqUD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAoBhG;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAiBnF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,GACpB,cAAc,EAAE,CAiClB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAkB3G;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CAsFrG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,GACpB,cAAc,EAAE,CAuGlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,OAAO,GACtB,cAAc,EAAE,CAoDlB"}
|
package/out/rules.js
CHANGED
|
@@ -70,6 +70,40 @@ const US_REGION_NAMES = new Set([
|
|
|
70
70
|
* Split a segment body into whitespace-separated tokens. Offsets are absolute into the original input (caller supplies
|
|
71
71
|
* the segment's `start` offset).
|
|
72
72
|
*/
|
|
73
|
+
/**
|
|
74
|
+
* Digit count above which a pure-numeric token stops being unambiguously a house number. 1-4 digits are clearly
|
|
75
|
+
* NUMERIC; 5 and up collide with postcodes, so the proposal is emitted at neutral confidence and the reconciler
|
|
76
|
+
* decides.
|
|
77
|
+
*/
|
|
78
|
+
const MAX_UNAMBIGUOUS_HOUSE_NUMBER_DIGITS = 4;
|
|
79
|
+
/**
|
|
80
|
+
* Confidence for a pure-numeric token short enough to be unambiguous.
|
|
81
|
+
*/
|
|
82
|
+
const UNAMBIGUOUS_NUMERIC_CONFIDENCE = 0.95;
|
|
83
|
+
/**
|
|
84
|
+
* Token count at which a run reads as a venue name in its own right rather than a stray pair.
|
|
85
|
+
*/
|
|
86
|
+
const VENUE_RUN_MIN_TOKENS = 3;
|
|
87
|
+
/**
|
|
88
|
+
* Confidence for a venue run too short to clear {@link VENUE_RUN_MIN_TOKENS}.
|
|
89
|
+
*/
|
|
90
|
+
const SHORT_VENUE_RUN_CONFIDENCE = 0.5;
|
|
91
|
+
/**
|
|
92
|
+
* Confidence added to a place-name run by its token count. Longer runs are less likely to be a coincidental adjacency,
|
|
93
|
+
* so they earn more — the curve flattens past four tokens.
|
|
94
|
+
*/
|
|
95
|
+
const PLACE_RUN_LENGTH_BONUS = new Map([
|
|
96
|
+
[2, 0.15],
|
|
97
|
+
[3, 0.12],
|
|
98
|
+
]);
|
|
99
|
+
/**
|
|
100
|
+
* Bonus applied to place-name runs at or beyond {@link VENUE_RUN_MIN_TOKENS} + 1 tokens.
|
|
101
|
+
*/
|
|
102
|
+
const LONG_PLACE_RUN_BONUS = 0.08;
|
|
103
|
+
/**
|
|
104
|
+
* Penalty for a US region NAME appearing away from the tail, where it is more likely a locality.
|
|
105
|
+
*/
|
|
106
|
+
const NON_TAIL_REGION_NAME_PENALTY = 0.2;
|
|
73
107
|
export function tokenizeSegment(segmentBody, segmentStart) {
|
|
74
108
|
const tokens = [];
|
|
75
109
|
let i = 0;
|
|
@@ -91,15 +125,21 @@ export function tokenizeSegment(segmentBody, segmentStart) {
|
|
|
91
125
|
}
|
|
92
126
|
return tokens;
|
|
93
127
|
}
|
|
94
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Build a `Section` (Span instance) from absolute offsets into the original text.
|
|
130
|
+
*/
|
|
95
131
|
function makeSection(text, start, end) {
|
|
96
132
|
return Span.from(text.slice(start, end), { start });
|
|
97
133
|
}
|
|
98
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* True when token body is non-empty digits only.
|
|
136
|
+
*/
|
|
99
137
|
function isAllDigit(s) {
|
|
100
138
|
return s.length > 0 && /^[0-9]+$/.test(s);
|
|
101
139
|
}
|
|
102
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* True when token body is 2-3 uppercase Latin letters (US state, Canadian province abbreviation).
|
|
142
|
+
*/
|
|
103
143
|
function isRegionAbbreviation(s) {
|
|
104
144
|
return /^[A-Z]{2,3}$/.test(s);
|
|
105
145
|
}
|
|
@@ -277,7 +317,9 @@ function isFusedParticleName(s) {
|
|
|
277
317
|
function isPlaceNameContent(s) {
|
|
278
318
|
return startsCapitalized(s) || isFusedParticleName(s);
|
|
279
319
|
}
|
|
280
|
-
/**
|
|
320
|
+
/**
|
|
321
|
+
* True when the token is a known lowercase place-name connective (`de`, `in`, `aan`, `am`, …).
|
|
322
|
+
*/
|
|
281
323
|
function isPlaceNameParticle(s) {
|
|
282
324
|
return PLACE_NAME_PARTICLES.has(s.toLowerCase());
|
|
283
325
|
}
|
|
@@ -402,7 +444,7 @@ export function scoreNumeric(tokens, text) {
|
|
|
402
444
|
const len = t.body.length;
|
|
403
445
|
// 1-4 digit pure-numerics are clearly NUMERIC (house number). 5+ are ambiguous with POSTCODE
|
|
404
446
|
// — emit anyway at lower confidence so the reconciler sees both options.
|
|
405
|
-
const confidence = len <=
|
|
447
|
+
const confidence = len <= MAX_UNAMBIGUOUS_HOUSE_NUMBER_DIGITS ? UNAMBIGUOUS_NUMERIC_CONFIDENCE : NEUTRAL_PROPOSAL_CONFIDENCE;
|
|
406
448
|
out.push({
|
|
407
449
|
span: makeSection(text, t.start, t.end),
|
|
408
450
|
kindHypothesis: "NUMERIC",
|
|
@@ -632,7 +674,8 @@ export function scoreLocalityPhrase(tokens, text, segmentIsLast) {
|
|
|
632
674
|
k++;
|
|
633
675
|
}
|
|
634
676
|
if (tokens[k] && k - (j + 1) <= 2 && isPlaceNameContent(tokens[k].body)) {
|
|
635
|
-
j = k;
|
|
677
|
+
j = k;
|
|
678
|
+
// jump onto the content token; the bridged particles stay inside the span
|
|
636
679
|
continue;
|
|
637
680
|
}
|
|
638
681
|
}
|
|
@@ -650,10 +693,10 @@ export function scoreLocalityPhrase(tokens, text, segmentIsLast) {
|
|
|
650
693
|
const spanText = text.slice(startTok.start, endTok.end);
|
|
651
694
|
const isRegionName = len === 1 && US_REGION_NAMES.has(spanText.toLowerCase());
|
|
652
695
|
const atTail = i + len - 1 === tokens.length - 1;
|
|
653
|
-
const lenBonus =
|
|
696
|
+
const lenBonus = PLACE_RUN_LENGTH_BONUS.get(len) ?? (len > VENUE_RUN_MIN_TOKENS ? LONG_PLACE_RUN_BONUS : 0);
|
|
654
697
|
let confidence = NEUTRAL_PROPOSAL_CONFIDENCE + lenBonus;
|
|
655
698
|
if (isRegionName && !atTail) {
|
|
656
|
-
confidence -=
|
|
699
|
+
confidence -= NON_TAIL_REGION_NAME_PENALTY;
|
|
657
700
|
}
|
|
658
701
|
if (atTail && segmentIsLast) {
|
|
659
702
|
confidence += 0.1;
|
|
@@ -702,7 +745,7 @@ export function scoreVenuePhrase(tokens, text, segmentIsFirst) {
|
|
|
702
745
|
const hasHyphenCompound = run.some((t) => /[^-]-[^-]/.test(t.body));
|
|
703
746
|
if (markerWeight > 0 || (hasHyphenCompound && run.length >= 2)) {
|
|
704
747
|
const startTok = run[0];
|
|
705
|
-
const endTok = run
|
|
748
|
+
const endTok = run.at(-1);
|
|
706
749
|
const confidence = markerWeight > 0 ? markerWeight : 0.65;
|
|
707
750
|
out.push({
|
|
708
751
|
span: makeSection(text, startTok.start, endTok.end),
|
|
@@ -716,11 +759,11 @@ export function scoreVenuePhrase(tokens, text, segmentIsFirst) {
|
|
|
716
759
|
const hasUnit = hasUnitMarker(run);
|
|
717
760
|
if (!hasStreet && !hasLeadingNum && !hasUnit) {
|
|
718
761
|
const startTok = run[0];
|
|
719
|
-
const endTok = run
|
|
762
|
+
const endTok = run.at(-1);
|
|
720
763
|
out.push({
|
|
721
764
|
span: makeSection(text, startTok.start, endTok.end),
|
|
722
765
|
kindHypothesis: "VENUE_PHRASE",
|
|
723
|
-
confidence: run.length >=
|
|
766
|
+
confidence: run.length >= VENUE_RUN_MIN_TOKENS ? NEUTRAL_PROPOSAL_CONFIDENCE : SHORT_VENUE_RUN_CONFIDENCE,
|
|
724
767
|
});
|
|
725
768
|
}
|
|
726
769
|
}
|
package/out/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../rules.ts"],"names":[],"mappings":"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"}
|
package/out/types.d.ts
CHANGED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Re-exports of the canonical types from `@mailwoman/core/pipeline`.
|
|
8
|
+
*/
|
|
7
9
|
export type { LocaleHint, PhraseGrouper, PhraseKind, PhraseProposal } from "@mailwoman/core/pipeline";
|
|
8
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Re-export of the canonical `Section` type from `@mailwoman/core/types`. `Section = Span`.
|
|
12
|
+
*/
|
|
9
13
|
export type { Section } from "@mailwoman/core/types";
|
|
10
14
|
/**
|
|
11
15
|
* Minimal `NormalizedInput` shape consumed by `groupPhrases`. Compatible with `@mailwoman/normalize`'s output.
|
|
@@ -48,7 +52,9 @@ export interface QueryShapeLike {
|
|
|
48
52
|
totalLength?: number;
|
|
49
53
|
}
|
|
50
54
|
export interface GroupPhrasesOpts {
|
|
51
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Reserved for future tunables (e.g. confidence floor, per-kind biasing). Currently unused.
|
|
57
|
+
*/
|
|
52
58
|
confidenceFloor?: number;
|
|
53
59
|
}
|
|
54
60
|
//# sourceMappingURL=types.d.ts.map
|
package/out/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAErG;;GAEG;AACH,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,YAAY,EAAE,aAAa,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;QACpC,UAAU,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IAChG,YAAY,CAAC,EAAE,aAAa,CAAC;QAC5B,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;QAClD,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;KACd,CAAC,CAAA;IACF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/phrase-grouper",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Stage 2.7 of the runtime pipeline — propose coherent input units (boundary discovery) with a structural kind hypothesis + confidence. Rule-based v1 (port of v1 section/sub-section logic); learned 1-2M-param span proposer reserved for v0.5.1.",
|
|
5
5
|
"license": "AGPL-3.0-only OR LicenseRef-Commercial",
|
|
6
6
|
"repository": {
|
|
@@ -41,6 +41,6 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@mailwoman/core": "8.
|
|
44
|
+
"@mailwoman/core": "8.2.0"
|
|
45
45
|
}
|
|
46
46
|
}
|
package/rules.ts
CHANGED
|
@@ -87,6 +87,47 @@ const US_REGION_NAMES: ReadonlySet<string> = new Set([
|
|
|
87
87
|
* Split a segment body into whitespace-separated tokens. Offsets are absolute into the original input (caller supplies
|
|
88
88
|
* the segment's `start` offset).
|
|
89
89
|
*/
|
|
90
|
+
/**
|
|
91
|
+
* Digit count above which a pure-numeric token stops being unambiguously a house number. 1-4 digits are clearly
|
|
92
|
+
* NUMERIC; 5 and up collide with postcodes, so the proposal is emitted at neutral confidence and the reconciler
|
|
93
|
+
* decides.
|
|
94
|
+
*/
|
|
95
|
+
const MAX_UNAMBIGUOUS_HOUSE_NUMBER_DIGITS = 4
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Confidence for a pure-numeric token short enough to be unambiguous.
|
|
99
|
+
*/
|
|
100
|
+
const UNAMBIGUOUS_NUMERIC_CONFIDENCE = 0.95
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Token count at which a run reads as a venue name in its own right rather than a stray pair.
|
|
104
|
+
*/
|
|
105
|
+
const VENUE_RUN_MIN_TOKENS = 3
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Confidence for a venue run too short to clear {@link VENUE_RUN_MIN_TOKENS}.
|
|
109
|
+
*/
|
|
110
|
+
const SHORT_VENUE_RUN_CONFIDENCE = 0.5
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Confidence added to a place-name run by its token count. Longer runs are less likely to be a coincidental adjacency,
|
|
114
|
+
* so they earn more — the curve flattens past four tokens.
|
|
115
|
+
*/
|
|
116
|
+
const PLACE_RUN_LENGTH_BONUS: ReadonlyMap<number, number> = new Map([
|
|
117
|
+
[2, 0.15],
|
|
118
|
+
[3, 0.12],
|
|
119
|
+
])
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Bonus applied to place-name runs at or beyond {@link VENUE_RUN_MIN_TOKENS} + 1 tokens.
|
|
123
|
+
*/
|
|
124
|
+
const LONG_PLACE_RUN_BONUS = 0.08
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Penalty for a US region NAME appearing away from the tail, where it is more likely a locality.
|
|
128
|
+
*/
|
|
129
|
+
const NON_TAIL_REGION_NAME_PENALTY = 0.2
|
|
130
|
+
|
|
90
131
|
export function tokenizeSegment(segmentBody: string, segmentStart: number): SegmentToken[] {
|
|
91
132
|
const tokens: SegmentToken[] = []
|
|
92
133
|
let i = 0
|
|
@@ -102,6 +143,7 @@ export function tokenizeSegment(segmentBody: string, segmentStart: number): Segm
|
|
|
102
143
|
while (i < segmentBody.length && !WHITESPACE.test(segmentBody[i]!)) {
|
|
103
144
|
i++
|
|
104
145
|
}
|
|
146
|
+
|
|
105
147
|
tokens.push({
|
|
106
148
|
body: segmentBody.slice(start, i),
|
|
107
149
|
start: segmentStart + start,
|
|
@@ -112,17 +154,23 @@ export function tokenizeSegment(segmentBody: string, segmentStart: number): Segm
|
|
|
112
154
|
return tokens
|
|
113
155
|
}
|
|
114
156
|
|
|
115
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Build a `Section` (Span instance) from absolute offsets into the original text.
|
|
159
|
+
*/
|
|
116
160
|
function makeSection(text: string, start: number, end: number): Span {
|
|
117
161
|
return Span.from(text.slice(start, end), { start })
|
|
118
162
|
}
|
|
119
163
|
|
|
120
|
-
/**
|
|
164
|
+
/**
|
|
165
|
+
* True when token body is non-empty digits only.
|
|
166
|
+
*/
|
|
121
167
|
function isAllDigit(s: string): boolean {
|
|
122
168
|
return s.length > 0 && /^[0-9]+$/.test(s)
|
|
123
169
|
}
|
|
124
170
|
|
|
125
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* True when token body is 2-3 uppercase Latin letters (US state, Canadian province abbreviation).
|
|
173
|
+
*/
|
|
126
174
|
function isRegionAbbreviation(s: string): boolean {
|
|
127
175
|
return /^[A-Z]{2,3}$/.test(s)
|
|
128
176
|
}
|
|
@@ -309,7 +357,9 @@ function isPlaceNameContent(s: string): boolean {
|
|
|
309
357
|
return startsCapitalized(s) || isFusedParticleName(s)
|
|
310
358
|
}
|
|
311
359
|
|
|
312
|
-
/**
|
|
360
|
+
/**
|
|
361
|
+
* True when the token is a known lowercase place-name connective (`de`, `in`, `aan`, `am`, …).
|
|
362
|
+
*/
|
|
313
363
|
function isPlaceNameParticle(s: string): boolean {
|
|
314
364
|
return PLACE_NAME_PARTICLES.has(s.toLowerCase())
|
|
315
365
|
}
|
|
@@ -440,9 +490,12 @@ export function scoreNumeric(tokens: ReadonlyArray<SegmentToken>, text: string):
|
|
|
440
490
|
for (const t of tokens) {
|
|
441
491
|
if (!isAllDigit(t.body)) continue
|
|
442
492
|
const len = t.body.length
|
|
493
|
+
|
|
443
494
|
// 1-4 digit pure-numerics are clearly NUMERIC (house number). 5+ are ambiguous with POSTCODE
|
|
444
495
|
// — emit anyway at lower confidence so the reconciler sees both options.
|
|
445
|
-
const confidence =
|
|
496
|
+
const confidence =
|
|
497
|
+
len <= MAX_UNAMBIGUOUS_HOUSE_NUMBER_DIGITS ? UNAMBIGUOUS_NUMERIC_CONFIDENCE : NEUTRAL_PROPOSAL_CONFIDENCE
|
|
498
|
+
|
|
446
499
|
out.push({
|
|
447
500
|
span: makeSection(text, t.start, t.end),
|
|
448
501
|
kindHypothesis: "NUMERIC",
|
|
@@ -465,6 +518,7 @@ export function scorePostcode(shape: QueryShapeLike, text: string): PhrasePropos
|
|
|
465
518
|
// `po_box` is not a postcode; the kind classifier owns that signal. Skip non-postcode
|
|
466
519
|
// formats here so we don't pollute POSTCODE proposals.
|
|
467
520
|
if (hit.format === "po_box") continue
|
|
521
|
+
|
|
468
522
|
out.push({
|
|
469
523
|
span: makeSection(text, hit.span.start, hit.span.end),
|
|
470
524
|
kindHypothesis: "POSTCODE",
|
|
@@ -502,11 +556,13 @@ export function scoreRegionAbbreviation(
|
|
|
502
556
|
if (after && isPlaceNameContent(after.body) && !isRegionAbbreviation(after.body) && !isStreetSuffix(after.body)) {
|
|
503
557
|
continue
|
|
504
558
|
}
|
|
559
|
+
|
|
505
560
|
// Position cue: last token in a segment (canonical region slot) → high confidence. Anywhere
|
|
506
561
|
// else, moderate. Anywhere in the LAST segment → slightly elevated (region is canonically the
|
|
507
562
|
// final non-postcode component).
|
|
508
563
|
const atTail = i === tokens.length - 1
|
|
509
564
|
const confidence = atTail ? 0.85 : segmentIsLast ? 0.7 : NEUTRAL_PROPOSAL_CONFIDENCE
|
|
565
|
+
|
|
510
566
|
out.push({
|
|
511
567
|
span: makeSection(text, t.start, t.end),
|
|
512
568
|
kindHypothesis: "REGION_ABBREVIATION",
|
|
@@ -533,6 +589,7 @@ export function scoreHyphenatedCompound(tokens: ReadonlyArray<SegmentToken>, tex
|
|
|
533
589
|
// Skip leading/trailing hyphens (likely punctuation drift) — require an interior hyphen
|
|
534
590
|
// surrounded by non-hyphen characters.
|
|
535
591
|
if (!/[^-]-[^-]/.test(t.body)) continue
|
|
592
|
+
|
|
536
593
|
out.push({
|
|
537
594
|
span: makeSection(text, t.start, t.end),
|
|
538
595
|
kindHypothesis: "HYPHENATED_COMPOUND",
|
|
@@ -585,11 +642,13 @@ export function scoreStreetPhrase(tokens: ReadonlyArray<SegmentToken>, text: str
|
|
|
585
642
|
|
|
586
643
|
if (start === suffixIdx) continue // only "<number> <suffix>" remained — no street name to phrase
|
|
587
644
|
}
|
|
645
|
+
|
|
588
646
|
const startTok = tokens[start]!
|
|
589
647
|
const endTok = tokens[suffixIdx]!
|
|
590
648
|
// A preceding (now-excluded) house number is still strong evidence this run is a street → high
|
|
591
649
|
// confidence. A capitalized-run + suffix with no number scores slightly lower (could be a venue).
|
|
592
650
|
const confidence = hadHouseNumber ? 0.9 : 0.75
|
|
651
|
+
|
|
593
652
|
out.push({
|
|
594
653
|
span: makeSection(text, startTok.start, endTok.end),
|
|
595
654
|
kindHypothesis: "STREET_PHRASE",
|
|
@@ -620,8 +679,10 @@ export function scoreStreetPhrase(tokens: ReadonlyArray<SegmentToken>, text: str
|
|
|
620
679
|
while (end > prefixIdx && isPlaceNameParticle(tokens[end]!.body)) {
|
|
621
680
|
end--
|
|
622
681
|
}
|
|
682
|
+
|
|
623
683
|
const startTok = tokens[prefixIdx]!
|
|
624
684
|
const endTok = tokens[end]!
|
|
685
|
+
|
|
625
686
|
// Prefix + name scores moderately; a bare prefix still emits a low-confidence marker so the
|
|
626
687
|
// audit types the leftover span `street`, never `locality`.
|
|
627
688
|
out.push({
|
|
@@ -671,6 +732,7 @@ export function scoreLocalityPhrase(
|
|
|
671
732
|
|
|
672
733
|
if (!after || !(isPlaceNameContent(after.body) || isPlaceNameParticle(after.body))) continue
|
|
673
734
|
}
|
|
735
|
+
|
|
674
736
|
// Walk forward grabbing place-name content. Bridge connective particles (lowercase "de"/"in" or
|
|
675
737
|
// all-caps "DI"/"DEL") ONLY when a content token follows within a short run (≤2 consecutive
|
|
676
738
|
// particles: "aan den Rijn"), so a dangling "Palmas de" at end-of-segment doesn't extend the
|
|
@@ -690,6 +752,7 @@ export function scoreLocalityPhrase(
|
|
|
690
752
|
|
|
691
753
|
if (isPlaceNameContent(b) && !isPlaceNameParticle(b)) {
|
|
692
754
|
j++
|
|
755
|
+
|
|
693
756
|
continue
|
|
694
757
|
}
|
|
695
758
|
|
|
@@ -702,12 +765,16 @@ export function scoreLocalityPhrase(
|
|
|
702
765
|
}
|
|
703
766
|
|
|
704
767
|
if (tokens[k] && k - (j + 1) <= 2 && isPlaceNameContent(tokens[k]!.body)) {
|
|
705
|
-
j = k
|
|
768
|
+
j = k
|
|
769
|
+
|
|
770
|
+
// jump onto the content token; the bridged particles stay inside the span
|
|
706
771
|
continue
|
|
707
772
|
}
|
|
708
773
|
}
|
|
774
|
+
|
|
709
775
|
break
|
|
710
776
|
}
|
|
777
|
+
|
|
711
778
|
// Emit proposals for every prefix-length of the run starting at i, capped at 6 tokens (covers
|
|
712
779
|
// "Las Palmas de Gran Canaria" = 5). Each starting i contributes ≤6 proposals → O(n) per segment.
|
|
713
780
|
const maxLen = Math.min(j - i + 1, 6)
|
|
@@ -721,11 +788,11 @@ export function scoreLocalityPhrase(
|
|
|
721
788
|
const spanText = text.slice(startTok.start, endTok.end)
|
|
722
789
|
const isRegionName = len === 1 && US_REGION_NAMES.has(spanText.toLowerCase())
|
|
723
790
|
const atTail = i + len - 1 === tokens.length - 1
|
|
724
|
-
const lenBonus =
|
|
791
|
+
const lenBonus = PLACE_RUN_LENGTH_BONUS.get(len) ?? (len > VENUE_RUN_MIN_TOKENS ? LONG_PLACE_RUN_BONUS : 0)
|
|
725
792
|
let confidence = NEUTRAL_PROPOSAL_CONFIDENCE + lenBonus
|
|
726
793
|
|
|
727
794
|
if (isRegionName && !atTail) {
|
|
728
|
-
confidence -=
|
|
795
|
+
confidence -= NON_TAIL_REGION_NAME_PENALTY
|
|
729
796
|
}
|
|
730
797
|
|
|
731
798
|
if (atTail && segmentIsLast) {
|
|
@@ -735,6 +802,7 @@ export function scoreLocalityPhrase(
|
|
|
735
802
|
if (atTail) {
|
|
736
803
|
confidence += 0.05
|
|
737
804
|
}
|
|
805
|
+
|
|
738
806
|
out.push({
|
|
739
807
|
span: makeSection(text, startTok.start, endTok.end),
|
|
740
808
|
kindHypothesis: "LOCALITY_PHRASE",
|
|
@@ -772,21 +840,25 @@ export function scoreVenuePhrase(
|
|
|
772
840
|
while (i < tokens.length) {
|
|
773
841
|
if (!startsCapitalized(tokens[i]!.body)) {
|
|
774
842
|
i++
|
|
843
|
+
|
|
775
844
|
continue
|
|
776
845
|
}
|
|
846
|
+
|
|
777
847
|
let j = i
|
|
778
848
|
|
|
779
849
|
while (j + 1 < tokens.length && (startsCapitalized(tokens[j + 1]!.body) || tokens[j + 1]!.body.includes("-"))) {
|
|
780
850
|
j++
|
|
781
851
|
}
|
|
852
|
+
|
|
782
853
|
const run = tokens.slice(i, j + 1)
|
|
783
854
|
const markerWeight = venueMarkerWeight(run)
|
|
784
855
|
const hasHyphenCompound = run.some((t) => /[^-]-[^-]/.test(t.body))
|
|
785
856
|
|
|
786
857
|
if (markerWeight > 0 || (hasHyphenCompound && run.length >= 2)) {
|
|
787
858
|
const startTok = run[0]!
|
|
788
|
-
const endTok = run
|
|
859
|
+
const endTok = run.at(-1)!
|
|
789
860
|
const confidence = markerWeight > 0 ? markerWeight : 0.65
|
|
861
|
+
|
|
790
862
|
out.push({
|
|
791
863
|
span: makeSection(text, startTok.start, endTok.end),
|
|
792
864
|
kindHypothesis: "VENUE_PHRASE",
|
|
@@ -799,11 +871,12 @@ export function scoreVenuePhrase(
|
|
|
799
871
|
|
|
800
872
|
if (!hasStreet && !hasLeadingNum && !hasUnit) {
|
|
801
873
|
const startTok = run[0]!
|
|
802
|
-
const endTok = run
|
|
874
|
+
const endTok = run.at(-1)!
|
|
875
|
+
|
|
803
876
|
out.push({
|
|
804
877
|
span: makeSection(text, startTok.start, endTok.end),
|
|
805
878
|
kindHypothesis: "VENUE_PHRASE",
|
|
806
|
-
confidence: run.length >=
|
|
879
|
+
confidence: run.length >= VENUE_RUN_MIN_TOKENS ? NEUTRAL_PROPOSAL_CONFIDENCE : SHORT_VENUE_RUN_CONFIDENCE,
|
|
807
880
|
})
|
|
808
881
|
}
|
|
809
882
|
}
|
package/types.ts
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Re-exports of the canonical types from `@mailwoman/core/pipeline`.
|
|
9
|
+
*/
|
|
8
10
|
export type { LocaleHint, PhraseGrouper, PhraseKind, PhraseProposal } from "@mailwoman/core/pipeline"
|
|
9
11
|
|
|
10
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Re-export of the canonical `Section` type from `@mailwoman/core/types`. `Section = Span`.
|
|
14
|
+
*/
|
|
11
15
|
export type { Section } from "@mailwoman/core/types"
|
|
12
16
|
|
|
13
17
|
/**
|
|
@@ -39,6 +43,8 @@ export interface QueryShapeLike {
|
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
export interface GroupPhrasesOpts {
|
|
42
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Reserved for future tunables (e.g. confidence floor, per-kind biasing). Currently unused.
|
|
48
|
+
*/
|
|
43
49
|
confidenceFloor?: number
|
|
44
50
|
}
|