la-cosa-nostra
Version:
A Mafia bot designed to run in Discord - beware the traitors and the lies!
27 lines (16 loc) • 676 B
JavaScript
var splitJaroWinklerDistance = require("./splitJaroWinklerDistance.js");
var levenshteinDistance = require("./levenshteinDistance.js");
module.exports = function(a, b, beta_1=0.8, beta_2=0.2, alpha=1.0) {
if (beta_1 + beta_2 !== 1) {
throw new Error("Beta1 + beta2 should equal 1");
};
// Split Jaro-Winkler
var jw_dist = splitJaroWinklerDistance(a, b);
// Hybrid of Jaro Winkler and modified Levenshtein
a = a.toLowerCase();
b = b.toLowerCase();
var lev_dist = levenshteinDistance(a, b);
var lev_metric = (lev_dist)/b.length;
lev_metric = Math.max(0, -Math.abs(lev_metric) + 1);
return (jw_dist * beta_1 + lev_metric * beta_2) * alpha;
};