IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

calcul de similarité/distance/proximité entre deux chaines


Sujet :

Excel

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut calcul de similarité/distance/proximité entre deux chaines
    bonjour,

    je cherche à utiliser une formule du genre

    =Similarite(A1;A2)

    qui me ressortirait un pourcentage de proximité entre deux chaines de caractères (a priori fr ou en)
    leur distance quoi
    je pense un peu à ces fonctions php
    similar_text()
    soundex()
    levenshtein()

    à ma connaissance il n'en existe pas en formules pures par défaut dans excel
    il faut se coder sa propre UDF j'ai l'impression

    est-ce que qqn a une idée d'alternative pour m'éviter de réinventer la roue ?


  2. #2
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    au pire je peux toujours adapter en VBA le pseudo code suivant me dit mon collègue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     int LevenshteinDistance(char s[1..m], char t[1..n])
     {
       // d is a table with m+1 rows and n+1 columns
       declare int d[0..m, 0..n]
     
       for i from 0 to m
         d[i, 0] := i // deletion
       for j from 0 to n
         d[0, j] := j // insertion
     
       for j from 1 to n
       {
         for i from 1 to m
         {
           if s[i] = t[j] then 
             d[i, j] := d[i-1, j-1]
           else
             d[i, j] := minimum
                        (
                          d[i-1, j] + 1,  // deletion
                          d[i, j-1] + 1,  // insertion
                          d[i-1, j-1] + 1 // substitution
                        )
         }
       }
     
       return d[n, m]
     }
    source = http://en.wikipedia.org/wiki/Levenshtein_distance

    qqn a une meilleure idée ?

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

Discussions similaires

  1. calculer la distance moyenne entre deux contours
    Par hamzazerr dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 01/04/2013, 20h13
  2. Similarité entre deux chaines binaires
    Par arkandias dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 30/12/2007, 23h05
  3. espace entre deux chaines de caractères
    Par Pitou5464 dans le forum Access
    Réponses: 2
    Dernier message: 09/08/2006, 12h16
  4. Réponses: 7
    Dernier message: 03/02/2006, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo