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 :

calcul de frequence


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut calcul de frequence
    Bonjour,

    J'ai un fichier où je voudrais calculer la fréquence de ses mot, les lignes de mot fichier se présentent comme suit :

    naql bdae 0 --- nAqly bdAE --- NN NN --- naql bdae --- nn --- BASE --- 00 --- 543 --- 0 --- 0
    où le numero 543 est le numéro du document où se trouve le mot naql bdae.

    de telle sorte que mo fichier de sortie serait une matrice où les lignes est les mots du fichier et les colonnes sont les fréquences du mot dans le document:
    D1…. Dn
    Mot 1 f1 ….fn
    Mot 2 f2 ….fn
    Mot 2 f2 ….fn

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour.

    Un conseil pour ce travail, utilises des tables de hachage et leur capacité d'autovivification

    Via une expression régulière, met tous tes mots dans une table de hachage et tu auras ainsi le nombre fois que le mot est présent dans le sujet

    Ca donnerais un truc comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my %hash;
    while (my $ligne = <FIC>)
    {
        $ligne =~s/(\w+)/{$hash{$1}++}/eg;
    }
    Modieife le comme tu veux pour qu'il réponde à ton besoin

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut calcul frequence
    Bonjour

    c'est ce que j'ai pu comprendre que j'aurais la frequence totale du mot dans tout le fichier alors que j'ai seulement un seul fichier où c'est ecrit le mot et le numéro du document où il se trouve par exemple une ligne du fichier et comme ceci :
    production économique 3 --- SBC ADJ --- na ---2---0
    où le mot "production économique" est dans le fichier numéro 2.

    Donc comme fichier de sortie

    production économique 1 1 0 0 0
    économie 2 0 0 0 0

    Merci de m'aider

  4. #4
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Citation Envoyé par siham_06
    Bonjour

    c'est ce que j'ai pu comprendre que j'aurais la frequence totale du mot dans tout le fichier alors que j'ai seulement un seul fichier où c'est ecrit le mot et le numéro du document où il se trouve par exemple une ligne du fichier et comme ceci :
    production économique 3 --- SBC ADJ --- na ---2---0
    où le mot "production économique" est dans le fichier numéro 2.

    Donc comme fichier de sortie

    production économique 1 1 0 0 0
    économie 2 0 0 0 0

    Merci de m'aider

    1) pense à utiliser la balise CODE, ce sera plus lisible

    2) ta ligne est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    production économique 3 --- SBC ADJ --- na ---2---0
    tu veux en sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    production économique	1	1	0	0	0
    économie                          2           0           0	0	0
    question : ou vois-tu la ligne "économie" dans la ligne ?
    et à quoi correspondent les chiffres ?

  5. #5
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Par défaut
    2) ta ligne est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    production économique 3 --- SBC ADJ --- na ---2---0
    oui exactement j'ai donné un exemple d'une ligne de mon fichier
    tu veux en sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    production économique	1	1	0	0	0économie                          2           0           0	0	0
    question : ou vois-tu la ligne "économie" dans la ligne ?

    le mot économie est la 2ème ligne

    et à quoi correspondent les chiffres ?[/QUOTE]

    J'ai donné l'exemple que je voudrais avoir en sortie
    Les chiffres correspond aux frequences du mot dans les documents
    par exemple le mot économie occure 2 fois dans le premier document alors que sa fréquence égale à 0 dans les autres documents.
    Pour production économique occure 1 fois dans le premier document une autre dans le deuxème document alors qu'il a une frequence de 0 dans les autres documents
    Merci de votre aide et de l'intérêt que vous portez à mon problème

  6. #6
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Ok, je comprends mieux le problème.

    Donc, en tout premier lieu, il te faut une hash pour stocker les résultats:

    Pour lire le fichier, utiliser un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    open(INPUT '<', $file) || die ("impossible de lire $file\n");
    while (my $line = <INPUT>)
    {
        # production économique 3 --- SBC ADJ --- na ---2---0
        if ($line =~ /^(.+?) \d --- (?:.+?) --- (?:.+?) --- (\d+) --- (?:\d+)$/)
        {
            my ($mot, $docid) = ($1, $2);
            $HASH{$mot}{$docid}++;
        }
    }
    close(INPUT);
    Bon là, la regexp est fausse, vu que tu n'as pas donné un format descriptif complet et précis de la ligne, mais le principe est bon.

    A la fin, tu n'auras plus qu'à afficher le tout...

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

Discussions similaires

  1. [XL-2010] code vba pour formule de calcul de frequence date
    Par JENNIFER27950 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/11/2014, 17h32
  2. [Débutant] Comment calculer la frequence d'un image ?
    Par genius4evers dans le forum Images
    Réponses: 9
    Dernier message: 17/04/2012, 15h25
  3. Calcul de Mel Frequency Cepstral Coefficient mfcc
    Par imene_t1 dans le forum Traitement du signal
    Réponses: 2
    Dernier message: 12/04/2009, 22h43

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