cordial2xml.pl

#!/usr/bin/perl
use locale; #caracteres accentues

#perl c-norm-3.pl (doit être lancé avant pour normaliser, on obtient un -c3.txt)
#perl cordial2xml.pl culture-un-c3.txt
#perl cordial2xml.pl livres-un-c3.txt
#perl ext2html.pl (doit être lancé après pour enlever le .txt.xml)

#Il s'agit du meme programme que treetagger2xml.pl mais l'ordre des variables dans les balises a été modifié
#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.

<<DOC;
Format d\'entree : un texte lemmatisé et étiqueté par Cordial
Format de Sortie : le même texte au format xml
DOC

# Usage
$ChaineUsage="Usage : cordial2xml.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;
#(cordial) forme lemme categorie equivaut à (treetagger) type lemma string
$Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)$/<element>\n <data type=\"type\">$3<\/data>\n <data type=\"lemma\">$2<\/data>\n <data type=\"string\">$1<\/data>\n <\/element>/;
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);
}