Description

La Boîte à Outils 2 concerne l'annotation en parties du discours des données, qui se fait à l'aide de deux logiciels : Cordial et TreeTagger.

En utilisant Cordial

L'annotation avec Cordial se fait à partir des fichiers texte brut générés par la BàO 1. Le logiciel ne supportant pas l'UTF-8, il a fallu convertir ces derniers en ISO-8859-15. Cette opération a été réalisée automatiquement par un petit script bash qui se charge d'exécuter la commande iconv sur l'ensemble des fichiers. L'option //TRANSLIT a été ajoutée pour que les caractères qui ne peuvent être représentés en ISO soient transformés en un ou plusieurs caractères approximatifs. (Par exemple, ’ devient ', et œ devient oe.) L'étiquetage par Cordial se fait ensuite en choisissant manuellement le fichier désiré. Est produit en sortie un document .cnr divisé en trois colonnes : le token, le lemme et la catégorie morpho-syntaxique.

En utilisant TreeTagger

L'annotation avec TreeTagger est une opération ajoutée au script de la BàO 1, avant l'impression dans le fichier de sortie XML. À l'aide de la fonction system, il est possible de lancer le logiciel en ligne de commande. Le script utilise notamment un programme qui transforme la sortie générée par TreeTagger en XML : treetagger2xml-utf8.pl.
Cette étape d'étiquetage augmente considérablement le temps d'exécution du programme (environ une dizaine d'heures).

Script

La fonction d'étiquetage, qui prend comme arguments le titre et la description récupérés, est appelée ainsi :

my($title_xml, $description_xml) = &pos_tagging($title, $description);

Le corps de la fonction est le suivant :

sub pos_tagging {
    my $title_1 = $_[0];
    my $description_2 = $_[1];

    # Ouverture d'un fichier temporaire pour l'étiquetage avec TreeTagger du titre
    open(my $TMP_1, ">:encoding(UTF8)", "temp_1.txt") or die "Couldn't open: $!";
    print $TMP_1 $title_1;
    system("perl tokenise-utf8.pl temp_1.txt | tree-tagger.exe -token -lemma -no-unknown french-oral-UTF-8.par > tagged-output_1.txt");
    system("perl treetagger2xml-utf8.pl tagged-output_1.txt utf8");
    close($TMP_1);

    open(my $FILE_1, "<:encoding(UTF8)", "tagged-output_1.txt.xml") or die "Couldn't open: $!";
    my $first_line = <$FILE_1>;
    my $title_xml = "";
    while(my $line = <$FILE_1>) {
        $title_xml .= $line;
    }
    close($FILE_1);

    # Ouverture d'un fichier temporaire pour l'étiquetage avec TreeTagger de la description
    open(my $TMP_2, ">:encoding(UTF8)", "temp_2.txt") or die "Couldn't open: $!";
    print $TMP_2 $description_2;
    system("perl tokenise-utf8.pl temp_2.txt | tree-tagger.exe -token -lemma -no-unknown french-oral-UTF-8.par > tagged-output_2.txt");
    system("perl treetagger2xml-utf8.pl tagged-output_2.txt utf8");
    close($TMP_2);

    open(my $FILE_2, "<:encoding(UTF8)", "tagged-output_2.txt.xml") or die "Couldn't open: $!";
    $first_line = <$FILE_2>;
    my $description_xml = "";
    while(my $line = <$FILE_2>) {
        $description_xml .= $line;
    }
    close($FILE_2);

    return($title_xml, $description_xml);
}