cmpstr 2.0.2 → 3.0.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/LICENSE +21 -21
- package/README.md +75 -499
- package/dist/CmpStr.esm.js +4863 -0
- package/dist/CmpStr.esm.js.map +1 -0
- package/dist/CmpStr.esm.min.js +8 -0
- package/dist/CmpStr.esm.min.js.map +1 -0
- package/dist/CmpStr.umd.js +4875 -0
- package/dist/CmpStr.umd.js.map +1 -0
- package/dist/CmpStr.umd.min.js +8 -0
- package/dist/CmpStr.umd.min.js.map +1 -0
- package/dist/cjs/CmpStr.js +663 -0
- package/dist/cjs/CmpStr.js.map +1 -0
- package/dist/cjs/CmpStrAsync.js +336 -0
- package/dist/cjs/CmpStrAsync.js.map +1 -0
- package/dist/cjs/index.js +15 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/metric/Cosine.js +101 -0
- package/dist/cjs/metric/Cosine.js.map +1 -0
- package/dist/cjs/metric/DamerauLevenshtein.js +110 -0
- package/dist/cjs/metric/DamerauLevenshtein.js.map +1 -0
- package/dist/cjs/metric/DiceSorensen.js +91 -0
- package/dist/cjs/metric/DiceSorensen.js.map +1 -0
- package/dist/cjs/metric/Hamming.js +82 -0
- package/dist/cjs/metric/Hamming.js.map +1 -0
- package/dist/cjs/metric/Jaccard.js +76 -0
- package/dist/cjs/metric/Jaccard.js.map +1 -0
- package/dist/cjs/metric/JaroWinkler.js +114 -0
- package/dist/cjs/metric/JaroWinkler.js.map +1 -0
- package/dist/cjs/metric/LCS.js +89 -0
- package/dist/cjs/metric/LCS.js.map +1 -0
- package/dist/cjs/metric/Levenshtein.js +94 -0
- package/dist/cjs/metric/Levenshtein.js.map +1 -0
- package/dist/cjs/metric/Metric.js +445 -0
- package/dist/cjs/metric/Metric.js.map +1 -0
- package/dist/cjs/metric/NeedlemanWunsch.js +95 -0
- package/dist/cjs/metric/NeedlemanWunsch.js.map +1 -0
- package/dist/cjs/metric/SmithWaterman.js +98 -0
- package/dist/cjs/metric/SmithWaterman.js.map +1 -0
- package/dist/cjs/metric/qGram.js +91 -0
- package/dist/cjs/metric/qGram.js.map +1 -0
- package/dist/cjs/phonetic/Cologne.js +112 -0
- package/dist/cjs/phonetic/Cologne.js.map +1 -0
- package/dist/cjs/phonetic/Metaphone.js +172 -0
- package/dist/cjs/phonetic/Metaphone.js.map +1 -0
- package/dist/cjs/phonetic/Phonetic.js +413 -0
- package/dist/cjs/phonetic/Phonetic.js.map +1 -0
- package/dist/cjs/phonetic/Soundex.js +135 -0
- package/dist/cjs/phonetic/Soundex.js.map +1 -0
- package/dist/cjs/utils/DeepMerge.js +144 -0
- package/dist/cjs/utils/DeepMerge.js.map +1 -0
- package/dist/cjs/utils/DiffChecker.js +500 -0
- package/dist/cjs/utils/DiffChecker.js.map +1 -0
- package/dist/cjs/utils/Filter.js +189 -0
- package/dist/cjs/utils/Filter.js.map +1 -0
- package/dist/cjs/utils/HashTable.js +175 -0
- package/dist/cjs/utils/HashTable.js.map +1 -0
- package/dist/cjs/utils/Normalizer.js +144 -0
- package/dist/cjs/utils/Normalizer.js.map +1 -0
- package/dist/cjs/utils/Pool.js +196 -0
- package/dist/cjs/utils/Pool.js.map +1 -0
- package/dist/cjs/utils/Profiler.js +229 -0
- package/dist/cjs/utils/Profiler.js.map +1 -0
- package/dist/cjs/utils/Registry.js +148 -0
- package/dist/cjs/utils/Registry.js.map +1 -0
- package/dist/cjs/utils/TextAnalyzer.js +358 -0
- package/dist/cjs/utils/TextAnalyzer.js.map +1 -0
- package/dist/esm/CmpStr.js +662 -0
- package/dist/esm/CmpStr.js.map +1 -0
- package/dist/esm/CmpStrAsync.js +331 -0
- package/dist/esm/CmpStrAsync.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/metric/Cosine.js +99 -0
- package/dist/esm/metric/Cosine.js.map +1 -0
- package/dist/esm/metric/DamerauLevenshtein.js +108 -0
- package/dist/esm/metric/DamerauLevenshtein.js.map +1 -0
- package/dist/esm/metric/DiceSorensen.js +89 -0
- package/dist/esm/metric/DiceSorensen.js.map +1 -0
- package/dist/esm/metric/Hamming.js +77 -0
- package/dist/esm/metric/Hamming.js.map +1 -0
- package/dist/esm/metric/Jaccard.js +74 -0
- package/dist/esm/metric/Jaccard.js.map +1 -0
- package/dist/esm/metric/JaroWinkler.js +112 -0
- package/dist/esm/metric/JaroWinkler.js.map +1 -0
- package/dist/esm/metric/LCS.js +87 -0
- package/dist/esm/metric/LCS.js.map +1 -0
- package/dist/esm/metric/Levenshtein.js +92 -0
- package/dist/esm/metric/Levenshtein.js.map +1 -0
- package/dist/esm/metric/Metric.js +442 -0
- package/dist/esm/metric/Metric.js.map +1 -0
- package/dist/esm/metric/NeedlemanWunsch.js +93 -0
- package/dist/esm/metric/NeedlemanWunsch.js.map +1 -0
- package/dist/esm/metric/SmithWaterman.js +96 -0
- package/dist/esm/metric/SmithWaterman.js.map +1 -0
- package/dist/esm/metric/qGram.js +89 -0
- package/dist/esm/metric/qGram.js.map +1 -0
- package/dist/esm/phonetic/Cologne.js +114 -0
- package/dist/esm/phonetic/Cologne.js.map +1 -0
- package/dist/esm/phonetic/Metaphone.js +174 -0
- package/dist/esm/phonetic/Metaphone.js.map +1 -0
- package/dist/esm/phonetic/Phonetic.js +409 -0
- package/dist/esm/phonetic/Phonetic.js.map +1 -0
- package/dist/esm/phonetic/Soundex.js +137 -0
- package/dist/esm/phonetic/Soundex.js.map +1 -0
- package/dist/esm/utils/DeepMerge.js +139 -0
- package/dist/esm/utils/DeepMerge.js.map +1 -0
- package/dist/esm/utils/DiffChecker.js +498 -0
- package/dist/esm/utils/DiffChecker.js.map +1 -0
- package/dist/esm/utils/Filter.js +187 -0
- package/dist/esm/utils/Filter.js.map +1 -0
- package/dist/esm/utils/HashTable.js +173 -0
- package/dist/esm/utils/HashTable.js.map +1 -0
- package/dist/esm/utils/Normalizer.js +142 -0
- package/dist/esm/utils/Normalizer.js.map +1 -0
- package/dist/esm/utils/Pool.js +194 -0
- package/dist/esm/utils/Pool.js.map +1 -0
- package/dist/esm/utils/Profiler.js +227 -0
- package/dist/esm/utils/Profiler.js.map +1 -0
- package/dist/esm/utils/Registry.js +142 -0
- package/dist/esm/utils/Registry.js.map +1 -0
- package/dist/esm/utils/TextAnalyzer.js +356 -0
- package/dist/esm/utils/TextAnalyzer.js.map +1 -0
- package/dist/types/CmpStr.d.ts +472 -0
- package/dist/types/CmpStrAsync.d.ts +233 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/metric/Cosine.d.ts +57 -0
- package/dist/types/metric/DamerauLevenshtein.d.ts +50 -0
- package/dist/types/metric/DiceSorensen.d.ts +57 -0
- package/dist/types/metric/Hamming.d.ts +49 -0
- package/dist/types/metric/Jaccard.d.ts +48 -0
- package/dist/types/metric/JaroWinkler.d.ts +50 -0
- package/dist/types/metric/LCS.d.ts +50 -0
- package/dist/types/metric/Levenshtein.d.ts +50 -0
- package/dist/types/metric/Metric.d.ts +261 -0
- package/dist/types/metric/NeedlemanWunsch.d.ts +47 -0
- package/dist/types/metric/SmithWaterman.d.ts +48 -0
- package/dist/types/metric/index.d.ts +41 -0
- package/dist/types/metric/qGram.d.ts +56 -0
- package/dist/types/phonetic/Cologne.d.ts +46 -0
- package/dist/types/phonetic/Metaphone.d.ts +50 -0
- package/dist/types/phonetic/Phonetic.d.ts +189 -0
- package/dist/types/phonetic/Soundex.d.ts +49 -0
- package/dist/types/phonetic/index.d.ts +30 -0
- package/dist/types/utils/DeepMerge.d.ts +70 -0
- package/dist/types/utils/DiffChecker.d.ts +137 -0
- package/dist/types/utils/Filter.d.ts +97 -0
- package/dist/types/utils/HashTable.d.ts +86 -0
- package/dist/types/utils/Normalizer.d.ts +76 -0
- package/dist/types/utils/Pool.d.ts +63 -0
- package/dist/types/utils/Profiler.d.ts +129 -0
- package/dist/types/utils/Registry.d.ts +57 -0
- package/dist/types/utils/TextAnalyzer.d.ts +199 -0
- package/dist/types/utils/Types.d.ts +313 -0
- package/package.json +62 -49
- package/src/CmpStr.d.ts +0 -70
- package/src/CmpStr.js +0 -912
- package/src/CmpStrAsync.d.ts +0 -19
- package/src/CmpStrAsync.js +0 -204
- package/src/algorithms/cosine.js +0 -86
- package/src/algorithms/damerau.js +0 -78
- package/src/algorithms/dice.js +0 -65
- package/src/algorithms/hamming.js +0 -44
- package/src/algorithms/jaccard.js +0 -34
- package/src/algorithms/jaroWinkler.js +0 -106
- package/src/algorithms/lcs.js +0 -58
- package/src/algorithms/levenshtein.js +0 -70
- package/src/algorithms/needlemanWunsch.js +0 -72
- package/src/algorithms/qGram.js +0 -63
- package/src/algorithms/smithWaterman.js +0 -78
- package/src/algorithms/soundex.js +0 -152
- package/src/index.d.ts +0 -3
- package/src/index.js +0 -47
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CmpStr.js","sources":["../../src/CmpStr.ts"],"sourcesContent":[null],"names":["DeepMerge.merge","DeepMerge.set","DeepMerge.rmv","DeepMerge.get"],"mappings":"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"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
|
|
2
|
+
import { CmpStr } from './CmpStr.js';
|
|
3
|
+
import { Normalizer } from './utils/Normalizer.js';
|
|
4
|
+
import { Filter } from './utils/Filter.js';
|
|
5
|
+
import { factory } from './utils/Registry.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* CmpStrAsync Asynchronous API
|
|
9
|
+
* src/CmpStrAsync.ts
|
|
10
|
+
*
|
|
11
|
+
* The CmpStrAsync class provides a fully asynchronous, Promise-based interface for
|
|
12
|
+
* advanced string comparison, similarity measurement, phonetic indexing, filtering
|
|
13
|
+
* and normalization. It extends the CmpStr class and overrides all relevant methods
|
|
14
|
+
* to support non-blocking, scalable, and I/O-friendly workloads.
|
|
15
|
+
*
|
|
16
|
+
* Features:
|
|
17
|
+
* - Asynchronous normalization, filtering, and metric computation
|
|
18
|
+
* - Async batch, pairwise, and single string comparison with detailed results
|
|
19
|
+
* - Async phonetic indexing and phonetic-aware search and comparison
|
|
20
|
+
* - Full compatibility with the synchronous CmpStr API
|
|
21
|
+
* - Designed for large-scale, high-performance, and server-side applications
|
|
22
|
+
*
|
|
23
|
+
* @module CmpStrAsync
|
|
24
|
+
* @author Paul Köhler (komed3)
|
|
25
|
+
* @license MIT
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* The CmpStrAsync class provides a fully asynchronous API for string comparison,
|
|
29
|
+
* phonetic indexing, filtering and normalization.
|
|
30
|
+
*
|
|
31
|
+
* @template R - The type of the metric result, defaults to MetricRaw
|
|
32
|
+
*/
|
|
33
|
+
class CmpStrAsync extends CmpStr {
|
|
34
|
+
/**
|
|
35
|
+
* --------------------------------------------------------------------------------
|
|
36
|
+
* Instanciate the CmpStrAsync class
|
|
37
|
+
* --------------------------------------------------------------------------------
|
|
38
|
+
*
|
|
39
|
+
* Methods to create a new CmpStrAsync instance with the given options.
|
|
40
|
+
* Using the static `create` method is recommended to ensure proper instantiation.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new CmpStrAsync instance with the given options.
|
|
44
|
+
*
|
|
45
|
+
* @param {string|CmpStrOptions} [opt] - Optional serialized or options object
|
|
46
|
+
* @returns {CmpStrAsync<R>} - A new CmpStrAsync instance
|
|
47
|
+
*/
|
|
48
|
+
static create(opt) {
|
|
49
|
+
return new CmpStrAsync(opt);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new CmpStrAsync instance calliing the super constructor.
|
|
53
|
+
*
|
|
54
|
+
* @param {string|CmpStrOptions} [opt] - Optional serialized or options object
|
|
55
|
+
*/
|
|
56
|
+
constructor(opt) {
|
|
57
|
+
super(opt);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* ---------------------------------------------------------------------------------
|
|
61
|
+
* Protected asynchronously utility methods for internal use
|
|
62
|
+
* ---------------------------------------------------------------------------------
|
|
63
|
+
*
|
|
64
|
+
* These methods provide asynchronous normalization, filtering, and metric
|
|
65
|
+
* computation capabilities, allowing for non-blocking operations.
|
|
66
|
+
*/
|
|
67
|
+
/**
|
|
68
|
+
* Asynchronously normalizes the input string or array using the configured or provided flags.
|
|
69
|
+
*
|
|
70
|
+
* @param {MetricInput} input - The input string or array
|
|
71
|
+
* @param {NormalizeFlags} [flags] - Normalization flags
|
|
72
|
+
* @returns {Promise<MetricInput>} - The normalized input
|
|
73
|
+
*/
|
|
74
|
+
async normalizeAsync(input, flags) {
|
|
75
|
+
return Normalizer.normalizeAsync(input, flags ?? this.options.flags ?? '');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Asynchronously applies all active filters to the input string or array.
|
|
79
|
+
*
|
|
80
|
+
* @param {MetricInput} input - The input string or array
|
|
81
|
+
* @param {string} [hook='input'] - The filter hook
|
|
82
|
+
* @returns {Promise<MetricInput>} - The filtered string(s)
|
|
83
|
+
*/
|
|
84
|
+
async filterAsync(input, hook) {
|
|
85
|
+
return Filter.applyAsync(hook, input);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Asynchronously prepares the input by normalizing and filtering.
|
|
89
|
+
*
|
|
90
|
+
* @param {MetricInput} [input] - The input string or array
|
|
91
|
+
* @param {CmpStrOptions} [opt] - Optional options to use
|
|
92
|
+
* @returns {Promise<MetricInput>} - The prepared input
|
|
93
|
+
*/
|
|
94
|
+
async prepareAsync(input, opt) {
|
|
95
|
+
const { flags, processors } = opt ?? this.options;
|
|
96
|
+
// Normalize the input using flags (i.e., 'itw')
|
|
97
|
+
if (flags?.length) input = await this.normalizeAsync(input, flags);
|
|
98
|
+
// Filter the input using hooked up filters
|
|
99
|
+
input = await this.filterAsync(input, 'input');
|
|
100
|
+
// Apply phonetic processors if configured
|
|
101
|
+
if (processors?.phonetic)
|
|
102
|
+
input = await this.indexAsync(input, processors.phonetic);
|
|
103
|
+
return input;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Asynchronously computes the phonetic index for the given input using
|
|
107
|
+
* the specified phonetic algorithm.
|
|
108
|
+
*
|
|
109
|
+
* @param {MetricInput} input - The input string or array
|
|
110
|
+
* @param {{ algo: string, opt?: PhoneticOptions }} options - The phonetic algorithm and options
|
|
111
|
+
* @returns {Promise<MetricInput>} - The phonetic index for the given input
|
|
112
|
+
*/
|
|
113
|
+
async indexAsync(input, { algo, opt }) {
|
|
114
|
+
this.assert('phonetic', algo);
|
|
115
|
+
const phonetic = factory.phonetic(algo, opt);
|
|
116
|
+
const delimiter = opt?.delimiter ?? ' ';
|
|
117
|
+
return Array.isArray(input)
|
|
118
|
+
? Promise.all(
|
|
119
|
+
input.map((s) =>
|
|
120
|
+
phonetic.getIndexAsync(s).then((r) => r.join(delimiter))
|
|
121
|
+
)
|
|
122
|
+
)
|
|
123
|
+
: phonetic.getIndexAsync(input).then((r) => r.join(delimiter));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Asynchronously computes the metric result for the given inputs, applying
|
|
127
|
+
* normalization and filtering as configured.
|
|
128
|
+
*
|
|
129
|
+
* @template T - The type of the metric result
|
|
130
|
+
* @param {MetricInput} a - The first input string or array
|
|
131
|
+
* @param {MetricInput} b - The second input string or array
|
|
132
|
+
* @param {CmpStrOptions} [opt] - Optional options to use
|
|
133
|
+
* @param {MetricMode} [mode='single'] - The metric mode to use
|
|
134
|
+
* @param {boolean} [raw=false] - Whether to return raw results
|
|
135
|
+
* @param {boolean} [skip=false] - Whether to skip normalization and filtering
|
|
136
|
+
* @returns {Promise<T>} - The computed metric result
|
|
137
|
+
*/
|
|
138
|
+
async computeAsync(a, b, opt, mode, raw, skip) {
|
|
139
|
+
const resolved = this.resolveOptions(opt);
|
|
140
|
+
this.assert('metric', resolved.metric);
|
|
141
|
+
// Prepare the input
|
|
142
|
+
const A = skip ? a : await this.prepareAsync(a, resolved);
|
|
143
|
+
const B = skip ? b : await this.prepareAsync(b, resolved);
|
|
144
|
+
// Get the metric class
|
|
145
|
+
const metric = factory.metric(resolved.metric, A, B, resolved.opt);
|
|
146
|
+
// Pass the original inputs to the metric
|
|
147
|
+
if (resolved.output !== 'prep') metric.setOriginal(a, b);
|
|
148
|
+
// Compute the metric result
|
|
149
|
+
await metric.runAsync(mode);
|
|
150
|
+
// Post-process the results and concat the original inputs
|
|
151
|
+
const result = this.postProcess(metric.getResults(), resolved);
|
|
152
|
+
// Resolve and return the result based on the raw flag
|
|
153
|
+
return this.output(result, raw ?? resolved.raw);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* ---------------------------------------------------------------------------------
|
|
157
|
+
* Public asynchronously core methods for string comparison
|
|
158
|
+
* ---------------------------------------------------------------------------------
|
|
159
|
+
*
|
|
160
|
+
* These methods provide the asynchronous core functionality for string comparison,
|
|
161
|
+
* phonetic indexing and text search, allowing for non-blocking operations.
|
|
162
|
+
*/
|
|
163
|
+
/**
|
|
164
|
+
* Asynchronously performs a single metric comparison.
|
|
165
|
+
*
|
|
166
|
+
* @template T - The type of the metric result
|
|
167
|
+
* @param {string} a - The source string
|
|
168
|
+
* @param {string} b - The target string
|
|
169
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
170
|
+
* @returns {Promise<T>} - The metric result
|
|
171
|
+
*/
|
|
172
|
+
async testAsync(a, b, opt) {
|
|
173
|
+
return this.computeAsync(a, b, opt, 'single');
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Asynchronously performs a single metric comparison returning the numeric score.
|
|
177
|
+
*
|
|
178
|
+
* @param {string} a - The source string
|
|
179
|
+
* @param {string} b - The target string
|
|
180
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
181
|
+
* @returns {Promise<number>} - The similarity score (0..1)
|
|
182
|
+
*/
|
|
183
|
+
async compareAsync(a, b, opt) {
|
|
184
|
+
return (await this.computeAsync(a, b, opt, 'single', true)).res;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Asynchronously performs a batch metric comparison between source and target
|
|
188
|
+
* strings or array of strings.
|
|
189
|
+
*
|
|
190
|
+
* @template T - The type of the metric result
|
|
191
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
192
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
193
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
194
|
+
* @returns {Promise<T>} - The batch metric results
|
|
195
|
+
*/
|
|
196
|
+
async batchTestAsync(a, b, opt) {
|
|
197
|
+
return this.computeAsync(a, b, opt, 'batch');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Asynchronously performs a batch metric comparison and returns results sorted by score.
|
|
201
|
+
*
|
|
202
|
+
* @template T - The type of the metric result
|
|
203
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
204
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
205
|
+
* @param {'desc'|'asc'} [dir='desc'] - Sort direction (desc, asc)
|
|
206
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
207
|
+
* @returns {Promise<T>} - The sorted batch results
|
|
208
|
+
*/
|
|
209
|
+
async batchSortedAsync(a, b, dir = 'desc', opt) {
|
|
210
|
+
const res = await this.computeAsync(a, b, opt, 'batch', true);
|
|
211
|
+
return this.output(
|
|
212
|
+
res.sort((a, b) => (dir === 'asc' ? a.res - b.res : b.res - a.res)),
|
|
213
|
+
opt?.raw ?? this.options.raw
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Asynchronously performs a pairwise metric comparison between source and target
|
|
218
|
+
* strings or array of strings.
|
|
219
|
+
*
|
|
220
|
+
* @template T - The type of the metric result
|
|
221
|
+
* Input arrays needs of the same length to perform pairwise comparison,
|
|
222
|
+
* otherwise the method will throw an error.
|
|
223
|
+
*
|
|
224
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
225
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
226
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
227
|
+
* @returns {Promise<T>} - The pairwise metric results
|
|
228
|
+
*/
|
|
229
|
+
async pairsAsync(a, b, opt) {
|
|
230
|
+
return this.computeAsync(a, b, opt, 'pairwise');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Asynchronously performs a batch comparison and returns only results above the threshold.
|
|
234
|
+
*
|
|
235
|
+
* @template T - The type of the metric result
|
|
236
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
237
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
238
|
+
* @param {number} threshold - The similarity threshold (0..1)
|
|
239
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
240
|
+
* @returns {Promise<T>} - The filtered batch results
|
|
241
|
+
*/
|
|
242
|
+
async matchAsync(a, b, threshold, opt) {
|
|
243
|
+
const res = await this.computeAsync(a, b, opt, 'batch', true);
|
|
244
|
+
return this.output(
|
|
245
|
+
res.filter((r) => r.res >= threshold).sort((a, b) => b.res - a.res),
|
|
246
|
+
opt?.raw ?? this.options.raw
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Asynchronously returns the n closest matches from a batch comparison.
|
|
251
|
+
*
|
|
252
|
+
* @template T - The type of the metric result
|
|
253
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
254
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
255
|
+
* @param {number} [n=1] - Number of closest matches
|
|
256
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
257
|
+
* @returns {Promise<T>} - The closest matches
|
|
258
|
+
*/
|
|
259
|
+
async closestAsync(a, b, n = 1, opt) {
|
|
260
|
+
return (await this.batchSortedAsync(a, b, 'desc', opt)).slice(0, n);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Asynchronously returns the n furthest matches from a batch comparison.
|
|
264
|
+
*
|
|
265
|
+
* @template T - The type of the metric result
|
|
266
|
+
* @param {MetricInput} a - The source string or array of strings
|
|
267
|
+
* @param {MetricInput} b - The target string or array of strings
|
|
268
|
+
* @param {number} [n=1] - Number of furthest matches
|
|
269
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
270
|
+
* @returns {Promise<T>} - The furthest matches
|
|
271
|
+
*/
|
|
272
|
+
async furthestAsync(a, b, n = 1, opt) {
|
|
273
|
+
return (await this.batchSortedAsync(a, b, 'asc', opt)).slice(0, n);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Asynchronously performs a normalized and filtered substring search.
|
|
277
|
+
*
|
|
278
|
+
* @param {string} needle - The search string
|
|
279
|
+
* @param {string[]} haystack - The array to search in
|
|
280
|
+
* @param {NormalizeFlags} [flags] - Normalization flags
|
|
281
|
+
* @param {CmpStrProcessors} [processors] - Pre-processors to apply
|
|
282
|
+
* @returns {Promise<string[]>} - Array of matching entries
|
|
283
|
+
*/
|
|
284
|
+
async searchAsync(needle, haystack, flags, processors) {
|
|
285
|
+
const resolved = this.resolveOptions({ flags, processors });
|
|
286
|
+
// Prepare the needle and haystack, normalizing and filtering them
|
|
287
|
+
const test = await this.prepareAsync(needle, resolved);
|
|
288
|
+
const hstk = await this.prepareAsync(haystack, resolved);
|
|
289
|
+
// Filter the haystack based on the normalized test string
|
|
290
|
+
return haystack.filter((_, i) => hstk[i].includes(test));
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Asynchronously computes a similarity matrix for the given input array.
|
|
294
|
+
*
|
|
295
|
+
* @param {string[]} input - The input array
|
|
296
|
+
* @param {CmpStrOptions} [opt] - Optional options
|
|
297
|
+
* @returns {Promise<number[][]>} - The similarity matrix
|
|
298
|
+
*/
|
|
299
|
+
async matrixAsync(input, opt) {
|
|
300
|
+
input = await this.prepareAsync(input, this.resolveOptions(opt));
|
|
301
|
+
return Promise.all(
|
|
302
|
+
input.map(
|
|
303
|
+
async (a) =>
|
|
304
|
+
await this.computeAsync(
|
|
305
|
+
a,
|
|
306
|
+
input,
|
|
307
|
+
undefined,
|
|
308
|
+
'batch',
|
|
309
|
+
true,
|
|
310
|
+
true
|
|
311
|
+
).then((r) => r.map((b) => b.res ?? 0))
|
|
312
|
+
)
|
|
313
|
+
);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Asynchronously computes the phonetic index for a string using the
|
|
317
|
+
* configured or given algorithm.
|
|
318
|
+
*
|
|
319
|
+
* @param {string} [input] - The input string
|
|
320
|
+
* @param {string} [algo] - The phonetic algorithm to use
|
|
321
|
+
* @param {PhoneticOptions} [opt] - Optional phonetic options
|
|
322
|
+
* @returns {Promise<string>} - The phonetic index as a string
|
|
323
|
+
*/
|
|
324
|
+
async phoneticIndexAsync(input, algo, opt) {
|
|
325
|
+
const { algo: a, opt: o } = this.options.processors?.phonetic ?? {};
|
|
326
|
+
return this.indexAsync(input, { algo: algo ?? a, opt: opt ?? o });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export { CmpStrAsync };
|
|
331
|
+
//# sourceMappingURL=CmpStrAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CmpStrAsync.js","sources":["../../src/CmpStrAsync.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBG,CAAA,CAAA;AAiBH,CAAA,CAAA;;;;;AAKG,CAAA,CAAA;AACG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA;AAErD,CAAA,CAAA,CAAA,CAAA;;;;;;;AAOG,CAAA,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA,CAAA;;;;;AAKG,CAAA,CAAA,CAAA,CAAA;EACI,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAkB,CAAA,CAAA,CAA4B,CAAA,CAAA;AAEvE,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,GAAG,CAAE;;AAIlC,CAAA,CAAA,CAAA,CAAA;;;;AAIG,CAAA,CAAA,CAAA,CAAA;CACH,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAA,CAA4B,CAAA,CAAA,CAAA;IAAK,CAAK,CAAA,CAAA,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAE;AAAA,EAAA;AAEtE,CAAA,CAAA,CAAA,CAAA;;;;;;;AAOG,CAAA,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA,CAAA;;;;;;AAMG,CAAA,CAAA,CAAA,CAAA;AACO,CAAA,CAAA,MAAM,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,KAAsB,CAAA,CAAA;AAEvE,CAAA,CAAA,CAAA,CAAA,OAAO,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,EAAE,CAAE;;AAIhF,CAAA,CAAA,CAAA,CAAA;;;;;;AAMG,CAAA,CAAA,CAAA,CAAA;AACO,CAAA,CAAA,MAAM,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAY,CAAA,CAAA;CAE1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAE,CAAI,CAAA,CAAA,CAAA,CAAA,CAAE,KAAe,CAAE;;AAIrD,CAAA,CAAA,CAAA,CAAA;;;;;;AAMG,CAAA,CAAA,CAAA,CAAA;AACO,CAAA,CAAA,MAAM,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAmB,CAAA,CAAA;CAElE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAE,CAAA,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;CAGjD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,EAAG,CAAA,CAAA,CAAA,CAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAC,cAAc,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE;;CAGtE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAC,WAAW,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE;;CAGhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE;AAEvF,CAAA,CAAA,CAAA,CAAA,OAAO,CAAK,CAAA,CAAA,CAAA,CAAA;;AAIhB,CAAA,CAAA,CAAA,CAAA;;;;;;;AAOG,CAAA,CAAA,CAAA,CAAA;CACO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,EAAE,CAAI,CAAA,CAAA,CAAA,CAAA,CAAE,CAAG,CAAA,CAAA,CAAA,CAE3D,CAAA,CAAA;AAEG,CAAA,CAAA,CAAA,CAAA,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,CAAE;CAE/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,QAAQ,CAAE,CAAA,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAAA,CAAG,CAAE;AACxD,CAAA,CAAA,CAAA,CAAA,MAAM,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,GAAG,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,IAAI,CAAG,CAAA,CAAA;AAEvC,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA;AACvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAG,CAAA,CAAA;UAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAG,CAAA,CAAA,EAAE,EAAC,CAAA,CAAA;AAAA,YAAI,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAE,CAAC,CAAA,CAAA,CAAA,CAAI,EAAE,EAAC,CAAI,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAE;UAAE;;QACzF,QAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAC,CAAA,CAAA,CAAA,CAAI,EAAE,EAAC,IAAI,CAAC,CAAC,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAE,CAAE;;AAI1E,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;AAYG,CAAA,CAAA,CAAA,CAAA;AACO,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CACxB,CAAc,EAAE,CAAc,CAAA,CAAE,CAAmB,CAAA,CAAA,CAAA,CACnD,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAE,CAAa,CAAA,CAAA,CAAA,CAAE,IAAc,CAAA,CAAA;CAGhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAQ,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAG,CAAE;CAE1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,QAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE;;AAGxC,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,GAAG,CAAC,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAA,CAAE,QAAQ,CAAE;AACxE,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,GAAG,CAAC,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAA,CAAE,QAAQ,CAAE;;AAGxE,CAAA,CAAA,CAAA,CAAA,MAAM,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,OAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAE,CAAA,CAAC,EAAE,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,GAAG,CAAE;;AAGhF,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,KAAK,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,MAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAE,CAAC,CAAA,CAAE,CAAC,CAAE;;AAG5D,CAAA,CAAA,CAAA,CAAA,MAAM,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,CAAE;;AAG7B,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAE,CAAA,CAAA,CAAE,QAAQ,CAAE;;AAGhE,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAG,CAAE;;AAIxD,CAAA,CAAA,CAAA,CAAA;;;;;;;AAOG,CAAA,CAAA,CAAA,CAAA;AAEH,CAAA,CAAA,CAAA,CAAA;;;;;;;;AAQG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,SAAS,CAClB,CAAS,EAAE,CAAS,CAAA,CAAE,GAAmB,CAAA,CAAA;AAGzC,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE;;AAItD,CAAA,CAAA,CAAA,CAAA;;;;;;;AAOG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,YAAY,CAAG,CAAS,EAAE,CAAS,CAAA,CAAE,GAAmB,CAAA,CAAA;AAEjE,CAAA,CAAA,CAAA,CAAA,OAAO,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAyB,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,GAAG,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,EAAE,CAAI,CAAA,CAAA,CAAA,CAAE,EAAG,CAAG,CAAA,CAAA;;AAI9F,CAAA,CAAA,CAAA,CAAA;;;;;;;;;AASG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,cAAc,CACvB,CAAc,EAAE,CAAc,CAAA,CAAE,GAAmB,CAAA,CAAA;AAGnD,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE;;AAIrD,CAAA,CAAA,CAAA,CAAA;;;;;;;;;AASG,CAAA,CAAA,CAAA,CAAA;EACI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CACzB,CAAc,CAAE,CAAA,CAAc,CAAE,CAAA,CAAA,CAAA,CAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA;AAGjF,CAAA,CAAA,CAAA,CAAA,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,EAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,CAAE;CAErF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM;MACd,CAAG,CAAA,CAAA,CAAC,IAAI,CAAE,CAAE,CAAC,CAAE,CAAA,CAAC,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,CAAG,CAAA,CAAA,CAAC,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAAG,GAAG,CAAC,CAAC,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC,CAAG,CAAA,CAAA,EAAE;MACrE,CAAG,CAAA,CAAA,CAAA,CAAE,GAAG,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC;;AAKjC,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;AAYG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,UAAU,CACnB,CAAc,EAAE,CAAc,CAAA,CAAE,GAAmB,CAAA,CAAA;AAGnD,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAE;;AAIxD,CAAA,CAAA,CAAA,CAAA;;;;;;;;;AASG,CAAA,CAAA,CAAA,CAAA;CACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACnB,CAAc,CAAA,CAAE,CAAc,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAE,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA;AAGtE,CAAA,CAAA,CAAA,CAAA,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwB,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA,CAAG,EAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,CAAE;IAErF,OAAO,CAAI,CAAA,CAAA,CAAA,CAAC,MAAM;MACd,CAAA,CAAA,CAAG,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,EAAE,EAAC,CAAI,CAAA,CAAA,CAAA,CAAC,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,SAAS,CAAE,CAAC,IAAI,CAAE,CAAE,CAAC,CAAE,CAAA,CAAC,KAAM,CAAC,CAAC,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC,CAAG,CAAA,CAAA,CAAE;MACvE,CAAG,CAAA,CAAA,CAAA,CAAE,GAAG,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC;;AAKjC,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;AASG,CAAA,CAAA,CAAA,CAAA;EACI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CACrB,CAAc,CAAE,CAAA,CAAc,CAAE,CAAA,CAAA,CAAY,CAAA,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA;CAGlE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAE,CAAA,CAAC,EAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAG,CAAE,CAAA,CAAG,KAAK,CAAE,CAAC,CAAE,CAAA,CAAC,CAAO;;AAIlF,CAAA,CAAA,CAAA,CAAA;;;;;;;;;AASG,CAAA,CAAA,CAAA,CAAA;EACI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CACtB,CAAc,CAAE,CAAA,CAAc,CAAE,CAAA,CAAA,CAAY,CAAA,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA,CAAmB,CAAA,CAAA;CAGlE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAC,CAAE,CAAA,CAAC,EAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAG,CAAE,CAAA,CAAG,KAAK,CAAE,CAAC,CAAE,CAAA,CAAC,CAAO;;AAIjF,CAAA,CAAA,CAAA,CAAA;;;;;;;;AAQG,CAAA,CAAA,CAAA,CAAA;CACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpB,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,QAAkB,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB,CAC1D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA6B,CAAA,CAAA;AAG7B,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAE,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAE;;CAG5E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAY;CAC1E,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAc;;IAGhF,OAAO,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,MAAM,CAAE,CAAE,CAAC,CAAE,CAAA,CAAC,KAAM,CAAI,CAAA,CAAA,CAAA,CAAE,CAAC,CAAE,CAAC,QAAQ,CAAE,CAAA,CAAA,CAAA,CAAI,CAAE,CAAE;;AAIpE,CAAA,CAAA,CAAA,CAAA;;;;;;AAMG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,MAAM,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAmB,CAAA,CAAA;AAE3D,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAE,CAAA,CAAA,CAAG,CAAE,CAAc;CAEhF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,OAAO,CAAC,CAAA,CAAA,CAAG;MAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAG,CAAA,CAAA;QAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC;UAClC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACnB,CAAC;AAAE,YAAA,CAAA,CAAA,CAAA,CAAA,CAAK;AAAE,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS;AAAE,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO;YAAE,CAAI,CAAA,CAAA,CAAA;AAAA,YAAE;UAAI,CAC3C,CAAC,IAAI,EAAE,EAAC,CAAI,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAA,CAAG,EAAE,EAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAE;MAAE;;AAK/C,CAAA;AAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;AAQG,CAAA,CAAA,CAAA,CAAA;AACI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,kBAAkB,CAC3B,CAAA,CAAA,CAAA,CAAA,CAAa,EAAE,CAAa,CAAA,CAAA,CAAA,CAAA,CAAE,GAAqB,CAAA,CAAA;AAGnD,CAAA,CAAA,CAAA,CAAA,MAAM,CAAE,CAAA,CAAA,CAAA,CAAA,CAAI,EAAE,CAAC,CAAA,CAAE,GAAG,CAAE,CAAA,CAAC,EAAE,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,UAAU,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,IAAI,CAAE,CAAA;AAEnE,CAAA,CAAA,CAAA,CAAA,OAAO,CAAI,CAAA,CAAA,CAAA,CAAC,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,KAAK,CAAE,CAAA,EAC3B,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,CAAA,CACrC,CAAA,CAAA,CAAqB;;AAI7B;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
|
|
2
|
+
export { CmpStr } from './CmpStr.js';
|
|
3
|
+
export { CmpStrAsync } from './CmpStrAsync.js';
|
|
4
|
+
export { DiffChecker } from './utils/DiffChecker.js';
|
|
5
|
+
export { Normalizer } from './utils/Normalizer.js';
|
|
6
|
+
export { TextAnalyzer } from './utils/TextAnalyzer.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
|
|
2
|
+
import { MetricRegistry, Metric } from './Metric.js';
|
|
3
|
+
import { Pool } from '../utils/Pool.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Cosine Similarity
|
|
7
|
+
* src/metric/Cosine.ts
|
|
8
|
+
*
|
|
9
|
+
* @see https://en.wikipedia.org/wiki/Cosine_similarity
|
|
10
|
+
*
|
|
11
|
+
* Cosine similarity is a metric used to measure how similar two vectors are, regardless
|
|
12
|
+
* of their magnitude. In text analysis, it is commonly used to compare documents or
|
|
13
|
+
* strings by representing them as term frequency vectors and computing the cosine of
|
|
14
|
+
* the angle between these vectors.
|
|
15
|
+
*
|
|
16
|
+
* The result is a value between 0 and 1, where 1 means the vectors are identical and
|
|
17
|
+
* 0 means they are orthogonal (no similarity).
|
|
18
|
+
*
|
|
19
|
+
* @module Metric/CosineSimilarity
|
|
20
|
+
* @author Paul Köhler (komed3)
|
|
21
|
+
* @license MIT
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* CosineSimilarity class extends the Metric class to implement the Cosine similarity algorithm.
|
|
25
|
+
*/
|
|
26
|
+
class CosineSimilarity extends Metric {
|
|
27
|
+
/**
|
|
28
|
+
* Constructor for the CosineSimilarity class.
|
|
29
|
+
*
|
|
30
|
+
* Initializes the Cosine similarity metric with two input strings or
|
|
31
|
+
* arrays of strings and optional options.
|
|
32
|
+
*
|
|
33
|
+
* @param {MetricInput} a - First input string or array of strings
|
|
34
|
+
* @param {MetricInput} b - Second input string or array of strings
|
|
35
|
+
* @param {MetricOptions} [opt] - Options for the metric computation
|
|
36
|
+
*/
|
|
37
|
+
constructor(a, b, opt = {}) {
|
|
38
|
+
// Call the parent Metric constructor with the metric name and inputs
|
|
39
|
+
// Metric is symmetrical
|
|
40
|
+
super('cosine', a, b, opt, true);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Calculates the term frequency vector for a given string.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} str - The input string
|
|
46
|
+
* @param {string} delimiter - The delimiter to split terms
|
|
47
|
+
* @return {Map<string, number>} - Term frequency object
|
|
48
|
+
*/
|
|
49
|
+
_termFreq(str, delimiter) {
|
|
50
|
+
const terms = str.split(delimiter);
|
|
51
|
+
const freq = Pool.acquire('map', terms.length);
|
|
52
|
+
for (const term of terms) freq.set(term, (freq.get(term) || 0) + 1);
|
|
53
|
+
return freq;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Calculates the Cosine similarity between two strings.
|
|
57
|
+
*
|
|
58
|
+
* @param {string} a - First string
|
|
59
|
+
* @param {string} b - Second string
|
|
60
|
+
* @return {MetricCompute<CosineRaw>} - Object containing the similarity result and raw values
|
|
61
|
+
*/
|
|
62
|
+
compute(a, b) {
|
|
63
|
+
// Get delimiter from options or use default (space)
|
|
64
|
+
const { delimiter = ' ' } = this.options;
|
|
65
|
+
// Compute term frequency vectors
|
|
66
|
+
const termsA = this._termFreq(a, delimiter);
|
|
67
|
+
const termsB = this._termFreq(b, delimiter);
|
|
68
|
+
// Calculate dot product and magnitudes
|
|
69
|
+
let dotProduct = 0,
|
|
70
|
+
magnitudeA = 0,
|
|
71
|
+
magnitudeB = 0;
|
|
72
|
+
// Iterate over terms in A for dotProduct and magnitudeA
|
|
73
|
+
for (const [term, freqA] of termsA) {
|
|
74
|
+
const freqB = termsB.get(term) || 0;
|
|
75
|
+
dotProduct += freqA * freqB;
|
|
76
|
+
magnitudeA += freqA * freqA;
|
|
77
|
+
}
|
|
78
|
+
// Iterate over terms in B for magnitudeB
|
|
79
|
+
for (const freqB of termsB.values()) magnitudeB += freqB * freqB;
|
|
80
|
+
magnitudeA = Math.sqrt(magnitudeA);
|
|
81
|
+
magnitudeB = Math.sqrt(magnitudeB);
|
|
82
|
+
// Release maps back to the pool
|
|
83
|
+
Pool.release('map', termsA, termsA.size);
|
|
84
|
+
Pool.release('map', termsB, termsB.size);
|
|
85
|
+
// Return the result as a MetricCompute object
|
|
86
|
+
return {
|
|
87
|
+
res:
|
|
88
|
+
magnitudeA && magnitudeB
|
|
89
|
+
? Metric.clamp(dotProduct / (magnitudeA * magnitudeB))
|
|
90
|
+
: 0,
|
|
91
|
+
raw: { dotProduct, magnitudeA, magnitudeB }
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Register the Cosine similarity in the metric registry
|
|
96
|
+
MetricRegistry.add('cosine', CosineSimilarity);
|
|
97
|
+
|
|
98
|
+
export { CosineSimilarity };
|
|
99
|
+
//# sourceMappingURL=Cosine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cosine.js","sources":["../../../src/metric/Cosine.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// CmpStr v3.0.0 dev-1a82e20-250612 by Paul Köhler @komed3 / MIT License
|
|
2
|
+
import { MetricRegistry, Metric } from './Metric.js';
|
|
3
|
+
import { Pool } from '../utils/Pool.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Damerau-Levenshtein Distance
|
|
7
|
+
* src/metric/DamerauLevenshtein.ts
|
|
8
|
+
*
|
|
9
|
+
* @see https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
|
|
10
|
+
*
|
|
11
|
+
* The Damerau-Levenshtein distance extends the classical Levenshtein algorithm by
|
|
12
|
+
* including transpositions (swapping of two adjacent characters) as a single edit
|
|
13
|
+
* operation, in addition to insertions, deletions, and substitutions.
|
|
14
|
+
*
|
|
15
|
+
* This metric is particularly useful for detecting and correcting common
|
|
16
|
+
* typographical errors.
|
|
17
|
+
*
|
|
18
|
+
* @module Metric/DamerauLevenshtein
|
|
19
|
+
* @author Paul Köhler (komed3)
|
|
20
|
+
* @license MIT
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* DamerauLevenshteinDistance class extends the Metric class to implement the Damerau-Levenshtein algorithm.
|
|
24
|
+
*/
|
|
25
|
+
class DamerauLevenshteinDistance extends Metric {
|
|
26
|
+
/**
|
|
27
|
+
* Constructor for the DamerauLevenshteinDistance class.
|
|
28
|
+
*
|
|
29
|
+
* Initializes the Damerau-Levenshtein 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
|
+
constructor(a, b, opt = {}) {
|
|
37
|
+
// Call the parent Metric constructor with the metric name and inputs
|
|
38
|
+
// Metric is symmetrical
|
|
39
|
+
super('damerau', a, b, opt, true);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Calculates the normalized Damerau-Levenshtein distance between two strings.
|
|
43
|
+
*
|
|
44
|
+
* @param {string} a - First string (always the shorter string for memory efficiency)
|
|
45
|
+
* @param {string} b - Second string
|
|
46
|
+
* @param {number} m - Length of the first string (a)
|
|
47
|
+
* @param {number} n - Length of the second string (b)
|
|
48
|
+
* @param {number} maxLen - Maximum length of the strings
|
|
49
|
+
* @return {MetricCompute<DamerauRaw>} - Object containing the similarity result and raw distance
|
|
50
|
+
*/
|
|
51
|
+
compute(a, b, m, n, maxLen) {
|
|
52
|
+
// Get three reusable arrays from the Pool for the DP rows
|
|
53
|
+
const len = m + 1;
|
|
54
|
+
const [test, prev, curr] = Pool.acquireMany('uint16', [len, len, len]);
|
|
55
|
+
// Initialize the first row (edit distances from empty string to a)
|
|
56
|
+
for (let i = 0; i <= m; i++) prev[i] = i;
|
|
57
|
+
// Fill the DP matrix row by row (over the longer string)
|
|
58
|
+
for (let j = 1; j <= n; j++) {
|
|
59
|
+
// Cost of transforming empty string to b[0..j]
|
|
60
|
+
curr[0] = j;
|
|
61
|
+
// Get the character code of the current character in b
|
|
62
|
+
const cb = b.charCodeAt(j - 1);
|
|
63
|
+
for (let i = 1; i <= m; i++) {
|
|
64
|
+
// Get the character code of the current character in b
|
|
65
|
+
const ca = a.charCodeAt(i - 1);
|
|
66
|
+
// If characters are the same, no cost for substitution
|
|
67
|
+
const cost = ca === cb ? 0 : 1;
|
|
68
|
+
// Calculate minimum of deletion, insertion, substitution
|
|
69
|
+
let val = Math.min(
|
|
70
|
+
curr[i - 1] + 1, // Insertion
|
|
71
|
+
prev[i] + 1, // Deletion
|
|
72
|
+
prev[i - 1] + cost // Substitution
|
|
73
|
+
);
|
|
74
|
+
// Check for transposition
|
|
75
|
+
if (
|
|
76
|
+
i > 1 &&
|
|
77
|
+
j > 1 &&
|
|
78
|
+
ca === b.charCodeAt(j - 2) &&
|
|
79
|
+
cb === a.charCodeAt(i - 2)
|
|
80
|
+
) {
|
|
81
|
+
// Transposition
|
|
82
|
+
val = Math.min(val, test[i - 2] + cost);
|
|
83
|
+
}
|
|
84
|
+
// Set the cost for the current cell
|
|
85
|
+
curr[i] = val;
|
|
86
|
+
}
|
|
87
|
+
// Rotate rows: test <= prev, prev <= curr, curr <= test
|
|
88
|
+
test.set(prev);
|
|
89
|
+
prev.set(curr);
|
|
90
|
+
}
|
|
91
|
+
// The last value in prev is the Damerau-Levenshtein distance
|
|
92
|
+
const dist = prev[m];
|
|
93
|
+
// Release arrays back to the pool
|
|
94
|
+
Pool.release('uint16', test, len);
|
|
95
|
+
Pool.release('uint16', prev, len);
|
|
96
|
+
Pool.release('uint16', curr, len);
|
|
97
|
+
// Normalize by the length of the longer string
|
|
98
|
+
return {
|
|
99
|
+
res: maxLen === 0 ? 1 : Metric.clamp(1 - dist / maxLen),
|
|
100
|
+
raw: { dist, maxLen }
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Register the Damerau-Levenshtein distance in the metric registry
|
|
105
|
+
MetricRegistry.add('damerau', DamerauLevenshteinDistance);
|
|
106
|
+
|
|
107
|
+
export { DamerauLevenshteinDistance };
|
|
108
|
+
//# sourceMappingURL=DamerauLevenshtein.js.map
|