ESTándares Para Dummies

  Statique public Classe JarowinklerDistance {/ * La modification Winkler ne sera pas appliquée à moins que le * pour cent correspondant ne soit au-dessus du pourcentage ou au-dessus du% de la modification. * Le papier de Winkler a utilisé une valeur par défaut de 0,7 * / privé statique loodonly double MPeadHreshold = 0,7; / * Taille du préfixe à conc négliger par la modification Winkler. * Le papier de Winkler a utilisé une valeur par défaut de 4 * / Privé Statique RaNDonly int Mnumchars = 4; /// < Résumé > /// retourne la distance Jaro-Winkler entre les chaînes spécifiées ///. La distance est symétrique et tombera dans la /// plage 0 (correspondance parfaite) à 1 (pas de correspondance). /// < / Résumé > /// < param Nom = "astring1" > première chaîne < / param  

/// < param Nom = "ASTRING2" > Deuxième chaîne < / param > /// < retourne >

"0fd17c2f04">

/ retourne

Public statique double distance (string astring1, string astring2) {retour 1.0 - proximité (astring1, astring2); } /// < Résumé > /// retourne la distance Jaro-Winkler entre les chaînes spécifiées ///. La distance est symétrique et tombera dans la /// plage 0 (pas de correspondance) à 1 (correspondance parfaite). /// < / Résumé > /// < param Nom = "astring1" > première chaîne < / param

/// < param Nom = "ASTRING2" > Deuxième chaîne < / param > /// < retourne >

"0fd17c2f04">

/ retourne

Double proximité publique statique (string astring1, string astring2) {int llen1 = astring1.Longueur; int llen2 = astring2.Longueur; Si (llen1 == 0) retourner llen2 == 0? 1.0: 0.0; int lSearchRange = math.max (0, math.max (llen1, llen2) / 2 - 1); // par défaut initialisé sur False Bool LMatched1 = Nouveau Bool; bool lmatched2 = nouveau bool; int lnumcommon = 0; pour (int i = 0; i < llen1; ++ i) {int LSTART = math.max (0, i-lsearchrange); int Lend = math.min (i + lSearchRange + 1, llen2); pour (int j = lstart; j < prêter; ++ j) {si (LMatched2) continue; Si (Astring1! = Astring2) Continuer; lmatched1 = true; lmatched2 = vrai; ++ lnumcommon; Pause; }} si (lnumcommon == 0) renvoie 0,0; int lnumhalftransposed = 0; int k = 0; pour (int i = 0; i < llen1; ++ i) {if (! LMatched1) Continuer; tandis que (! LMatched2) ++ k; Si (astring1! = astring2) ++ lnumhalftransposé; ++ k; } // system.diagnostiques.debug.writeline ("numhalftransposed =" + numhalftransposed); int LnumTransposed = lnumhalftransposed / 2; // system.diagnostics.debug.writeline ("numcommon =" + numcommon + "NumTransposed =" + numtransposed); double lnumcommond = lnumcommon; Double LPED = (LNUMCOMMOND / LLEN1 + LNUMCOMMOND / LLEN2 + (LNUMCONMON - LNUMTRANSPOSED) / LNUMCOMMOND) /3.0; Si (LPED < = MOWERMEHRESHOLD) Retournez LPED; int Lmax = math.min (mnumchars, math.min (astring1.length, astring2.length)); int Lpos = 0; tandis que (Lpos < lmax &

& astring1 == astring2) ++ Lpos; Si (Lpos == 0) Retournez LPED; Retour LPED + 0,1 * LPOS * (1.0 - LPED); }}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *