fuzzy-rater
Version:
Tooling for fuzzily rating text according to some query
82 lines • 7.68 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrRUFBMEU7QUFDMUUsMkZBQXNGO0FBQ3RGLG1DQUE4QjtBQUU5Qix5RkFBb0Y7QUFDcEYsdURBQWtEO0FBRWxELDBGQUEwRjtBQUUxRixnRkFBZ0Y7QUFDaEYsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVsQixJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0RBQXNELENBQUMsQ0FBQztDQUM1RTtBQUNELEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQixPQUFPLENBQUMsWUFBWSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Q0FDaEY7QUFDRCxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRWxCLGdGQUFnRjtBQUNoRixJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLDZDQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztB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