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

Langage PHP Discussion :

calculer le poids d'un mot dans une chaine de caractères en php


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Points : 43
    Points
    43
    Par défaut calculer le poids d'un mot dans une chaine de caractères en php
    Bonjour,
    j'ai une question :
    j'ai une chaine de caractére et :
    1- je calcule le nomres d'occurence de chaque mot.
    2- et je calcule le nombre de mots dans la chaine de caractére.

    maintenant je cherche comment calculer le poids de chaque mot c-à-d <gras>poids d'un mot = le nombre d'occurence de mot / le nombre totale de mots dans la chaine.</gras>

    <gras>exmple : </gras>
    chaine : "algerie algerie annonces algerie classifids annonce annonces algerie annonces algerie "
    le mot : algerie, le nombre d'occurence : 4
    le nombre totale de mot dans la chaine : 10
    le poids = 4/10 = 0.4

    <gras>le code : </gras>

    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
     
    <?php
     
    $champs1='algerie algerie annonces algerie classifids annonce annonces algerie annonces algerie';
    $motsExclus = array("un","une","de","des","le","les","la")
    if( preg_match_all('`\w{2,}`', $champs1, $result) )
    {
    // Remplacement des mots exclus par rien
    $result[0] = preg_replace('`\b(' . implode($motsExclus, '|') . ')\b`i', '', $result[0]);
    // Suppression des éléments vides avec array_filter()
    $result[0] = array_filter($result[0]);
     
    // Tableau des occurences
    $stats = array_count_values($result[0]);
    While (list ($cle,$valeur) = each($stats))
         {
         echo $cle." - ".$valeur."<br />";
              }
    }
    $champs11=implode(" ", $result[0]);
         echo ("$champs11"); print"<br><br>";
     
    //calculer le nombres de mots dans une chaine de caractére N
    $str = str_replace("é", "e", "$champs11");
    $str1=str_replace ("è","e","$str");
    echo ("$str1"); print "<br><br>";
    $N=str_word_count($str1); //compte le nombre de mots dans la chaine
    echo ("$N"); // affiche le résultat
    ?>
    svp a ce qu'il ya qlq peut me répondre.
    merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Précise tu as des erreurs ? si oui ou ....

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pour connaitre le nb d'occurence dans une chaine tu as la fonction : substr_count (http://fr3.php.net/substr_count)

    Pour connaitre le nombre de mot total tu as la focntion : str_word_count (http://fr3.php.net/str_word_count)

    Il ne te reste plus qu'à faire une division

  4. #4
    Membre du Club Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    "boo64" merci,je trouve pâs ds erreurs dans mon code.
    mais ma question est j'arrive pas a calculer le poids de chaque mot.
    merci d'avance.

    "rbaatouc" merci, je'ai fait ça mais j'arrive pas a faire la division pour chaque mot.
    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voila ce que je ferais moi (sans trop réfléchir), il faudrait ajouter les mots exclu avec un !in_array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $champs1 = 'algerie algerie annonces algerie classifids annonce annonces algerie annonces algerie';
    $NbTotal = str_word_count($champs1);
    $TabChampsUnique = array_unique(explode(" ", $champs1));
    if($NbTotal > 0)
    {
    	foreach($TabChampsUnique as $Index => $Value)
    	{
    		echo '<br>'.$Value.' = '.substr_count($champs1,$Value)/$NbTotal;
    	}
    }

  6. #6
    Membre du Club Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    merci d'avance.

  7. #7
    Membre du Club Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    merci beaucoup pour votre réponces mais j'ai une question :
    si je calcule le piods de mot "annonce" est egale a : 0.4 c-à-d elle compte que le mot "annonce" ce touve dans la chaine 4 fois hors que le mot "annonce" ce trouve 1 seule fois normalement le poids de "annonce" est 0.1. et le poids de mot "annonces" est agale a : 0.3
    donc svp a ce que vous pouver me répondre.
    merci d'avance.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 17h40
  2. Réponses: 6
    Dernier message: 13/12/2010, 00h09
  3. recherche de mots dans une chaine de caractères
    Par jeanfrancois dans le forum Langage
    Réponses: 5
    Dernier message: 10/02/2006, 11h47

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