28.09.2013, 06:22
(
Последний раз редактировалось ipsBruno; 13.10.2013 в 09:56.
)
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
similar_text.inc
Exemplos
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
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
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