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

Algorithmes et structures de données Discussion :

Calculer un pourcentage de modification d'un texte


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2003
    Messages : 121
    Points : 95
    Points
    95
    Par défaut Calculer un pourcentage de modification d'un texte
    Bonjour,

    dans le cadre de l'utilisation d'un wiki, on me demande de calculer pour chaque page sur une période donnée, un pourcentage de modification du contenu de cette page.

    Le problème est très simple si on se base sur le "poids" de la page en nombre de lettres ou en terme de mots mais cette solution ne me convient pas car n'a pas de grande valeur :
    - si j'ajoute 2 phrases à une page qui contenait 3/4 mots, le pourcentage de modification va être extrêmement élevé pour rien.
    - si je remplace une ou 2 phrases dans un texte mais que cela change tout le sens du document, le pourcentage de modification du documentation sera quasi-nul alors que le document aura été modifié en profondeur.

    donc la question est la suivante : y aurait-il une méthode pour calculer un pourcentage de modification ou un indice ou peut importe le nom qu'on lui donne qui aurait un sens et qui permettrait aux personnes qui vont administrer ce wiki de se dire "là il y a une modification profonde" ou "là, on a rajouté 3 paragraphes mais le document était quasi vide auparavant".

    Par avance merci pour vos remarques ou encore mieux, vos solutions

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    si je remplace une ou 2 phrases dans un texte mais que cela change tout le sens du document
    Ceci suppose un accès à la sémantique des textes, donc une lecture intelligente. On en est encore loin. La plupart des traducteurs automatiques reposent encore presque uniquement sur des règles syntaxiques, c'est pourquoi les traductions sont si mauvaises.
    On sait faire une lecture intelligente dans un domaine très restreint d'expertise. Bref, un robot logiciel peut 'comprendre' un article technique dans un domaine technologique restreint et très pointu, mais ne peut pas conduire une conversation "à bâtons rompus" avec un quidam.

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    On pourrait simplement extraire la liste des mots utilisés dans chacune des 2 versions et comparer le nombre de mots de l'intersection des 2 listes avec le nombre de mots de la réunion.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 141
    Points : 414
    Points
    414
    Par défaut Pourcentage de modification entre deux textes similaires en PHP
    Citation Envoyé par r-zo Voir le message
    y aurait-il une méthode pour calculer un pourcentage de modification
    r-zo, en PHP il existe la fonction similar_text() qui évalue le pourcentage de similarité entre deux textes ci-dessous appliqué au filtre de Tweets quasiment similaires à plus de 75%.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php // no direct access
    defined('_JEXEC') or die('Restricted access');
    define("PERCENT_COMMON_WORDS", 75.0);
    define("CAUSE_NEW_TWEET", 0);
    define("CAUSE_RETWEET_PERCENT", 2);
    function CheckReTweet($strMsg, $strUrlTweet, &$arrTweet, &$arrText)
    {   // True if at least PERCENT_COMMON_WORDS of similarity between tweets
        if (is_array($arrText))
        {
            $strMsgNew = Tokenization($strMsg);
            foreach ($arrText as $strUrlOld => $strMsgOld)
            {
                $strMsgCmp = Tokenization($strMsgOld);
                $nbrMatchChar = similar_text($strMsgNew, $strMsgCmp, $percent);
                if ($percent >= PERCENT_COMMON_WORDS)
                {        
                    unset($arrTweet[$strUrlOld]); // Remove the Re-Tweet key / value
                    unset($arrText[$strUrlOld]);
                    return CAUSE_RETWEET_PERCENT;
                }
            }
        }
        return CAUSE_NEW_TWEET;    
    } // end CheckReTweet
     
    function Tokenization($strTxt)
    {   // Remove punctuation and duplicated blanks, trim string, force lower case
     
        $strTok = $strTxt;
        $strTok = str_replace("à", "a", $strTok);
        $strTok = str_replace("â", "a", $strTok);
        $strTok = str_replace("é", "e", $strTok);
        $strTok = str_replace("è", "e", $strTok);
        $strTok = str_replace("ê", "e", $strTok);
        $strTok = str_replace("î", "i", $strTok);
        $strTok = str_replace("ô", "o", $strTok);
        $strTok = str_replace("ù", "u", $strTok);
        $strTok = str_replace(".", " ", $strTok);
        $strTok = str_replace(",", " ", $strTok);
        $strTok = str_replace(";", " ", $strTok);
        $strTok = str_replace(":", " ", $strTok);
        $strTok = str_replace("!", " ", $strTok);
        $strTok = str_replace("?", " ", $strTok);
        $strTok = str_replace('"', " ", $strTok);
        $strTok = preg_replace("/\s+/", " ", $strTok);
        $strTok = trim($strTok);
        $strTok = strtolower($strTok); // strtolower corrupts accents. So convert them before!
        return $strTok;
     
    } // end Tokenization
    Voir également la similarité par comparaison de mots, l'algorithme de SimHash.
    ___________

    Si la discussion est résolue, vous pouvez cliquer sur le bouton

    En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.

  5. #5
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Bill dit : Steve est un âne.
    Bill, dit Steve, est un âne.
    % ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    et de plus

    Citation Envoyé par Nebulix Voir le message
    Bill, dit Steve, est un âne.
    peut vouloir dire "Bill, appelé Steve, est un âne"

  7. #7
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    Au sens figuré ou au sens propre ?

  8. #8
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ... peut vouloir dire "Bill, appelé Steve, est un âne"

    Il y a très longtemps, un logiciel de traduction avait traduit :
    Le pilote ferme la porte
    par quelque chose comme :
    Le pilote décidé la soulève

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    J'aborderai le problème un peut comme la DTW (Dynamic Time Wraping) en reconnaissance de la parole qui est utilisé pour mesurer la 'distance' (plutôt indexe de ressemblance) entre un échantillon et une référence.
    voir par exemple
    http://tcts.fpms.ac.be/cours/1005-07...oux/index.html
    http://www.ece.auckland.ac.nz/~wabd0...NCON_final.pdf

    Ici les pentes min max issues du point de départ tout comme les 2 droites allant au point final définissent le décalage max de mot toléré. La fonction de corrélation pourrait peut-être être même limitée à [0,1] suivant si le même mot est trouvé ou non.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    Réponses: 8
    Dernier message: 21/10/2005, 13h12
  2. calcul de pourcentage
    Par PAUL87 dans le forum Access
    Réponses: 12
    Dernier message: 20/09/2005, 19h50
  3. Modification zone de texte
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/09/2005, 09h55
  4. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49
  5. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 16h43

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