[ Algorithme ] Comparaison de 2 mots [Fermé]

Signaler
-
 alilo -
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

9 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 193
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é.
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
3640
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 octobre 2020
972
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
Messages postés
3640
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 octobre 2020
972
(Tu peux également te renseigner sur la distance de Hamming)
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.
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.

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
Il y a l'algo de Jaro-Winkler qui est pertinent car te rapporte une valeur entre 0 et 1
Messages postés
23583
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
6 415
Bonjour,

Le lien donné au post 1 est très interessant.
En prolongeant un peu la recherche on trouve https://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Levenshtein_distance
eric
vraiment exusez moi je vx vraiment t'aider mais je ne sais pas ! alors bye !! et bonne chance !
coment fere les chèma de comparateur de 2 mots a 2 bit