php+mySQL: analyse keyword density


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

php+mySQL: analyse keyword density

Message le Mer Oct 03, 2007 9:59

Hello,

Comme il y'a certaines choses (et non des moindres) que je ne sais pas faire en php, et que je suis loin d'être le dieu de la query, j'aimerais solliciter votre aide pour un petit projet/test.


Imaginons un contenu texte (un article, une news) contenu dans une variable $content.

Imaginons une table de DB, dont une colonne serait [expressions].

J'aimerais, un peu à la manière dont le fait Outiref extraire dans 3 tableaux:

- les 10 expressions de 3 mots les plus courantes dans $content qui ont une occurence dans [expressions].
- les 10 expressions de 2 mots les plus courantes dans $content qui ont une occurence dans [expressions]
- les 10 mots les plus courants dans $content qui ont une occurence dans [expressions]

...mais je sèche.

Si quelqu'un peut m'aider, ça ensoleillerait ma journée :D


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 913
Inscription: 5 Aoû 2003

Message le Mer Oct 03, 2007 11:24

salut,
j'ai exactement développé cela y a quelques années !
Je sais ca t'aide pas pour le moment, mais je vais essayer de retrouver le script :)


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

Message le Mer Oct 03, 2007 11:53

Si tu retrouves ça, ce serait génial ;)


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 913
Inscription: 5 Aoû 2003

Message le Mer Oct 03, 2007 11:54

voici mon script adapté à ton besoin, ca devrait faire ton bonheur :)
Code: Tout sélectionner
   function getMotClef( $content, $limit = 10 ) {

      $tab_mots = array();
      $tab_occur = array();
      $mot = '';
      
      $content = html_entity_decode( strip_tags($content) );

      for( $i=0; $i<strlen($content); $i++ ) {

         if( strpos( "/[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZéëèàêâùïüûçôîÂÈÀÛÊÏ]/", $content[$i] ) === false ) {

            if( strlen( $mot ) > 4 ) {

               array_unshift( $tab_mots, strtolower(trim($mot)) );
               if( !empty($tab_mots[2]) ) {
                  @$tab_occur['3'][ $tab_mots[2]." ".$tab_mots[1]." ".$tab_mots[0]]++;
               }
               if( !empty($tab_mots[1]) ) {
                  @$tab_occur['2'][ $tab_mots[1]." ".$tab_mots[0]]++;
               }
               if( !empty($tab_mots[0]) ) {
                  @$tab_occur['1'][ $tab_mots[0]]++;
               }
            }
            if( $content[$i] == '.' || $content[$i] == '\n') {
               $tab_mots = array();
            }
            $mot = '';
         }
         else {
            $mot .= $content[$i];
         }
      }
      arsort( $tab_occur['1'] );
      arsort( $tab_occur['2'] );
      arsort( $tab_occur['3'] );

      $z = 0;
      foreach( $tab_occur['1'] as $key => $value )
         if( $z++ < $limit )
            $return['1'][$key] = $value;
      
      $z = 0;
      foreach( $tab_occur['2'] as $key => $value )
         if( $z++ < $limit )
            $return['2'][$key] = $value;
            
      $z = 0;
      foreach( $tab_occur['3'] as $key => $value )
         if( $z++ < $limit )
            $return['3'][$key] = $value;
            
      return $return;
   }

caviar
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 321
Inscription: 5 Sep 2006

Message le Mer Oct 03, 2007 13:08

salut
j'ai mis un outil en ligne sur mon site qui fait à peu près ça ...voire un peu plus

http://22h22.fr
rubrique référencement ;) ;)
@+


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités