@mailwoman/match 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/blocking.ts +18 -7
- package/clustering.ts +12 -2
- package/comparators.ts +9 -3
- package/em.ts +30 -9
- package/fellegi-sunter.ts +83 -27
- package/gbt.ts +44 -12
- package/out/blocking.d.ts +15 -5
- package/out/blocking.d.ts.map +1 -1
- package/out/blocking.js +2 -2
- package/out/blocking.js.map +1 -1
- package/out/clustering.d.ts +6 -2
- package/out/clustering.d.ts.map +1 -1
- package/out/clustering.js.map +1 -1
- package/out/comparators.d.ts +3 -1
- package/out/comparators.d.ts.map +1 -1
- package/out/comparators.js +5 -3
- package/out/comparators.js.map +1 -1
- package/out/em.d.ts +24 -8
- package/out/em.d.ts.map +1 -1
- package/out/em.js +4 -2
- package/out/em.js.map +1 -1
- package/out/fellegi-sunter.d.ts +81 -27
- package/out/fellegi-sunter.d.ts.map +1 -1
- package/out/fellegi-sunter.js +12 -4
- package/out/fellegi-sunter.js.map +1 -1
- package/out/gbt.d.ts +15 -5
- package/out/gbt.d.ts.map +1 -1
- package/out/gbt.js +26 -9
- package/out/gbt.js.map +1 -1
- package/out/tf.d.ts +21 -7
- package/out/tf.d.ts.map +1 -1
- package/out/tf.js +1 -1
- package/out/tf.js.map +1 -1
- package/package.json +2 -2
- package/tf.ts +23 -8
package/out/gbt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gbt.js","sourceRoot":"","sources":["../gbt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"gbt.js","sourceRoot":"","sources":["../gbt.ts"],"names":[],"mappings":"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"}
|
package/out/tf.d.ts
CHANGED
|
@@ -18,13 +18,21 @@
|
|
|
18
18
|
* from the values you're matching, then attach it to a comparison with {@link withTermFrequency}.
|
|
19
19
|
*/
|
|
20
20
|
import type { Comparison } from "./fellegi-sunter.ts";
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* A lookup of how common each value is, in (0, 1], built from a column of observed values.
|
|
23
|
+
*/
|
|
22
24
|
export interface TermFrequencyTable {
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Relative frequency of a value (its normalized form), or 0 if never seen.
|
|
27
|
+
*/
|
|
24
28
|
frequency(value: string): number;
|
|
25
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Total observations the table was built from.
|
|
31
|
+
*/
|
|
26
32
|
readonly total: number;
|
|
27
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Number of distinct normalized values.
|
|
35
|
+
*/
|
|
28
36
|
readonly distinct: number;
|
|
29
37
|
}
|
|
30
38
|
/**
|
|
@@ -44,11 +52,17 @@ export declare function buildTermFrequencyTable(values: Iterable<string | null |
|
|
|
44
52
|
export declare function withTermFrequency<R>(comparison: Comparison<R>, config: {
|
|
45
53
|
table: TermFrequencyTable;
|
|
46
54
|
value: (a: R, b: R) => string | null | undefined;
|
|
47
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Level indices to adjust. Default `[0]` (the exact level).
|
|
57
|
+
*/
|
|
48
58
|
levels?: Iterable<number>;
|
|
49
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Scale in [0, 1]. Default 1.
|
|
61
|
+
*/
|
|
50
62
|
weight?: number;
|
|
51
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Frequency floor bounding the boost on ultra-rare values. Default 1e-4.
|
|
65
|
+
*/
|
|
52
66
|
minimumFrequency?: number;
|
|
53
67
|
}): Comparison<R>;
|
|
54
68
|
//# sourceMappingURL=tf.d.ts.map
|
package/out/tf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tf.d.ts","sourceRoot":"","sources":["../tf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAA;AAE9E
|
|
1
|
+
{"version":3,"file":"tf.d.ts","sourceRoot":"","sources":["../tf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,qBAAqB,CAAA;AAE9E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAC3C,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAAO,GAClD,kBAAkB,CAwBpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE;IACP,KAAK,EAAE,kBAAkB,CAAA;IACzB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChD;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB,GACC,UAAU,CAAC,CAAC,CAAC,CAUf"}
|
package/out/tf.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* (the Splink approach) — no external Census table required. Build a {@link TermFrequencyTable}
|
|
18
18
|
* from the values you're matching, then attach it to a comparison with {@link withTermFrequency}.
|
|
19
19
|
*/
|
|
20
|
-
const defaultNormalize = (value) => value.trim().toLowerCase().
|
|
20
|
+
const defaultNormalize = (value) => value.trim().toLowerCase().replaceAll(/\s+/g, " ");
|
|
21
21
|
/**
|
|
22
22
|
* Build a {@link TermFrequencyTable} from an iterable of values (e.g. every `given` name in the dataset). Values are
|
|
23
23
|
* normalized (default: trim + lowercase + collapse whitespace) before counting, and `frequency()` normalizes its
|
package/out/tf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tf.js","sourceRoot":"","sources":["../tf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"tf.js","sourceRoot":"","sources":["../tf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsBH,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAEtG;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACtC,MAA2C,EAC3C,OAAkD,EAAE;IAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAA;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI;YAAE,SAAQ;QAC3B,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;QAE5B,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE3C,KAAK,EAAE,CAAA;IACR,CAAC;IAED,OAAO;QACN,KAAK;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,SAAS,CAAC,KAAK;YACd,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAA;YAEzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;QACnD,CAAC;KACD,CAAA;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAChC,UAAyB,EACzB,MAeC;IAED,MAAM,UAAU,GAA+B;QAC9C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KACzC,CAAA;IAED,OAAO,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailwoman/match",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "The geocode-first record matcher: block → score → cluster. This first cut ships the string comparators (Jaro / Jaro-Winkler + an edit-distance fallback for compound surnames) that the Fellegi-Sunter scorer is built on.",
|
|
5
5
|
"license": "AGPL-3.0-only OR LicenseRef-Commercial",
|
|
6
6
|
"repository": {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
|
-
"@mailwoman/spatial": "8.
|
|
100
|
+
"@mailwoman/spatial": "8.2.0",
|
|
101
101
|
"fastest-levenshtein": "^1.0.16"
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
package/tf.ts
CHANGED
|
@@ -20,17 +20,25 @@
|
|
|
20
20
|
|
|
21
21
|
import type { Comparison, TermFrequencyAdjustment } from "./fellegi-sunter.ts"
|
|
22
22
|
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* A lookup of how common each value is, in (0, 1], built from a column of observed values.
|
|
25
|
+
*/
|
|
24
26
|
export interface TermFrequencyTable {
|
|
25
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Relative frequency of a value (its normalized form), or 0 if never seen.
|
|
29
|
+
*/
|
|
26
30
|
frequency(value: string): number
|
|
27
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Total observations the table was built from.
|
|
33
|
+
*/
|
|
28
34
|
readonly total: number
|
|
29
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Number of distinct normalized values.
|
|
37
|
+
*/
|
|
30
38
|
readonly distinct: number
|
|
31
39
|
}
|
|
32
40
|
|
|
33
|
-
const defaultNormalize = (value: string): string => value.trim().toLowerCase().
|
|
41
|
+
const defaultNormalize = (value: string): string => value.trim().toLowerCase().replaceAll(/\s+/g, " ")
|
|
34
42
|
|
|
35
43
|
/**
|
|
36
44
|
* Build a {@link TermFrequencyTable} from an iterable of values (e.g. every `given` name in the dataset). Values are
|
|
@@ -51,6 +59,7 @@ export function buildTermFrequencyTable(
|
|
|
51
59
|
|
|
52
60
|
if (!key) continue
|
|
53
61
|
counts.set(key, (counts.get(key) ?? 0) + 1)
|
|
62
|
+
|
|
54
63
|
total++
|
|
55
64
|
}
|
|
56
65
|
|
|
@@ -76,11 +85,17 @@ export function withTermFrequency<R>(
|
|
|
76
85
|
config: {
|
|
77
86
|
table: TermFrequencyTable
|
|
78
87
|
value: (a: R, b: R) => string | null | undefined
|
|
79
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Level indices to adjust. Default `[0]` (the exact level).
|
|
90
|
+
*/
|
|
80
91
|
levels?: Iterable<number>
|
|
81
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Scale in [0, 1]. Default 1.
|
|
94
|
+
*/
|
|
82
95
|
weight?: number
|
|
83
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Frequency floor bounding the boost on ultra-rare values. Default 1e-4.
|
|
98
|
+
*/
|
|
84
99
|
minimumFrequency?: number
|
|
85
100
|
}
|
|
86
101
|
): Comparison<R> {
|