rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[Perl] Structure de données complexe

knebhi, le mercredi 11 juin 2008 à 21:41:46
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 :

#!/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!!!
Configuration: Windows XP
Firefox 2.0.0.14
Répondre à knebhi  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lami20j, le mercredi 11 juin 2008 à 21:54:51
Salut,

à vrai dire je n'ai pas compris ce que tu veux

ton fichier contient quoi exactement?
et que veux tu obtenir en sortie? 106485010510997108
Répondre à lami20j
Logiciels pertinents trouvés dans les téléchargements
Télécharger Open Workbench 1.1.6Open Workbench - Open Workbench est une application libre de gestion et de planification de projet. Il s'agit d'un équivalent libre de...Catégorie: Gestion de projet
Licence: Open Source
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger Restoration 2.5.14Restoration - Restoration est un outil gratuit, en anglais seulement, permettant de récupérer les données effacées, même après avoir vidé...Catégorie: Sauvegarde
Licence: Freeware/gratuit
Télécharger MySQL 5.0.67MySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Plus de logiciels gratuits sur « [Perl] Structure de données complexe »