c-norm-3.pl

#!/usr/bin/perl
use locale; #caracteres accentues
#On lance comme cela: perl c-norm-3.pl
#On obtient: file-c3.txt
print "Bienvenu(e) au programme qui permet que de \n normaliser les étiquettes se référant à \n la catégorie grammaticale de Cordial vers \n celles de TreeTagger (aka type) \n";
print "Nom du fichier de travail, de preference un .cnr au format UNIX: \n";
my $file=<STDIN>;
chomp($file);
open(FILEIN, $file);
open(FILEOUT, ">$file.cnorm3");
my $DUMPFULL="";
while(my $recup=<FILEIN>) {
#1. transcodage
##Vous pouvez compléter les catégories, je n'ai pris que celles du corpus
####Les catégories grammaticales####
$recup=~s/\\r//g;
$recup=~s/NCMS/NOM/g;
$recup=~s/NCFS/NOM/g;
$recup=~s/NCMP/NOM/g;
$recup=~s/NCFP/NOM/g;
$recup=~s/NCMIN/NOM/g; # dates (NUM), tout ce qui est temporel: janvier, octobre, cours et résidus: pays, Gaulois, Prix, tête-à-tête
$recup=~s/NCSIG/NOM/g;
$recup=~s/NCI/NOM/g;
$recup=~s/NCPIG/NOM/g;
$recup=~s/NPMS/NAM/g;
$recup=~s/NPFS/NAM/g;
$recup=~s/NPI/NAM/g;
$recup=~s/NPSIG/NAM/g;
$recup=~s/NPMIN/NAM/g;
$recup=~s/VINDP3S/VER/g;
$recup=~s/VINDP3P/VER:pres/g;
$recup=~s/VPARPRES/VER:ppre/g;
$recup=~s/VPARPMS/VER:pper/g;
$recup=~s/VPARPFS/VER:pper/g;
$recup=~s/VPARPMP/VER:pper/g;
$recup=~s/VPARPFP/VER:pper/g;
$recup=~s/VINDI3S/VER:impf/g;
$recup=~s/VINDI3P/VER:impf/g;
$recup=~s/VINDF3S/VER:futu/g;
$recup=~s/VINDF3P/VER:futu/g;
$recup=~s/VINF/VER:infi/g;
$recup=~s/VCONP3S/VER:cond/g;
$recup=~s/PREP/PRP/g;
$recup=~s/DETDMS/DET:ART/g;
$recup=~s/DETDFS/DET:ART/g;
$recup=~s/DETIFS/DET:ART/g;
$recup=~s/DETDPIG/DET:ART/g;
$recup=~s/DETIMS/DET:ART/g;
$recup=~s/DETPOSS/DET:POS/g;
$recup=~s/DETDEM/DET/g; #Problème, ce et cette sont dans PRO:DEM et pas dans DET sous TreeTagger, mais je les met à défaut dans DET
$recup=~s/ADJMS/ADJ/g;
$recup=~s/ADJFS/ADJ/g;
$recup=~s/ADJFP/ADJ/g;
$recup=~s/ADJMP/ADJ/g;
$recup=~s/ADJSIG/ADJ/g;
$recup=~s/ADJPIG/ADJ/g;
$recup=~s/ADJNUM/ADJ/g; #C'est NUM dans TreeTagger mais il est dans les ADJ sous Cordial
$recup=~s/ADJORD/ADJ/g; #Or dans TreeTagger c'est dans les NUM
$recup=~s/ADJIND/ADJ/g; #Or dans TreeTagger c'est dans PRO:IND
$recup=~s/ADJMIN/ADJ/g;
$recup=~s/ADJINV/ADJ/g;
$recup=~s/PCTFORTE/SENT/g;
$recup=~s/PCTFAIB/PUN/g;
$recup=~s/COO/KON/g;
$recup=~s/SUB/KON/g; #Conjonction KON ou pronom PRO:REL, or comme il y a quand, je mets KON
$recup=~s/ADV/ADV/g;
$recup=~s/PPER3S/PRO:PER/g;
$recup=~s/PPER3P/PRO:PER/g;
$recup=~s/PRI/PRO:REL/g;
$recup=~s/PIMS/PRO:IND/g; #Parce que dans TreeTagger c'est dans PRO:IND

#2. Memorisation dans DUMPFULL
$DUMPFULL.=$recup;
}
#3. Remplacement des entites
print FILEOUT $DUMPFULL;
#----------------------------------------------
close(FILEIN);
close(FILEOUT);

system "#!/bin/bash
rename c\.cnr\.cnorm3 c3\.txt *\.cnr\.cnorm3;
ls > tous-vos-fichiers\.txt;
grep c3\.txt tous-vos-fichiers\.txt > nom-de-fichier\.txt;";
print "\nLe nouveau fichier créé se trouve dans cette liste: \n";
system "#!/bin/bash
cat nom-de-fichier\.txt;";