cmpstr 3.0.3 → 3.1.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/README.md +2 -1
- package/dist/CmpStr.esm.js +2487 -4948
- package/dist/CmpStr.esm.js.map +1 -1
- package/dist/CmpStr.esm.min.js +3 -3
- package/dist/CmpStr.esm.min.js.map +1 -1
- package/dist/CmpStr.umd.js +2601 -5040
- package/dist/CmpStr.umd.js.map +1 -1
- package/dist/CmpStr.umd.min.js +3 -3
- package/dist/CmpStr.umd.min.js.map +1 -1
- package/dist/cjs/CmpStr.cjs +41 -405
- package/dist/cjs/CmpStr.cjs.map +1 -1
- package/dist/cjs/CmpStrAsync.cjs +38 -221
- package/dist/cjs/CmpStrAsync.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/metric/Cosine.cjs +1 -56
- package/dist/cjs/metric/Cosine.cjs.map +1 -1
- package/dist/cjs/metric/DamerauLevenshtein.cjs +2 -64
- package/dist/cjs/metric/DamerauLevenshtein.cjs.map +1 -1
- package/dist/cjs/metric/DiceSorensen.cjs +1 -56
- package/dist/cjs/metric/DiceSorensen.cjs.map +1 -1
- package/dist/cjs/metric/Hamming.cjs +2 -51
- package/dist/cjs/metric/Hamming.cjs.map +1 -1
- package/dist/cjs/metric/Jaccard.cjs +1 -48
- package/dist/cjs/metric/Jaccard.cjs.map +1 -1
- package/dist/cjs/metric/JaroWinkler.cjs +1 -53
- package/dist/cjs/metric/JaroWinkler.cjs.map +1 -1
- package/dist/cjs/metric/LCS.cjs +1 -54
- package/dist/cjs/metric/LCS.cjs.map +1 -1
- package/dist/cjs/metric/Levenshtein.cjs +2 -60
- package/dist/cjs/metric/Levenshtein.cjs.map +1 -1
- package/dist/cjs/metric/Metric.cjs +1 -261
- package/dist/cjs/metric/Metric.cjs.map +1 -1
- package/dist/cjs/metric/NeedlemanWunsch.cjs +4 -56
- package/dist/cjs/metric/NeedlemanWunsch.cjs.map +1 -1
- package/dist/cjs/metric/SmithWaterman.cjs +4 -58
- package/dist/cjs/metric/SmithWaterman.cjs.map +1 -1
- package/dist/cjs/metric/qGram.cjs +1 -55
- package/dist/cjs/metric/qGram.cjs.map +1 -1
- package/dist/cjs/phonetic/Caverphone.cjs +1 -78
- package/dist/cjs/phonetic/Caverphone.cjs.map +1 -1
- package/dist/cjs/phonetic/Cologne.cjs +1 -43
- package/dist/cjs/phonetic/Cologne.cjs.map +1 -1
- package/dist/cjs/phonetic/Metaphone.cjs +1 -76
- package/dist/cjs/phonetic/Metaphone.cjs.map +1 -1
- package/dist/cjs/phonetic/Phonetic.cjs +1 -261
- package/dist/cjs/phonetic/Phonetic.cjs.map +1 -1
- package/dist/cjs/phonetic/Soundex.cjs +1 -47
- package/dist/cjs/phonetic/Soundex.cjs.map +1 -1
- package/dist/cjs/root.cjs +49 -0
- package/dist/cjs/root.cjs.map +1 -0
- package/dist/cjs/utils/DeepMerge.cjs +8 -75
- package/dist/cjs/utils/DeepMerge.cjs.map +1 -1
- package/dist/cjs/utils/DiffChecker.cjs +2 -190
- package/dist/cjs/utils/DiffChecker.cjs.map +1 -1
- package/dist/cjs/utils/Filter.cjs +1 -112
- package/dist/cjs/utils/Filter.cjs.map +1 -1
- package/dist/cjs/utils/HashTable.cjs +1 -99
- package/dist/cjs/utils/HashTable.cjs.map +1 -1
- package/dist/cjs/utils/Normalizer.cjs +3 -94
- package/dist/cjs/utils/Normalizer.cjs.map +1 -1
- package/dist/cjs/utils/Pool.cjs +10 -105
- package/dist/cjs/utils/Pool.cjs.map +1 -1
- package/dist/cjs/utils/Profiler.cjs +1 -133
- package/dist/cjs/utils/Profiler.cjs.map +1 -1
- package/dist/cjs/utils/Registry.cjs +1 -89
- package/dist/cjs/utils/Registry.cjs.map +1 -1
- package/dist/cjs/utils/StructuredData.cjs +145 -0
- package/dist/cjs/utils/StructuredData.cjs.map +1 -0
- package/dist/cjs/utils/TextAnalyzer.cjs +1 -180
- package/dist/cjs/utils/TextAnalyzer.cjs.map +1 -1
- package/dist/esm/CmpStr.mjs +41 -405
- package/dist/esm/CmpStr.mjs.map +1 -1
- package/dist/esm/CmpStrAsync.mjs +38 -221
- package/dist/esm/CmpStrAsync.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/metric/Cosine.mjs +1 -56
- package/dist/esm/metric/Cosine.mjs.map +1 -1
- package/dist/esm/metric/DamerauLevenshtein.mjs +2 -64
- package/dist/esm/metric/DamerauLevenshtein.mjs.map +1 -1
- package/dist/esm/metric/DiceSorensen.mjs +1 -56
- package/dist/esm/metric/DiceSorensen.mjs.map +1 -1
- package/dist/esm/metric/Hamming.mjs +2 -51
- package/dist/esm/metric/Hamming.mjs.map +1 -1
- package/dist/esm/metric/Jaccard.mjs +1 -48
- package/dist/esm/metric/Jaccard.mjs.map +1 -1
- package/dist/esm/metric/JaroWinkler.mjs +1 -53
- package/dist/esm/metric/JaroWinkler.mjs.map +1 -1
- package/dist/esm/metric/LCS.mjs +1 -54
- package/dist/esm/metric/LCS.mjs.map +1 -1
- package/dist/esm/metric/Levenshtein.mjs +2 -60
- package/dist/esm/metric/Levenshtein.mjs.map +1 -1
- package/dist/esm/metric/Metric.mjs +1 -261
- package/dist/esm/metric/Metric.mjs.map +1 -1
- package/dist/esm/metric/NeedlemanWunsch.mjs +4 -56
- package/dist/esm/metric/NeedlemanWunsch.mjs.map +1 -1
- package/dist/esm/metric/SmithWaterman.mjs +4 -58
- package/dist/esm/metric/SmithWaterman.mjs.map +1 -1
- package/dist/esm/metric/qGram.mjs +1 -55
- package/dist/esm/metric/qGram.mjs.map +1 -1
- package/dist/esm/phonetic/Caverphone.mjs +1 -78
- package/dist/esm/phonetic/Caverphone.mjs.map +1 -1
- package/dist/esm/phonetic/Cologne.mjs +1 -43
- package/dist/esm/phonetic/Cologne.mjs.map +1 -1
- package/dist/esm/phonetic/Metaphone.mjs +1 -76
- package/dist/esm/phonetic/Metaphone.mjs.map +1 -1
- package/dist/esm/phonetic/Phonetic.mjs +1 -261
- package/dist/esm/phonetic/Phonetic.mjs.map +1 -1
- package/dist/esm/phonetic/Soundex.mjs +1 -47
- package/dist/esm/phonetic/Soundex.mjs.map +1 -1
- package/dist/esm/root.mjs +35 -0
- package/dist/esm/root.mjs.map +1 -0
- package/dist/esm/utils/DeepMerge.mjs +8 -76
- package/dist/esm/utils/DeepMerge.mjs.map +1 -1
- package/dist/esm/utils/DiffChecker.mjs +2 -190
- package/dist/esm/utils/DiffChecker.mjs.map +1 -1
- package/dist/esm/utils/Filter.mjs +1 -112
- package/dist/esm/utils/Filter.mjs.map +1 -1
- package/dist/esm/utils/HashTable.mjs +1 -99
- package/dist/esm/utils/HashTable.mjs.map +1 -1
- package/dist/esm/utils/Normalizer.mjs +3 -94
- package/dist/esm/utils/Normalizer.mjs.map +1 -1
- package/dist/esm/utils/Pool.mjs +10 -105
- package/dist/esm/utils/Pool.mjs.map +1 -1
- package/dist/esm/utils/Profiler.mjs +1 -133
- package/dist/esm/utils/Profiler.mjs.map +1 -1
- package/dist/esm/utils/Registry.mjs +1 -89
- package/dist/esm/utils/Registry.mjs.map +1 -1
- package/dist/esm/utils/StructuredData.mjs +143 -0
- package/dist/esm/utils/StructuredData.mjs.map +1 -0
- package/dist/esm/utils/TextAnalyzer.mjs +1 -180
- package/dist/esm/utils/TextAnalyzer.mjs.map +1 -1
- package/dist/types/CmpStr.d.ts +90 -8
- package/dist/types/CmpStrAsync.d.ts +82 -8
- package/dist/types/index.d.ts +3 -2
- package/dist/types/root.d.ts +39 -0
- package/dist/types/utils/Pool.d.ts +2 -2
- package/dist/types/utils/StructuredData.d.ts +162 -0
- package/dist/types/utils/Types.d.ts +35 -1
- package/package.json +63 -22
|
@@ -1,60 +1,17 @@
|
|
|
1
|
-
// CmpStr v3.0
|
|
1
|
+
// CmpStr v3.1.0 build-76aadb9-260117 by Paul Köhler @komed3 / MIT License
|
|
2
2
|
import { MetricRegistry, Metric } from './Metric.mjs';
|
|
3
3
|
import { Pool } from '../utils/Pool.mjs';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Jaro-Winkler Distance
|
|
7
|
-
* src/metric/JaroWinkler.ts
|
|
8
|
-
*
|
|
9
|
-
* @see https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance
|
|
10
|
-
*
|
|
11
|
-
* The Jaro-Winkler distance is a string similarity metric that gives more weight
|
|
12
|
-
* to matching characters at the start of the strings. It is especially effective
|
|
13
|
-
* for short strings and typographical errors, and is widely used in record linkage
|
|
14
|
-
* and duplicate detection.
|
|
15
|
-
*
|
|
16
|
-
* @module Metric/JaroWinkler
|
|
17
|
-
* @author Paul Köhler (komed3)
|
|
18
|
-
* @license MIT
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* JaroWinklerDistance class extends the Metric class to implement the Jaro-Winkler algorithm.
|
|
22
|
-
*/
|
|
23
5
|
class JaroWinklerDistance extends Metric {
|
|
24
|
-
/**
|
|
25
|
-
* Constructor for the JaroWinklerDistance class.
|
|
26
|
-
*
|
|
27
|
-
* Initializes the Jaro-Winkler metric with two input strings or
|
|
28
|
-
* arrays of strings and optional options.
|
|
29
|
-
*
|
|
30
|
-
* @param {MetricInput} a - First input string or array of strings
|
|
31
|
-
* @param {MetricInput} b - Second input string or array of strings
|
|
32
|
-
* @param {MetricOptions} [opt] - Options for the metric computation
|
|
33
|
-
*/
|
|
34
6
|
constructor(a, b, opt = {}) {
|
|
35
|
-
// Call the parent Metric constructor with the metric name and inputs
|
|
36
|
-
// Metric is symmetrical
|
|
37
7
|
super('jaro-winkler', a, b, opt, true);
|
|
38
8
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Calculates the Jaro-Winkler similarity between two strings.
|
|
41
|
-
*
|
|
42
|
-
* @param {string} a - First string
|
|
43
|
-
* @param {string} b - Second string
|
|
44
|
-
* @param {number} m - Length of the first string
|
|
45
|
-
* @param {number} n - Length of the second string
|
|
46
|
-
* @return {MetricCompute<JaroWinklerRaw>} - Object containing the similarity result and raw values
|
|
47
|
-
*/
|
|
48
9
|
compute(a, b, m, n) {
|
|
49
|
-
// Find matches
|
|
50
10
|
const matchWindow = Math.max(0, Math.floor(n / 2) - 1);
|
|
51
|
-
// Use Pool for boolean arrays
|
|
52
11
|
const matchA = Pool.acquire('uint16', m);
|
|
53
12
|
const matchB = Pool.acquire('uint16', n);
|
|
54
|
-
// Initialize match arrays
|
|
55
13
|
for (let i = 0; i < m; i++) matchA[i] = 0;
|
|
56
14
|
for (let i = 0; i < n; i++) matchB[i] = 0;
|
|
57
|
-
// Find matches within the match window
|
|
58
15
|
let matches = 0;
|
|
59
16
|
for (let i = 0; i < m; i++) {
|
|
60
17
|
const start = Math.max(0, i - matchWindow);
|
|
@@ -68,14 +25,11 @@ class JaroWinklerDistance extends Metric {
|
|
|
68
25
|
}
|
|
69
26
|
}
|
|
70
27
|
}
|
|
71
|
-
// Set initial values for transpositions, jaro distance, prefix and result
|
|
72
28
|
let transpos = 0,
|
|
73
29
|
jaro = 0,
|
|
74
30
|
prefix = 0,
|
|
75
31
|
res = 0;
|
|
76
|
-
// If matches are found, proceed with further calculations
|
|
77
32
|
if (matches > 0) {
|
|
78
|
-
// Count transpositions
|
|
79
33
|
let k = 0;
|
|
80
34
|
for (let i = 0; i < m; i++) {
|
|
81
35
|
if (matchA[i]) {
|
|
@@ -85,27 +39,21 @@ class JaroWinklerDistance extends Metric {
|
|
|
85
39
|
}
|
|
86
40
|
}
|
|
87
41
|
transpos /= 2;
|
|
88
|
-
// Calculate Jaro similarity
|
|
89
42
|
jaro = (matches / m + matches / n + (matches - transpos) / matches) / 3;
|
|
90
|
-
// Calculate common prefix length (max 4)
|
|
91
43
|
for (let i = 0; i < Math.min(4, m, n); i++) {
|
|
92
44
|
if (a[i] === b[i]) prefix++;
|
|
93
45
|
else break;
|
|
94
46
|
}
|
|
95
|
-
// Step 5: Calculate Jaro-Winkler similarity
|
|
96
47
|
res = jaro + prefix * 0.1 * (1 - jaro);
|
|
97
48
|
}
|
|
98
|
-
// Release arrays back to the pool
|
|
99
49
|
Pool.release('uint16', matchA, m);
|
|
100
50
|
Pool.release('uint16', matchB, n);
|
|
101
|
-
// Return the result as a MetricCompute object
|
|
102
51
|
return {
|
|
103
52
|
res: Metric.clamp(res),
|
|
104
53
|
raw: { matchWindow, matches, transpos, jaro, prefix }
|
|
105
54
|
};
|
|
106
55
|
}
|
|
107
56
|
}
|
|
108
|
-
// Register the Jaro-Winkler distance in the metric registry
|
|
109
57
|
MetricRegistry.add('jaroWinkler', JaroWinklerDistance);
|
|
110
58
|
|
|
111
59
|
export { JaroWinklerDistance };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JaroWinkler.mjs","sources":["../../../src/metric/JaroWinkler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"JaroWinkler.mjs","sources":["../../../src/metric/JaroWinkler.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/esm/metric/LCS.mjs
CHANGED
|
@@ -1,86 +1,33 @@
|
|
|
1
|
-
// CmpStr v3.0
|
|
1
|
+
// CmpStr v3.1.0 build-76aadb9-260117 by Paul Köhler @komed3 / MIT License
|
|
2
2
|
import { MetricRegistry, Metric } from './Metric.mjs';
|
|
3
3
|
import { Pool } from '../utils/Pool.mjs';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Longest Common Subsequence (LCS)
|
|
7
|
-
* src/metric/LCS.ts
|
|
8
|
-
*
|
|
9
|
-
* @see https://en.wikipedia.org/wiki/Longest_common_subsequence
|
|
10
|
-
*
|
|
11
|
-
* The Longest Common Subsequence (LCS) metric measures the length of the longest
|
|
12
|
-
* subsequence common to both strings. Unlike substrings, the characters of a
|
|
13
|
-
* subsequence do not need to be contiguous, but must appear in the same order.
|
|
14
|
-
*
|
|
15
|
-
* The LCS is widely used in diff tools, bioinformatics, and approximate string
|
|
16
|
-
* matching.
|
|
17
|
-
*
|
|
18
|
-
* @module Metric/LCS
|
|
19
|
-
* @author Paul Köhler (komed3)
|
|
20
|
-
* @license MIT
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* LCSMetric class extends the Metric class to implement the Longest Common Subsequence algorithm.
|
|
24
|
-
*/
|
|
25
5
|
class LCSMetric extends Metric {
|
|
26
|
-
/**
|
|
27
|
-
* Constructor for the LCSMetric class.
|
|
28
|
-
*
|
|
29
|
-
* Initializes the LCS metric with two input strings or
|
|
30
|
-
* arrays of strings and optional options.
|
|
31
|
-
*
|
|
32
|
-
* @param {MetricInput} a - First input string or array of strings
|
|
33
|
-
* @param {MetricInput} b - Second input string or array of strings
|
|
34
|
-
* @param {MetricOptions} [opt] - Options for the metric computation
|
|
35
|
-
*/
|
|
36
6
|
constructor(a, b, opt = {}) {
|
|
37
|
-
// Call the parent Metric constructor with the metric name and inputs
|
|
38
|
-
// Metric is symmetrical
|
|
39
7
|
super('lcs', a, b, opt, true);
|
|
40
8
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Calculates the normalized LCS similarity between two strings.
|
|
43
|
-
*
|
|
44
|
-
* @param {string} a - First string
|
|
45
|
-
* @param {string} b - Second string
|
|
46
|
-
* @param {number} m - Length of the first string
|
|
47
|
-
* @param {number} n - Length of the second string
|
|
48
|
-
* @param {number} maxLen - Maximum length of the strings
|
|
49
|
-
* @return {MetricCompute<LCSRaw>} - Object containing the similarity result and raw LCS length
|
|
50
|
-
*/
|
|
51
9
|
compute(a, b, m, n, maxLen) {
|
|
52
|
-
// Get two reusable arrays from the Pool for the DP rows
|
|
53
10
|
const len = m + 1;
|
|
54
11
|
const [prev, curr] = Pool.acquireMany('uint16', [len, len]);
|
|
55
|
-
// Initialize the first row to zeros
|
|
56
12
|
for (let i = 0; i <= m; i++) prev[i] = 0;
|
|
57
|
-
// Fill the DP matrix row by row (over the longer string)
|
|
58
13
|
for (let j = 1; j <= n; j++) {
|
|
59
14
|
curr[0] = 0;
|
|
60
|
-
// Get the character code of the current character in b
|
|
61
15
|
const cb = b.charCodeAt(j - 1);
|
|
62
16
|
for (let i = 1; i <= m; i++) {
|
|
63
|
-
// If characters match, increment the LCS length
|
|
64
17
|
if (a.charCodeAt(i - 1) === cb) curr[i] = prev[i - 1] + 1;
|
|
65
|
-
// Otherwise, take the maximum of the left or above cell
|
|
66
18
|
else curr[i] = Math.max(prev[i], curr[i - 1]);
|
|
67
19
|
}
|
|
68
|
-
// Copy current row to previous for next iteration
|
|
69
20
|
prev.set(curr);
|
|
70
21
|
}
|
|
71
|
-
// The last value in prev is the LCS length
|
|
72
22
|
const lcs = prev[m];
|
|
73
|
-
// Release arrays back to the pool
|
|
74
23
|
Pool.release('uint16', prev, len);
|
|
75
24
|
Pool.release('uint16', curr, len);
|
|
76
|
-
// Normalize by the length of the longer string
|
|
77
25
|
return {
|
|
78
26
|
res: maxLen === 0 ? 1 : Metric.clamp(lcs / maxLen),
|
|
79
27
|
raw: { lcs, maxLen }
|
|
80
28
|
};
|
|
81
29
|
}
|
|
82
30
|
}
|
|
83
|
-
// Register the Longest Common Subsequence (LCS) in the metric registry
|
|
84
31
|
MetricRegistry.add('lcs', LCSMetric);
|
|
85
32
|
|
|
86
33
|
export { LCSMetric };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LCS.mjs","sources":["../../../src/metric/LCS.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"LCS.mjs","sources":["../../../src/metric/LCS.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,91 +1,33 @@
|
|
|
1
|
-
// CmpStr v3.0
|
|
1
|
+
// CmpStr v3.1.0 build-76aadb9-260117 by Paul Köhler @komed3 / MIT License
|
|
2
2
|
import { MetricRegistry, Metric } from './Metric.mjs';
|
|
3
3
|
import { Pool } from '../utils/Pool.mjs';
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
* Levenshtein Distance
|
|
7
|
-
* src/metric/Levenshtein.ts
|
|
8
|
-
*
|
|
9
|
-
* @see https://en.wikipedia.org/wiki/Levenshtein_distance
|
|
10
|
-
*
|
|
11
|
-
* The Levenshtein distance is a classic metric for measuring the minimum number
|
|
12
|
-
* of single-character edits (insertions, deletions, or substitutions) required
|
|
13
|
-
* to change one string into another.
|
|
14
|
-
*
|
|
15
|
-
* It is widely used in approximate string matching, spell checking, and natural
|
|
16
|
-
* language processing.
|
|
17
|
-
*
|
|
18
|
-
* @module Metric/LevenshteinDistance
|
|
19
|
-
* @author Paul Köhler (komed3)
|
|
20
|
-
* @license MIT
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* LevenshteinDistance class extends the Metric class to implement the Levenshtein distance algorithm.
|
|
24
|
-
*/
|
|
25
5
|
class LevenshteinDistance extends Metric {
|
|
26
|
-
/**
|
|
27
|
-
* Constructor for the Levenshtein class.
|
|
28
|
-
*
|
|
29
|
-
* Initializes the Levenshtein metric with two input strings
|
|
30
|
-
* or arrays of strings and optional options.
|
|
31
|
-
*
|
|
32
|
-
* @param {MetricInput} a - First input string or array of strings
|
|
33
|
-
* @param {MetricInput} b - Second input string or array of strings
|
|
34
|
-
* @param {MetricOptions} [opt] - Options for the metric computation
|
|
35
|
-
*/
|
|
36
6
|
constructor(a, b, opt = {}) {
|
|
37
|
-
// Call the parent Metric constructor with the metric name and inputs
|
|
38
|
-
// Metric is symmetrical
|
|
39
7
|
super('levenshtein', a, b, opt, true);
|
|
40
8
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Calculates the Levenshtein distance between two strings.
|
|
43
|
-
*
|
|
44
|
-
* @param {string} a - First string
|
|
45
|
-
* @param {string} b - Second string
|
|
46
|
-
* @param {number} m - Length of the first string
|
|
47
|
-
* @param {number} n - Length of the second string
|
|
48
|
-
* @param {number} maxLen - Maximum length of the strings
|
|
49
|
-
* @return {MetricCompute<LevenshteinRaw>} - Object containing the similarity result and raw distance
|
|
50
|
-
*/
|
|
51
9
|
compute(a, b, m, n, maxLen) {
|
|
52
|
-
// Get two reusable arrays from the Pool for the DP rows
|
|
53
10
|
const len = m + 1;
|
|
54
11
|
const [prev, curr] = Pool.acquireMany('uint16', [len, len]);
|
|
55
|
-
// Initialize the first row (edit distances from empty string to a)
|
|
56
12
|
for (let i = 0; i <= m; i++) prev[i] = i;
|
|
57
|
-
// Fill the DP matrix row by row (over the longer string)
|
|
58
13
|
for (let j = 1; j <= n; j++) {
|
|
59
|
-
// Cost of transforming empty string to b[0..j]
|
|
60
14
|
curr[0] = j;
|
|
61
|
-
// Get the character code of the current character in b
|
|
62
15
|
const cb = b.charCodeAt(j - 1);
|
|
63
16
|
for (let i = 1; i <= m; i++) {
|
|
64
|
-
// Cost is 0 if characters match, 1 otherwise
|
|
65
17
|
const cost = a.charCodeAt(i - 1) === cb ? 0 : 1;
|
|
66
|
-
|
|
67
|
-
curr[i] = Math.min(
|
|
68
|
-
curr[i - 1] + 1, // Insertion
|
|
69
|
-
prev[i] + 1, // Deletion
|
|
70
|
-
prev[i - 1] + cost // Substitution
|
|
71
|
-
);
|
|
18
|
+
curr[i] = Math.min(curr[i - 1] + 1, prev[i] + 1, prev[i - 1] + cost);
|
|
72
19
|
}
|
|
73
|
-
// Copy current row to previous for next iteration
|
|
74
20
|
prev.set(curr);
|
|
75
21
|
}
|
|
76
|
-
// The last value in prev is the Levenshtein distance
|
|
77
22
|
const dist = prev[m];
|
|
78
|
-
// Release arrays back to the pool
|
|
79
23
|
Pool.release('uint16', prev, len);
|
|
80
24
|
Pool.release('uint16', curr, len);
|
|
81
|
-
// Return the result as a MetricCompute object
|
|
82
25
|
return {
|
|
83
26
|
res: maxLen === 0 ? 1 : Metric.clamp(1 - dist / maxLen),
|
|
84
27
|
raw: { dist, maxLen }
|
|
85
28
|
};
|
|
86
29
|
}
|
|
87
30
|
}
|
|
88
|
-
// Register the Levenshtein distance in the metric registry
|
|
89
31
|
MetricRegistry.add('levenshtein', LevenshteinDistance);
|
|
90
32
|
|
|
91
33
|
export { LevenshteinDistance };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Levenshtein.mjs","sources":["../../../src/metric/Levenshtein.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"Levenshtein.mjs","sources":["../../../src/metric/Levenshtein.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|