Rechercher : dans
Par :

[ Algorithme ] Comparaison de 2 mots

Dernière réponse le 17 sep 2008 à 11:52:57 MychaL, le 30 mar 2007 à 12:18:56 
 Signaler ce message aux modérateurs

Bonjour,

je voudrais faire une comparaison entre 2 mots et calculer la pertinence du résultat (ie dire que le mot que je compare correspond pour à 90% à celui de référence).

Est ce que qqun a t il deja fait cela ?

Est ce que qqun a un lien ou un algo à me filer qui pourrait m'aider ?

Merci

Configuration: Windows XP
Firefox 2.0.0.3

1

Reivax962, le 30 mar 2007 à 13:01:58
  • +2

Bonjour,

Que veux tu dire par "comparer deux mots" ? Une comparaison, c'est lié à une relation d'ordre, et cela signifie : mot1 est plus grand / plus petit que mot2. En général, on utilise l'ordre alphabétique, avec quelques variante d'un pays à l'autre. Il n'y a pas vraiment d'algorithme derrière...

Par contre i tu parles d'un calcul de distance entre deux mots, je t'invite à te renseigner sur la distance de Levenshtein (DL), par exemple ici :
http://perso.orange.fr/jean-paul.davalan/lang/algo/lev/index.html

Xavier

Répondre à Reivax962

2

Reivax962, le 30 mar 2007 à 13:04:09
  • +1

(Tu peux également te renseigner sur la distance de Hamming)

Répondre à Reivax962

3

MychaL, le 30 mar 2007 à 14:28:46

Merci pour les infos.

Quand je parle de comparer deux mots, ce n est pas dans un but de lexique mais d en determiner une similude tres proche a qq caracteres.

Par ex :

le mot "MATERIEL" comme référence
les mots "MAT3RI3L" , "|MAT3RIEL" et dire en % la pertinence de ressemblance entre ces mots avec le mots de reférence.

Répondre à MychaL

4

tuxidermiste, le 30 mar 2007 à 21:27:10

En gros tu voudrai que les caractères se ressemblant (tel que E et 3) soit prit en compte?????? o.O >_<

bonne chance à moins de dresser toi-même un tableau des caractère similaires :D

Répondre à tuxidermiste

5

best !!, le 29 fév 2008 à 22:11:21

Vraiment exusez moi je vx vraiment t'aider mais je ne sais pas ! alors bye !! et bonne chance !

Répondre à best !!

6

gbinforme, le 29 fév 2008 à 23:18:04
  • +1

Bonjour

Si j'ai compris ce que tu cherches à faire, je te propose cette fonction à inclure dans un module VBA

Public Function compar(m1 As String, m2 As String, Optional k As Integer = 0) As Double
Dim i As Integer
Dim j As Integer
Dim r As Integer
Application.Volatile
j = Len(m1): r = 0
If Len(m2) > j Then j = Len(m2)
For i = 1 To j
    If k = 1 Then
        If Mid(m1, i, 1) = Mid(m2, i, 1) Then r = r + 1
    Else
        If LCase(Mid(m1, i, 1)) = LCase(Mid(m2, i, 1)) Then r = r + 1
    End If
Next i
compar = r / j
End Function


Pour l'utiliser tu fais comme pour les fonctions excel :
=compar(A1;A2) -> cela va te donner le pourcentage d'identité des deux cellules.

Si tu veux tenir compte de la casse des textes comparés tu mets :
=compar(A1;A2;1)

Il faut mettre la cellule en format pourcentage, sinon le nombre décimal est affiché.
Toujours zen

Répondre à gbinforme

7

popnikos, le 2 mai 2008 à 23:21:39
  • +1

Il y a l'algo de Jaro-Winkler qui est pertinent car te rapporte une valeur entre 0 et 1

Répondre à popnikos

8

Proteus, le 17 sep 2008 à 10:39:11

Bonjour,

GBInforme ta fonction de comparaison est pas mal, mais le problème reste le même je pense. Si on part de l'hypothèse que ce sont les premiers caractères qui ne correspondent pas aux caractères du second mot ton résultat sera de 0 alors qu'il s'agit peut être du même mot.

Tu devrai peut être refaire la fonction en incluant un système de notation. Pour qu'a chaque fois que des caractères sont retrouvé dans le même sens que le mot d'origine les points affecté soit suffisamment important pour faire que la comparaison donne un résultat correcte.

Bon Courage.

Répondre à Proteus

9

 eriiic, le 17 sep 2008 à 11:52:57
  • +1

Bonjour,

Le lien donné au post 1 est très interessant.
En prolongeant un peu la recherche on trouve http://en.wikibooks.org/wiki/Algorithm_implementation/String­s/Levenshtein_distance
eric

Répondre à eriiic
Collection CommentÇaMarche.net