treetagger2xml.pl

#!/usr/bin/perl
<<DOC;
Format d\'entree : un texte étiqueté et lemmatisé par treetagger
Format de Sortie : le même texte au format xml
DOC

#perl treetagger2xml.pl culture-un-3.txt
#perl treetagger2xml.pl livres-un-3.txt
#perl ext2html-ext2xml.pl (pour enlever le .txt.xml)

#Remarque on ne peut pas rajouter des tâches à treetagger2xml.pl car sûrement il fait une boucle sur lui-même ce qui cause une saturation de la mémoire de l'ordinateur et une panne de Windows.

# Usage
$ChaineUsage="Usage : treetagger2xml.pl <Fichier>\n";
if (@ARGV!=1) {
die $ChaineUsage;
}

&ouvre;
&entete;
&traitement;
&fin;
&ferme;

##############################################################################################
# Récupération des arguments et ouverture des tampons
sub ouvre {
$FichierEntree=$ARGV[0];
open(Entree,$FichierEntree);
$FichierSortie=$FichierEntree . ".xml";
open(Sortie,">$FichierSortie");
}

# Entête de document XML
sub entete {
print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
print Sortie "<document>\n";
print Sortie "<article>\n";
}

# Traitement
sub traitement {
while ($Ligne = <Entree>) {
if ($Ligne!~/\ô\¯\:\\ô\¯\:\\/) {
# Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
$Ligne=~s/\"/<![CDATA[\"]]>/g;
$Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)$/<element>\n <data type=\"type\">$2<\/data>\n <data type=\"lemma\">$3<\/data>\n <data type=\"string\">$1<\/data>\n <\/element>/;
$Ligne=~s/<unknown>/unknown/g;
print Sortie $Ligne;
}
}
}
# Fin de fichier
sub fin {
print Sortie "</article>\n";
print Sortie "</document>\n";
}

# Fermeture des tampons
sub ferme {
close(Entree);
close(Sortie);
};