DISTANCE DE JARO-WINKLER

John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009 - 29 août 2008 à 01:14
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013 - 2 sept. 2008 à 17:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47794-distance-de-jaro-winkler

blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
2 sept. 2008 à 17:27
Je me demande ce que cela donnerait en utilisant un algorythme de comparaison de bitmap !

Tu dessines la chaine sur un canvas, et tu fais la difference avec un bitma p rempli selon un pourcentage ....???
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009
2 sept. 2008 à 17:06
Ben pour les accents l'algo considère pareil une lettre accentuée qu'une autre lettre.
Pour y remédier on pourrais y incorporer juste avant un algo qui supprime les accents avant comparaison par exemple.

Et au faite pour Loda, si tu veux utiliser cet algo dans ton aglomérateur de news, ne te sert pas du côté Winkler (car sa compte plus le préfixe)
Utilise juste la distance de Jaro.
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
31 août 2008 à 18:24
merci pour la comparaison. Cela éclaire bien ma lanterne....

a+
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
30 août 2008 à 01:23
En fait, comparé à SoundEx, il paraît plus international ton algo !

Les accents, tu gais comment ?

Pour SoundEx, il y a une correspondance spéciale...

http://fr.wikipedia.org/wiki/Soundex
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009
30 août 2008 à 00:20
Alors si on prend pour
A : la distance de Levenstein / Longeur max des 2 mots
B : la distance de Jaro
C : la distance de Jaro-Winkler
cela donne le tableau suivant :

Robert - Rupert
A=66.67%
B=77.78%
C=80%

Robert - Rubin
A=33.33%
B=57.78%
C=62%

Rupert - Rubin
A=33.33%
B=57.78%
C=66.22%

on constate que Robert ressemble plus à Rupert que Rubin (via tout les algos)
après on peut même dire via Jaro-Winkler que Rubin ressemble plus à Rupert qu'à Robert
mais sa c'est surtout parce que Winkler à rajouté le fait que le préfixe est plus important.
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
29 août 2008 à 18:04
Tu as un exemple ?

Pour soundex :

En effectuant cet algorithme, on obtient avec "Robert" et "Rupert" la même chaîne : "R163", tandis que "Rubin" donne "R150".
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
29 août 2008 à 13:56
re,

par curiosité: Tu utilises cet algo pour quel type d'application ? D'après l'article de wikipedia, son usage semble limité à des mots ou des textes très courts. Et même dans ce cas, un couple de mots assez différent semblent retourner des valeurs similaire à un couple de mots assez semblable. (je dis "semble", car je ne pas fait de test)

je m'intéresse au sujet pour un projet d'alogmerateur de news. Afin de détecter les news à double (typiquement avec une virgule en plus ou un titre un peu plus court)

bon week-end,
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
29 août 2008 à 12:27
Bonjour,
Intéressant..
ce code pourrait être utilisé par CS afin d'offrir une possibilité de recherche à l'intérieur de ses propres commentaires sur le forum.
A voir..
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 12:11
John Dogget tu es le spécialiste des blocs begin-end ;)

Cordialement, Bacterius !
PoulpHunter Messages postés 51 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 8 avril 2009
29 août 2008 à 11:36
Pour blueperfect : alors SoundEx est basé sur la phonétique, ici on veux juste savoir le % de ressemblance avec un autre mot (point de vue des lettres) pour la correction orthographique via dictionnaire par exemple.
SoundEx ne prend en compte que la ressemblance de prononciation.

Pour loda : alors sa y est j'ai remplacé les goto par des break, et sinon normalement le '_' ne devais pas poser de problème vu que la string n'étais pas réellement utile...
j'ai remplacé par un tableau de boolean ce qui fait le même boulot, pour moins de mémoire...
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
29 août 2008 à 09:18
salut,

tu peux remplacer les "goto endForX" par un "break", plus propre.

sinon ça m'a l'air intéressant, je regarderais ça plus en détails une autres fois.

aussi, je me demandais dans quelle mesures le strings avec des '_' vont poser problèmes...

a+
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
29 août 2008 à 04:32
C comme un SoundEx ?
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
29 août 2008 à 01:14
Lu.

Quand tu n'as qu'une instruction après un "if", tu peux te passer d'un bloc "begin-end".

Exemple l38 à 46, tu as écrit :
if (i<=l2) then
begin
c2:=t2[i];
end else begin
c2:='';
end; "

Ca se remplace avantageusement par :
if i<=12 then
c2:=t2[i]
else
c2:='';

Le code y gagne beaucoup en lisibilité ...
Sinon, je regarderai dans les details plus tard, ça m'as l'air un poil compliqué pour cette jeure tardive :)
Rejoignez-nous