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 Perl Discussion :

Reconnaissance de caractère


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut Reconnaissance de caractère
    Bonjour,

    Je débute juste en perl. J'aimerais savoir comment faire pour reconnaitre des caractère dans un fichier et en afficher sur un graphe le nombre d'occurence. ( pour voir par exemple si certains mots sont plus présents que d'autres)

    De même est il possible de reconnaitre une ligne précise dans un fichier texte et de faire la même analyse (c est à dire savoir combien d'occurence d un mot il y a la ligne commencant par tel mot)

    Merci d'avance pour vos reponses!

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par ecthelion
    (c est à dire savoir combien d'occurence d un mot il y a la ligne commencant par tel mot)
    Je pense qu'il manque quelques mots de liaison dans cette phrase... En tout cas ton post manque de détails pour qu'on puisse t'aider puisqu'on ne sait pas grand chose sur tes fichiers : s'agit-il vraiment de texte pur ? Y a-t-il de la ponctuation, quel est le charset utilisé ?

    Un premier jet pourrait être quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    open my($text_file), '<', $file_name or die "Impossible d'ouvrir $file_name : $!\n";
     
    my %index;
    my $number_of_words = 0;
     
    while( <$text_file> ){
      while( my ($word) = m/\b(\w+)\b/ ){
        $index{$word}++;
        $number_of_words++;
      }
    }
     
    close $text_file;
    Et index contient un dictionnaire avec les fréquences (ou plutôt le nombre d'occurences) des mots du fichier.

    Pour ton autre demande, il nous faudra plus de détails et une explication avec tous les mots de liaisons...

    --
    Jedaï

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    oui en effet, ce n'est pas très clair je vais réexpliquer

    Les fichiers que je dois traiter sont des fichiers textes purs similaires à cela:


    PREFIX: 12.8.184.0/24
    FROM: 194.68.129.179 AS12956
    AS_PATH: 12956 22364 10937
    NEXT_HOP: 194.68.129.179

    Ce sont des "bgp updates" et j'ai des fichiers avec des milliers d'updates comme cela. Chaque update possède une destination (prefix) et un chemin (AS_PATH). Dans l exemple qu il y a ici, cela veux dire que pour aller de l'adresse IP 194.68.129.179 à 12.8.184.0/24, il faut passer par les AS 12956 22364 10937.


    Ce que j'aimerais faire c'est des statistiques a partir de ces updates. Chaque update est différente mais peut avoir des chemins en partie similaires. Je voudrais donc savoir combien d'update il y a dans un fichier, combien de prefix différents il y a, combien d'AS il y a en tout, les quels sont plus utilisés que les autres...

    J espere que c'est plus clair!!!

    Merci beaucoup pour ta réponse ca me donne une très bonne base pour partir!!

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Rebonjour,

    petite question à la con: quelle est la différence entre "open" et "open my" pour la lecture d'un fichier?

    Merci d'avance!

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 53
    Par défaut
    Le premier probleme que j'ai est la reconnaissance de caractère. Comme je débute je commence par des trucs simples et ce que je voulais faire en premier serait de compter le nombre de mots PREFIX dans mon fichier. Pour l'instant je n'y arrive pas et j'ai l impression que le code me compte le nombre de caractères ou de lignes dans le fichier.

    Quand on lit un fichier lignes par lignes peux t on compter le nombre de fois ou PREFIX est présent? Dois je lire mon fichier caractère par caractère?

    Dois je utiliser les expressions régulières?

    Merci d'avance!

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Ok... En effet ton explication initiale était rien moins que claire !!

    petite question à la con: quelle est la différence entre "open" et "open my" pour la lecture d'un fichier?
    open() est une fonction, my() en est une autre, open ouvre un fichier dans la variable qu'on lui fournit en premier argument, my déclare une nouvelle variable à portée locale. Mon "open my($file), '<', 'chemin de fichier';" pourrait donc s'écrire "my $file; open $file, '<', 'chemin de fichier';".
    (Je te conseille de mettre "use strict;" au début de tous tes scripts et de t'astreindre à déclarer tes variables si tu ne le fais pas encore, ça t'évitera beaucoup d'erreurs basiques)

    Quand on lit un fichier lignes par lignes peux t on compter le nombre de fois ou PREFIX est présent? Dois je lire mon fichier caractère par caractère?
    Inutile de lire caractère par caractère (sinon autant utiliser C !! )
    Les regexs sont un concept important pour le traitement de ce genre de question (en Perl comme en d'autres langages) et tu ferais bien de les apprendre de toute façon, bien que pour ta première question on puisse facilement s'en passer.

    Voici un script qui te compte le nombre de "PREFIX" dans ton fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    open my($text_file), '<', $file_name or die "Impossible d'ouvrir $file_name : $!\n";
     
    my $number_of_PREFIX = 0;
     
    while(my $line = <$text_file> ){
      $number_of_PREFIX++ if( $line =~ m/^\s*PREFIX/ );
    }
     
    close $text_file;
    --
    Jedaï

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

Discussions similaires

  1. Outils pour reconnaissance de caractères ?
    Par gmonta dans le forum Autres langages
    Réponses: 3
    Dernier message: 27/05/2007, 18h40
  2. Reconnaissance de caractère
    Par yarol dans le forum Flash
    Réponses: 3
    Dernier message: 18/01/2007, 11h12
  3. Réponses: 5
    Dernier message: 23/10/2005, 18h27
  4. [FLASH MX2004] Problème de reconnaissance des caractères
    Par Spikefreeman dans le forum Flash
    Réponses: 10
    Dernier message: 04/01/2005, 23h08
  5. [Java][char] Reconnaissance de caractères
    Par ZeKiD dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/04/2004, 18h07

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