[Include] similar_text.inc
#1

Introduзгo

Essa include calcula a similaridade de duas strings e retorna a porcentagem delas (em float) ou seja, calcula quгo parecida elas sгo.

Й idкntica a funзгo similar_text do PHP. Sу que nesse caso, eu usei o algorнtimo de Levenshtein.




Cуdigo

pawn Код:
/*
 * similar_text
 *
 * © Copyright 2010-2013, Bruno da Silva
 * Funзгo para checar proximidade de textos
 */

 
#if defined _similart_included
  #endinput
#endif
#define _similart_included

#if !defined MAX_STRING
    #define MAX_STRING 0xff
#endif

stock function_r[MAX_STRING][MAX_STRING];
stock ff_calcule[MAX_STRING][MAX_STRING];
   
   
stock Float:similar_text(texto1[], texto2[]) {

    static len1, len2, x, y ;

    len1 = strlen(texto1);
    len2 = strlen(texto2);

    ff_calcule = function_r ;


    for (x = 1; x <= len2; x++) {
        ff_calcule[x][0] = ff_calcule[x-1][0] + 1;
    }

    for(y = 1; y <= len1; y++) {
        ff_calcule[0][y] = ff_calcule[0][y-1] + 1;
    }

    for (x = 1; x <= len2; x++) {
        for (y = 1; y <= len1; y++) {
            ff_calcule[x][y] = MIN3D(ff_calcule[x-1][y] + 1,ff_calcule[x][y-1] + 1,ff_calcule[x-1][y-1] + _: !(texto1[y-1] == texto2[x-1]));
        }
    }

    return (1.0 - (float(ff_calcule[len2][len1]) / float(max(len1,len2)))) * 100.0;
}

stock MIN3D(v0,v1,v2) {
    return v0 < v1 ? v0 < v2 ? v0 : v2 : v1 < v2 ? v1 : v2;
}

// atualizado 13/10
similar_text.inc




Exemplos

PHP код:
    printf("Bruno e Breno sгo nomes %f%% parecidos"similar_text("Bruno""Breno")); 
PHP код:
    printf("Carlos e Joгo sгo nomes %f%% parecidos"similar_text("Carlos""Joгo")); 

Pra que?
Й уtimo para checar se o usuбrio tentou falar palavrгo ou nгo, dб atй pra fazer um sistema de buscas com similaridade de texto ou comparar jogadores com nomes parecidos. Enfim, dб pra fazer muita coisa.

Inclusive os corretores da ****** uzam isto: Vocк quis dizer: Usam Sabe?


Bom uso!


Abraзos
Reply


Messages In This Thread
similar_text.inc - by ipsBruno - 28.09.2013, 06:22
Re: similar_text.inc - by zSuYaNw - 28.09.2013, 06:31
Re: similar_text.inc - by ipsBruno - 28.09.2013, 06:36
Re: similar_text.inc - by WLSF - 28.09.2013, 11:58
Re: similar_text.inc - by Juniiro3 - 28.09.2013, 12:25
Re: similar_text.inc - by smiiir - 28.09.2013, 13:04
Re: similar_text.inc - by Falcon. - 28.09.2013, 13:16
Re: similar_text.inc - by Maklister - 28.09.2013, 18:48
Re: similar_text.inc - by Schocc - 28.09.2013, 19:06
Re: similar_text.inc - by arakuta - 28.09.2013, 19:14
Re: similar_text.inc - by PT - 28.09.2013, 22:49
Re: similar_text.inc - by Gii - 28.09.2013, 22:53
Re: similar_text.inc - by arakuta - 28.09.2013, 23:04
Re: similar_text.inc - by ipsBruno - 29.09.2013, 02:51
Re: similar_text.inc - by Kmatsu - 29.09.2013, 13:10
Re: similar_text.inc - by zSuYaNw - 30.09.2013, 21:43
Re: similar_text.inc - by RebeloX - 30.09.2013, 22:37
Respuesta: similar_text.inc - by DartakousLien - 01.10.2013, 14:10
Re: similar_text.inc - by ipsBruno - 01.10.2013, 16:18
Re : similar_text.inc - by ipsBruno - 13.10.2013, 09:57

Forum Jump:


Users browsing this thread: 9 Guest(s)