[Perl] Structure de données complexe
knebhi
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
knebhi Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
knebhi Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je tente de parser un fichier texte POUR pouvoir récupérer les informations m'interessant.
Mon fichier est le résultat d'un analyseur syntaxique. Il renvoit pour chaque phrase une analyse compléte, avec les éléments de la phrase et les liens syntaxiques.
Voici comment cela se présente :
001 PH 000
Lionel Jospin remâche son ressentiment et se venge. ///phrase
---
002 pp 001 0000-038 : Lionel Jospin remache son ressentiment ///element phrase
003 fs 002 0000-013 : Lionel Jospin
004 gn 003 0000-013 : Lionel Jospin
005 wd 004 0000-006*: P <Lionel>
006 wd 004 0007-006 : P <Jospin>
007 fv 002 0014-007 : remâche
008 fc 002 0022-016 : son ressentiment
009 gv 007 0014-007 : remache
010 wd 009 0014-007*: vc <remacher>
011 gn 008 0022-016 : son ressentiment
012 wd 011 0022-003 : o <son>
013 wd 011 0026-012*: n <ressentiment>
014 pp 001 0039-011 : et se venge
015 gc 014 0039-002 : et
016 wd 015 0039-002*: sc <et>
017 fv 014 0042-008 : se venge
018 gv 017 0042-008 : se venge
019 wd 018 0042-002 : qp <se>
020 wd 018 0045-005*: vc <venger>
021 wp 018 0050-001 : .
022 ls 010 0100>004 (0000) ///lien syntaxique
023 ls 020 0102>010 (0000)
Pour la ligne 22 par exemple j'ai un lien syntaxique :
022 ls 010 0100>004 (0000)
Je dois récupérer les deux elements mis en relation qui sont la ligne 010 ET la ligne 004 donc :
010 wd 009 0014-007*: vc <remacher>
004 gn 003 0000-013 : Lionel Jospin
Mon fichier comporte plusieurs phrase toute commencant par 001 PH 000
J'ai réalisé un bout de PERL qui permet de distinguer les différents types d'elements et de les stocker dans un tableau.
Cependant je ne sais pas comment réaliser ces liens tout en sachant que j'ai plusieurs phrase dans un meme fichier.
Voici mon code :
Merci de m'aider je bloque depuis un petit moment!!!
Je tente de parser un fichier texte POUR pouvoir récupérer les informations m'interessant.
Mon fichier est le résultat d'un analyseur syntaxique. Il renvoit pour chaque phrase une analyse compléte, avec les éléments de la phrase et les liens syntaxiques.
Voici comment cela se présente :
001 PH 000
Lionel Jospin remâche son ressentiment et se venge. ///phrase
---
002 pp 001 0000-038 : Lionel Jospin remache son ressentiment ///element phrase
003 fs 002 0000-013 : Lionel Jospin
004 gn 003 0000-013 : Lionel Jospin
005 wd 004 0000-006*: P <Lionel>
006 wd 004 0007-006 : P <Jospin>
007 fv 002 0014-007 : remâche
008 fc 002 0022-016 : son ressentiment
009 gv 007 0014-007 : remache
010 wd 009 0014-007*: vc <remacher>
011 gn 008 0022-016 : son ressentiment
012 wd 011 0022-003 : o <son>
013 wd 011 0026-012*: n <ressentiment>
014 pp 001 0039-011 : et se venge
015 gc 014 0039-002 : et
016 wd 015 0039-002*: sc <et>
017 fv 014 0042-008 : se venge
018 gv 017 0042-008 : se venge
019 wd 018 0042-002 : qp <se>
020 wd 018 0045-005*: vc <venger>
021 wp 018 0050-001 : .
022 ls 010 0100>004 (0000) ///lien syntaxique
023 ls 020 0102>010 (0000)
Pour la ligne 22 par exemple j'ai un lien syntaxique :
022 ls 010 0100>004 (0000)
Je dois récupérer les deux elements mis en relation qui sont la ligne 010 ET la ligne 004 donc :
010 wd 009 0014-007*: vc <remacher>
004 gn 003 0000-013 : Lionel Jospin
Mon fichier comporte plusieurs phrase toute commencant par 001 PH 000
J'ai réalisé un bout de PERL qui permet de distinguer les différents types d'elements et de les stocker dans un tableau.
Cependant je ne sais pas comment réaliser ces liens tout en sachant que j'ai plusieurs phrase dans un meme fichier.
Voici mon code :
#!/usr/bin/perl -w #####on parse le fichier et on recupere les donnees par type en les stockant ####dans des tableaux open FICHIER,"< perltest.txt" or die "Le fichier n'existe pas ! : $!\n"; ###boucle de lecture du fichier while (my $ligne = <FICHIER>){ $ligne =~ s/\n//g; #@arbresphrases = (); @phrases = (); @elementsphrases = (); @lienssyntaxiques = (); ###impression du fichier brut #print $ligne; ####detection des arbres ce qui se trouve entre deux 001 PH 000 if($ligne =~ /001 PH 000/) { #@tab = (); #print $&."\n"; #my $arbre = $1; #push (@arbresphrases,$arbre); #print "phrase analysée ==>".$phrase."\n"; } ###detection des phrase analysees if($ligne =~ /(^[A-ZÀ-Ýa-z"«][a-z].+)/) { my $phraseanalysee = $1; push (@phrases,$phraseanalysee); #print "phrase analysée ==>".$phraseanalysee."\n"; } ####detection autre type de phrase (avec espace devant ou encore avec apostrophe) ####a completer .....................!!!!!! ###detection des elementphrase if($ligne =~ /((^[0-9]{3}) ([^l][a-z])(.+))/) { my $elementphrase = $1; push (@elementsphrases,$elementphrase); #print "elementphrase ==>".$elementphrase."\n"; } ###detection des liens syntaxiques if($ligne =~ /(^[0-9]{3} (l[a-z]) ([0-9]{3}) ([0-9]{4})>([0-9]{3}))/) { my $liensyntaxique = $1; push (@lienssyntaxiques,$liensyntaxique); #print "liensyntaxique ==>".$liensyntaxique."\n"; } ###parcours des elements des 3tableaux foreach $elt (@phrases, @elementsphrases, @lienssyntaxiques) { print $elt."\n"; } }# fin de traitement de fichier close FICHIER;
Merci de m'aider je bloque depuis un petit moment!!!
A voir également:
- [Perl] Structure de données complexe
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Trier des données excel - Guide
- Structure d'un rapport de stage - Guide