begin process at 2012 05 29 01:59:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

extraire des mots clés d'un texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

extraire des mots clés d'un texte

samedi 20 mars 2010 à 21:33:48 | extraire des mots clés d'un texte

pifethercule

Bonjour,

j'essaye d'extraire des mots clés de textes... mes mots clés sont dans une variable "$keywords" tous séparés par un pipe "|", pour faire des OU dans ma regex

les mots clés que je "match", vont normalement dans une array "$resultat", je veux récupérer tous mes mots présent dans le texte 0 ou 1 fois

donc pour le moment ce qui s'approche le plus de ce que je veux faire donne ça
Code PHP :
function motsCles($keywords, $txt){
$pattern = "#([".$keywords."]+)#i";

if(preg_match($pattern, $txt, $resultat)){
$rMotsCles ="";
for ($i=1; $i<count($resultat) && $i<10; $i++){
    $rMotsCles .= "<mot_cle_".$i.">".$resultat[$i]."</mot_cle_".$i.">";
}
return $rMotsCles ;
}
}


donc la ça reconnait bien mes mot clé, mais je ne récupère que le premier présent

l'erreur vient de ma regex ou de la syntaxe du preg_match ? ou d'ailleurs ?

merci d'avance
dimanche 21 mars 2010 à 15:45:15 | Re : extraire des mots clés d'un texte

inwebo

Une remarque en passant, ne mets pas le count($resultat) dans ta boucle for à chaque passage dans cette boucle, le résultat est recalculé, déclare le avant.

dimanche 21 mars 2010 à 21:36:28 | Re : extraire des mots clés d'un texte

pifethercule

merci, j'ai bien besoin d'aide pour l'optimisation

pour ma fonction ça marche presque comme je veux, il suffit de bien lire la doc pcre...

Code PHP :
function motsCles($keywords, $txt){
$pattern = "#(".$keywords.")+?#imU";

if(preg_match_all($pattern, $txt, $resultat)){
$rMotsCles ="";
$lResultat = count($resultat[1]);//nombre de resultats
for ($i=0; $i < $lResultat && $i<10; $i++){
    $rMotsCles .= "<mot_cle_".($i+1)."><![CDATA[".$resultat[1][$i]."]]></mot_cle_".($i+1).">";
}
return $rMotsCles ;
}
}


donc la ça me sort bien mes mots clés, petit bémol, si il est présent plusieurs fois, ça me le sort autant de fois

mes mots dans ma variable $keywords sont sous cette forme (mot1)|(mot2)|(mot3)

une idée ???
lundi 22 mars 2010 à 09:22:36 | Re : extraire des mots clés d'un texte

inwebo

Un coup de explode() sur ta variable $keywords, puis hop array_unique() ?
Cela devrait faire l'affaire, non ?
lundi 22 mars 2010 à 11:11:05 | Re : extraire des mots clés d'un texte

pifethercule

hum...

ma variable $keyword n'a pas de doublons

c'est dans mes résultats que j'en ai, mais la je ne peux pas faire array_unique sur un tableau multidimensionnel, en tout cas si je le fais, ça me sort ensuite des undefined index...

lundi 22 mars 2010 à 12:33:10 | Re : extraire des mots clés d'un texte

pifethercule

je vais donner un exemple plus parlant

dans ma variable $keywords, j'ai par exemple ((rack)|(rack à chandelles))

et dans mon texte "Rack à chandelles - Rack à chandelles fixes"

et je voudrais que ça me sorte

$resultat[1][0]=>rack
$resultat [1][1]=>rack à chandelles

je teste mes expressions sur ce site [ Lien ]

et en faisant ça
((?:rack)&|(?:rack à chandelles))+?

ça me sort
Résultat : vrai
Capture 1 : Rack à chandelles
ce qui se rapproche assez du résultat voulu

mais en interne chez moi ça ne passe pas du tout...

le &| n'est pas reconnu, et en mettant juste le pipe, ça me sort

$resultat[1][0]=>rack
$resultat [1][1]=>rack

donc le "?:" avant mon mot n'est pas reconnu

lundi 22 mars 2010 à 21:16:30 | Re : extraire des mots clés d'un texte

kohntark

Membre Club
Salut Pifethercule,

J'ai peur de ne pas te suivre ... et je vais donc peut être dire des bêtises.

Pourquoi pas un truc comme ça :
Code PHP :
<?php
function motsCle($kw, $t) {
    $aKw = explode('|',$kw);
    $aa = array();

    foreach ($aKw as $k=>$v) {
        if (false !== strposi($t, $v)) array_push($aa, '<mot_cle_'.($k+1).'><![CDATA['.$v.']]></mot_cle_'.($k+1).'>');
    }

    return implode($aa);
}
?>



Ou alors ça :
Code PHP :
<?php
function mots1($kw, $t) {
    $aKw = explode('|',$kw);
    $aTxt = str_word_count($t, 1);
    $aRes = array_intersect($aKw, $aTxt);
    array_walk($aRes, create_function('&$v,$k', '$v = "<mot_cle_".++$k."><![CDATA[".$v."]]></mot_cle_".$k.">";'));
    return implode($aRes);
}
?>

C'est sans doute plus rapide que l'utilisation d'une regex.
Le mieux serait encore de passer un tableau comme premier argument de la fonction.

Menfin, chacune de ces fonctions (la tienne comprise) retournera des résultats différents.
Reste à voir précisément les détails de ce que tu souhaites faire (le but global, la provenance des données, la taille de ces dernières, ...)

Cordialement,

Kohntark -

lundi 22 mars 2010 à 21:19:16 | Re : extraire des mots clés d'un texte

kohntark

Membre Club
en relisant ... :
<?php
function motsCle($kw, $t) {
$aKw = explode('|',$kw);
$aa = '';

foreach ($aKw as $k=>$v) {
if (false !== strposi($t, $v)) $aa.= '<mot_cle_'.($k+1).'><![CDATA['.$v.']]></mot_cle_'.($k+1).'>';
}

return $aa;
}
?>
... j'avais cru initialement que tu retournais un tableau.


Kohntark -

lundi 22 mars 2010 à 22:42:10 | Re : extraire des mots clés d'un texte

pifethercule

ok merci,

j'ai essayé à ta façon, mais ça ne me ressort qu'un seul mot...

et pour toutes les références de sortie un index de 155 (mon nombre de mots clés), si ça te dit quelque chose ?

de mon coté, ça me sort bien les résultats, mais j'ai des doublons
lundi 22 mars 2010 à 23:47:30 | Re : extraire des mots clés d'un texte

kohntark

Membre Club

Peut on voir comment tu implémentes ça ? Les fonctions que je proposais retournent tous les mots, sauf si j'ai loupé quelque chose.
Tu auras remarqué et corrigé mon erreur de frappe (strposi => stripos)

Peux tu poster ici les variables $keywords et $txt de ton test ?

Cordialement,

Kohntark -


1 2

Cette discussion est classée dans : texte, mots, extraire, clés, keywords


Répondre à ce message

Sujets en rapport avec ce message

Moteur de recherche avec plusieurs mots clés [ par ptiniko ] Bonjour, J'ai un problème concernant une recherche en PHP avec plusieurs mots clés.function search_friends($keywords, $debut, $fin) => $keywords es Extraire les "phrases-clés" d'un texte [ par thunderfear ] Bonjour, J'ai un site de news et j'aimerai répertorier les mot-clés les + cités de chaque news. Pour un mot-clés, je sais comment m'y prendre mais p Extraire les mots d'une chaine [ par footalex12 ] Bonjour,Je souhaite extraire chaque mots d'une phrase ( j'ai des centaines de phrases à extraire )J'ai reussi une petite bidouille "pourrie" mais le Problèmes de REGEX [ par bobino75 ] Bonjour à vous, Je commence à travailler avec les REGEX et je me retrouve avec quelques problèmes. Je fais une recherche dans une base de données av SURLIGNAGE de plusieurs mots clés [ par xTonRx ] bonjour à tous cette focntion bug legerement, elle souligne que le premier mot clé, pk ? SURLIGNAGE en PHP avec plusieurs mots clefs function sur Bibliotheque des mots clés utiliés en langage PHP [ par bonheur123 ] Bonjour,Je vousdrais vous demander de m'indiquer où trouver une bibliotheque ou un repertoire des mots clés utilisés dans le langage de programmation Recherche par mots clés mais en gardant l'ordre spécifié. [ par bobino75 ] Bonjour, Je me cherche une manière de faire une recherche par mots clés mais en gardant l'ordre spécifié. La personne peut faire une recherche pou Trier un tableau à partir d'une valeur calculée [ par mikkro ] Bonjour tout le monde. Je developpe actuellement pour mon boulot, une cartothèque. Tout fonctionne mais il y a quelque chose qui me chagrine, en effet limiter la taille d'un texte [ par joebuz ] Bonjour,pour un moteur de recherche, je cherche à couper le texte environ 5 mots avant et apres le mot recherché.pour rechercher Extraire texte d'une page web ? [ par yatoo ] Bonjour, j'essaie d'extraire du texte du site w  ik i p e d   --ia via un script php, http://rafb.net/p/4tOLcH10.html, mais j'arrive pas a extraire, q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales