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 :

traitement d'un texte en enlevant un mot


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut traitement d'un texte en enlevant un mot
    dans ma quete d'ameliorer le moteur de recherche que je suis entrain de faire, je suis amené à stocker un texte qui contiendra les mots clé importants sans les articles "le,la,un,une, ...", est ce qu'il existe une fonction qui le fait ou est-ce que je dois la programmer moi meme?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tout ce qui traite du français est déjà peu probable en PHP.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    voici pour l'instant ce que j'ai programmé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function enleveSuperflux($text)
    {
    $original= array(
                         "un ";
                         "le ";
                         "une ";
                         "la ";
                         );
     
    $new_text = str_replace($original,"",$text)
    return $new_text;
    }
    ca marche pour ces mots là, il existerai pas un dictionnaire de mots comme ca?
    sinon j'envisage de faire une analyse de textes longs pris au hasard qui prend un texte en entrée et qui me renvoie un tableau avec tous les mots avec le nombre de recurrences , et à ce moment là je prendrais des mots comme ca , parce qu'on essayant de les deviner on perd du temps.
    et si oui quel serait cette fonction .
    merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    je reviens vers vous car str_replace() n'est pas efficace , j'aimerai utiliser preg_replace(), mais je vais devenir fou avec les expressions régulieres, je veux pour les mots que je décide de supprimer qu'ils soient supprimés en milieu de phrase ou en debut et fin et aussi en cas de retour à la ligne, le texte que je traite ne contient pas de ponctuation ca été fait avant.
    merci

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    un truc dans ce genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = preg_replace('/\b(un|le|une|la)\b/i', '', $str);

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    ca a marché merci, mais il reste les caractères avec accent comme "à", "là" meme si je les inclus dans ma regex (a|la|à|là), est-ce que c'est normal ou bien il faut rajouté des métacaractères spécifiques?

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Tu travailles sûrement en utf-8...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $reg = '/\b(un|une|à|la|le)\b\s+/ui';
    $str = preg_replace($reg, '', $str);

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    j'ai droit à cette erreure:
    Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 11 in /home/Sites/cms-utf-2.2.6/www/libs/class/StringProcessor.class.php on line 61

    c'est la ligne qui contient mon preg_replace() en question et j'ai cette erreur quand je rajoute les caractere "à", dès que je les enleve j'ai plus ce probleme.

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Alors il y a conflit : ton fichier de données est en utf8 et ton script est en iso-8859-1 ou le contraire.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 36
    Points
    36
    Par défaut
    mon fichier de données est stocké dans ma BD, c'est du code html avec toutes les balises et tous les &eAcute ...
    dans ma fonction qui enleve les articles non désiré , je veux enlever "on" par exemple, et ce que je ne comprends pas c'est pourquoi le "on" est enlevé dès lors qu'il est précédé par un caractère spécial par exemple , "leçon" => "leç" du coup il y'aurai perte d'information au niveau de l'indexation que je souhaite mettre en place (les données indexées stockés aussi dans la BD).
    le pire c'est qu'en utilisant un html_entity_decode($montexte), il stock "lecon" et quand je lui fais le traitement de ma fonction(html_entity_decode($montexte)) il me stocke "lec" alor qu'il n'y a plus de caracteres speciaux , (le mot "baton" par exemple reste intact et le "on" ne s'enleve pas)
    sinon comment verifier que c'est du utf ou iso , la cms sur laquelle je bosse est en utf normalement, ou est-ce qu'il pourrai y avoir conflit? je suis embrouillé

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

Discussions similaires

  1. [VB.NET] - Traitement de fichier texte
    Par titoff60 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/01/2007, 08h27
  2. Traitement de données texte
    Par yabbiyou dans le forum MATLAB
    Réponses: 6
    Dernier message: 13/01/2007, 22h04
  3. [VB.NET] lecture fichier texte et détection des mots
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 01/06/2006, 09h12
  4. Comment enlever un mot d'une chaine?
    Par benjiprog dans le forum C
    Réponses: 8
    Dernier message: 21/04/2006, 17h00
  5. [C++] Textbox et traitement sur le texte
    Par poporiding dans le forum Framework .NET
    Réponses: 8
    Dernier message: 28/12/2005, 19h10

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