estándares para dummies (Português)

  estática pública Classe JarowinklerDistance {/ * A modificação Winkler não será aplicada a menos que a correspondência * por cento fosse acima ou acima do cento MweightThreshold * sem a modificação. * O papel de Winkler usou um valor padrão de 0.7 * / privado estático readonly duplo mweighthreshold = 0,7; / * Tamanho do prefixo para ser concidido pela modificação Winkler. * O papel de Winkler usou um valor padrão de 4 * / private static readonly int mnumchars = 4; //// < Resumo > /// retorna a distância de jaro-winkler entre as cadeias especificadas ////. A distância é simétrica e cairá no intervalo /// 0 (correspondência perfeita) a 1 (sem jogo). //// < / resumo > /// < paramente nome = "astring1" > primeiro string < / param > /// < param nome = "adstring2" > second string < / div> / param > /// < retorna > < / retorna > Distância dupla estática pública (String Astring1, String Astring2) {Return 1.0 - Proximidade (Astring1, Astring2); } /// < Resumo > /// retorna a distância de jaro-winkler entre as cordas especificadas ////. A distância é simétrica e cairá no intervalo /// 0 (sem jogo) a 1 (correspondência perfeita). //// < / resumo > /// < paramente nome = "astring1" > primeiro string < / param > /// < param nome = "adstring2" > second string < / div> / param > /// < retorna > < / retorna > Public Static Double Proximity (String Astring1, String Astring2) {Int Llen1 = Astring1.Length; int llen2 = adstring2.length; if (llen1 == 0) retornar llen2 == 0? 1,0: 0,0; int lsearchrange = math.max (0, math.max (llen1, llen2) / 2 - 1); // padrão inicializado para falso bool lmatched1 = novo bool; bool lmatched2 = novo bool; int lnumcommon = 0; para (int i = 0; i < llen1; ++ i) {int lstart = math.max (0, i-lsearchrange); int lend = math.min (i + lsearchrange + 1, llen2); para (int j = lstart; j < emprestar; ++ j) {if (lmatched2) continuar; Se (Astring1! = Astring2) continue; lmatched1 = true; lmatched2 = true; ++ lnumcommon; intervalo; }} se (lnumcommon == 0) retornar 0.0; int lnumhalftransposed = 0; int k = 0; para (int i = 0; i < llen1; ++ i) {if (lmatched1) continuar; enquanto (! lmatched2) ++ k; if (Astring1! = Astring2) ++ lnumhalftranspostos; ++ k; } // System.Diagnostics.Debug.writeline ("numhalftransposed =" + numhalftransposed); int lnumtransposed = lnumhalftransposed / 2; // System.Diagnostics.debug.writeline ("numcommon =" + numcommon + "numtransposed =" + numtransposed); duplo lnumcommond = lnumcommon; duplo lwight = (lnumcommond / llen1 + lnumcommond / llen2 + (lnumcommon - lnumtransposed) / lnumcommond) /3.0; if (lweight < = mweighthreshold) Retorna lwight; int lmax = math.min (mnumchars, matemática.min (astring1.length, astring2.length)); int lpos = 0; while (lpos < lmax &  astring1 == adstring2) ++ lpos; if (lpos == 0) retornar lweight; Devolva lwight + 0.1 * lpos * (1,0 - lwight); }}  

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *