fuzzy-rater
Version:
Tooling for fuzzily rating text according to some query
82 lines • 7.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const FuzzyWordMatcher_1 = require("./fuzzyRate/wordMatcher/FuzzyWordMatcher");
const createFuzzyNFATemplate_1 = require("./fuzzyRate/wordMatcher/createFuzzyNFATemplate");
const NFA_1 = require("./NFA/NFA");
const FuzzyMultiWordMatcher_1 = require("./fuzzyRate/wordMatcher/FuzzyMultiWordMatcher");
const FuzzyRater_1 = require("./fuzzyRate/FuzzyRater");
// TODO: currently this file just contains test setups, will be replaced by module exports
// =============================================================================
let t1a = -Date.now();
const matcher = new FuzzyWordMatcher_1.FuzzyWordMatcher("something", 2);
t1a += Date.now();
let t2a = -Date.now();
for (let i = 0; i < 1e5; i++) {
matcher.getMatch("this is really something very cool right? or somthng");
}
t2a += Date.now();
let t3a = -Date.now();
for (let i = 0; i < 1e5; i++) {
matcher.getMatchData("this is really something very cool right? or somthng");
}
t3a += Date.now();
// =============================================================================
let t1b = -Date.now();
const multiMatcher = new FuzzyMultiWordMatcher_1.FuzzyMultiWordMatcher("something", 2);
t1b += Date.now();
let t2b = -Date.now();
for (let i = 0; i < 1e5; i++) {
multiMatcher.getMatch("this is really something very cool right? or somthng");
}
t2b += Date.now();
let t3b = -Date.now();
for (let i = 0; i < 1e5; i++) {
multiMatcher.getMatchData("this is really something very cool right? or somthng");
}
t3b += Date.now();
// =============================================================================
let t1c = -Date.now();
const nfaTemplate = createFuzzyNFATemplate_1.createFuzzyNFATemplate("something", 2);
const nfa = new NFA_1.NFA(nfaTemplate);
t1c += Date.now();
let t2c = -Date.now();
for (let i = 0; i < 1e5; i++) {
nfa.execute("this is really something very cool right? or somthng");
}
t2c += Date.now();
console.log("All executions evaluated 100 000 times\n");
console.log("Evaluating query 'something' with max 2 distance:");
console.log(` matcher setup: ${t1a}, execution: ${t2a}, matchExecution: ${t3a} \n multiMatcher setup: ${t1b}, execution: ${t2b}, matchExecution: ${t3b} \n nfa setup: ${t1c}, execution: ${t2c} \n `);
// =============================================================================
let t4 = -Date.now();
const fuzzyRater = new FuzzyRater_1.FuzzyRater("some cool stuff");
t4 += Date.now();
let t5 = -Date.now();
for (let i = 0; i < 1e5; i++) {
fuzzyRater.getScore("some things can't be some cool stuff while other stuff can be cool");
}
t5 += Date.now();
let t6 = -Date.now();
for (let i = 0; i < 1e5; i++) {
fuzzyRater.getScore("nothing here should realistically match the input query since it's too different");
}
t6 += Date.now();
console.log("Evaluating query 'some cool stuff' with max 1 distance per word:");
console.log(`Fuzzy rater setup: ${t4}, execution when matching: ${t5}, execution when not matching: ${t6}`);
// // =============================================================================
// const nfaDfa = new NFADFA(nfaTemplate);
// let t5 = -Date.now();
// for (let i = 0; i < 1e5; i++) {
// const matches = nfaDfa.executeTraced("this is really something very cool right?");
// const match = matches.reduce(
// (best, m) =>
// m.final.matched && (best == null || m.final.distance < best.final.distance)
// ? m
// : best,
// null as null | (typeof matches extends (infer T)[] ? T : never)
// );
// const trace = match?.getPath();
// }
// t5 += Date.now();
// console.log(t5);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0VBQTBFO0FBQzFFLDJGQUFzRjtBQUN0RixtQ0FBOEI7QUFFOUIseUZBQW9GO0FBQ3BGLHVEQUFrRDtBQUVsRCwwRkFBMEY7QUFFMUYsZ0ZBQWdGO0FBQ2hGLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksbUNBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Q0FDNUU7QUFDRCxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRWxCLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUIsT0FBTyxDQUFDLFlBQVksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0NBQ2hGO0FBQ0QsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVsQixnRkFBZ0Y7QUFDaEYsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxZQUFZLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0Qs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