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
14
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
9
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 :)