Aller au contenu

comparer deux chaines en pourcentage


crouttedepain

Sujets conseillés

salut à tous,

voilà il me semble que l'on m'a parlé d'une fonction qui compare deux chaines de caractères et donne le taux de différence en pourcentage mais le problème c'est que je ne m'en souviens plus et mon copain Google ne m'aide pas non plus.

Quelqu'un a déjà utilisé une tel fonction ?

Lien vers le commentaire
Partager sur d’autres sites

ha oui en effet ça a l'air assez puissant cette fonction, j'ai essayé l'exemple donner sur la page de ton lien; pour chaque mot ça donne un indice différents mais je ne sais pas vraiment a quoi cela correspond; admettons par exemple :

$lev = levenshtein($leMotEntré, $leMotAcomparé);

est ce que une operation du style suffirai pour une représentation du pourcentage ? :

$pourc = 100 - $lev;

Lien vers le commentaire
Partager sur d’autres sites

bin je sais faire un pourcentage si je sais si c'est des carotte ou des choux, mais là pour moi cette indice que me donne cette fonction est très énigmatique pour moi?

si j'ai bien compris

si l'indice est 0 c'est égale à 100% de ressemblance

0 = 100%

alors j'ai eu le reflex de me dire que pour refléter ce chiffre en pourcentage était de le soustraire à 100 (a noter que même si ce n'est pas exacte ça garde le même ordre )

Lien vers le commentaire
Partager sur d’autres sites

Pourtant la première ligne de la doc me semble claire :

La distance Levenshtein est définie comme le nombre minimal  de caractères qu'il faut remplacer, insérer ou modifier pour transformer la chaîne str1 en str2 .

Bref, ça retourne juste le nombre de caractères "différents"...

Lien vers le commentaire
Partager sur d’autres sites

Lis un peu la doc qu'on te propose... La distance Levenshtein est le nombre d'opérations qu'il faut effectuer pour passer d'un mot à l'autre. C'est pour ça que 0 = les mots sont identiques (il n'y a aucune opération à effectuer). Dans le pire des cas, je pense que la distance max va être la longueur de la plus grande des deux chaînes (on remplace toutes les lettres de la chaîne la plus courte, et on ajoute toutes les lettres manquantes).

Le reste est trivial. D'ailleurs il y a même un exemple dans la page en question qui fait tout ça...

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

oui mais d'accord,je juste dit que je ne savais pas calculer un pourcentage d'une distance Levenshtein mais j'ai pas dit que je ne savais pas lire ;) , j'ai même pris le temps de tester l'exemple de la doc, donc j'avais déjà un peu compris le principe;

Je disais de l'indice qu'il était "énigmatique", dans le sens où on ne connait pas le code source de cette fonction et donc on ne connait pas le mécanisme exacte de l'algorithme ainsi que les paramètres en priorité.

j'ai quand même la trouvé la solution pour transformer cette distance en pourcentage, pour les interressés :

$pourcentage = ( 1-levenshtein($str1, $str2)/max(strlen($str1), strlen($str2))) * 100;

tu peux très facilement convertir le résultat de levenshtein() en pourcentage.

je sais pas pour vous mais pour cette formule tant que je n'avais pas compris que la distance Levenshtein maximum était la taille de la chaine la plus grande, je l'aurai pas trouvé tout seul ...désolé d'avoir baissé le niveau du forum ;)

en tout cas merci de vos réponses

En espérant quand même que mon incompétence incultivée d'ignare illettré servira à bien d'autre :thumbup:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...