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 :

extraction de 2 mots consécutifs


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut extraction de 2 mots consécutifs
    Bonjour à tous c'est encore moi, la novice en perl qui en apprend un peu plus chaque jour grâce à ce forum.
    Aujourd'hui je cherche à faire un programme qui extrait tous les bigrammes d'un texte avec la fréquence de chaque.

    output :

    'le lapin' => 2
    'lapin mange' => 1
    ...

    J'ai déjà un bout de code mais j'ai encore un problème avec ces foutus variable ;-) le voici :

    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
     
    #! /usr/bin/perl
    use warnings;
    use strict;
     
    my $fichier_corpus = 'input.txt';
    my $fichier_fr = 'output.txt';
    open my $fh_corpus, "<:utf8", $fichier_corpus or die "Impossible de lire $fichier_corpus\n";
    open my $fh_fr , ">>:utf8", $fichier_fr or die "Impossible de lire $fichier_fr\n";
    my %words;
    my $ligne = <$fh_corpus>;
     
    while (my $ligne =~ /(\w+ (\w+))/g) {
      ++$words{$1};
      pos($ligne) = $-[2];
    }
     
    for (sort { index($ligne,$a) <=> index($ligne,$b) } keys %words) {
      print {$fh_fr}"'$_' => $words{$_}\n";
    }
    quand je l'execute il m'affiche : "use of uninitialized value $ligne in pattern match (m//) at ..."

    Quelle modif dois-je apporter ?

    Merci beaucoup d'avance de votre aide.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    Tu déclares deux fois la variables $ligne. Enlève le my dans le while.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut
    Merci Dimitry ! ça va tout de suite mieux. Par contre il ne traite que la première ligne de mon fichier

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    L'opérateur diamant (le <>) permet de lire ligne par ligne. Il faut donc boucler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(defined(my $ligne = <$fh_corpus>)) {
      if ($ligne =~ /(\w+ (\w+))/g) {
      ...
      }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut
    j'ai fait la modif mais là il ne traite que le premier bigramme de la ligne.

  6. #6
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    A quoi ressemblent tes lignes ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/06/2015, 11h01
  2. [XL-2007] extraction 1er/dernier mot d'une cellule
    Par cedinfo17 dans le forum Excel
    Réponses: 4
    Dernier message: 28/08/2011, 04h07
  3. extraction d'un mot d'une chaine
    Par manren dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 18/10/2010, 23h57
  4. ListBox - Extraction d'un mot
    Par Bouillon dans le forum Delphi
    Réponses: 2
    Dernier message: 30/09/2006, 23h46
  5. [RegEx] Extraction d'un mot et d'un nombre dans
    Par lodan dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2006, 21h23

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