Comment comparer intelligemment deux chaines ?

Didierdu92 Messages postés 6 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 12:37
 Utilisateur anonyme - 28 juin 2012 à 15:52
Bonjour,

Evidemment, les réponses genre "equals", "equalsIgnoreCase" ou "compareTo" ne vont pas m'avancer. En fait je cherche une méthode qui puissent me fournir un pourcentage de similarité entre deux chaines de caractères. Je ne comprends pas bien la signification de l'entier retourné par la méthode de "compareTo" mais ça ne semble pas traduire réellement le niveau de ressemblance entre deux chaines.
Exemple de résultat attendu :

String str1 = "azerty";
String str2 = "qsdfg";

-> "str1" et "str2" sont similaires à 0%

String str1 = "Je suis très bien dans mon lit";
String str2 = "Je suis bien dans mon lit";

-> "str1" et "str2" sont similaires à 85% (calcul approximatif moins précis que celui que devrait renvoyer l'algorithme)

Didier
A voir également:

3 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
27 juin 2012 à 13:08
Salut,

Je crois que l'algorithme le plus simple et répandu pour ça est le calcul de la
Distance de Levenshtein.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
27 juin 2012 à 14:34
Salut,

J'ai codé ca il y a quelques temps, ce n'est pas un algo connu mais ca fonctionnait assez bien : http://www.javafr.com/codes/COMPARER-CHAINES-CARACTERES-AVEC-MARGE-ERREUR_52349.aspx

Tu peux définir un seuil de similarité des deux chaines, je te laisse regarder, poses des questions si tu n'arrives pas à l'utiliser.

Bon courage
0
Utilisateur anonyme
28 juin 2012 à 15:52
De mémoire, a.compareTo(b) te permet de comparer deux chaines a et b dans le sens où la fonction vérifie si a et avant b d'un point de vue alphabétique.
compareTo renvoie un nombre négatif si a et avant b, 0 si a et b sont identiques et un positif si a est après b.

Par exemple, avec String a = "choucroute", a.compareTo("patate") va te donner une valeur négative.


--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
Rejoignez-nous