Boîte à outils 3

A présent, on cherche à extraire des structures morpho-syntaxiques de nos données taggées.

On va voir par exemple ce qu'on peut faire à partir d'un fichier taggé par Cordial et d'un fichier patron. Plus bas, vous verrez un fichier patron au format suivant :

NC.+ PREP NC.+ PREP NC.+
#!/usr/bin/perl

open (FIC, ">", "bao3_output.txt");

# Listes pour chaque type de contenu
my @LISTETOKEN=();
my @LISTELEMME=();
my @LISTEETIQUETTE=();

# lecture du fichier PATRON, premier argument de la commande
open(PATRON,"$ARGV[1]");
my @LISTEPATRON=;
close(PATRON);

# Ouverture du fichier étiqueté par Cordial
open(CORDIAL,"$ARGV[0]");

while (my $ligne=)
{
    $ligne=~s/\r//;
    chomp($ligne);
    
    if ($ligne=~/^([^\t]+)\t([^\t]+)\t([^\t]+)$/)
    {
        my ($token,$lemme,$etiquette)=($1,$2,$3);
        # Si le token n'est pas une ponctuation forte, l'ajouter aux tableaux
        if ($etiquette!~/^PCTF/) {
            push(@LISTETOKEN,$token);
            push(@LISTELEMME,$lemme);
            push(@LISTEETIQUETTE,$etiquette);
        }
        else
        {
            &compare(\@LISTETOKEN,\@LISTEETIQUETTE);
            @LISTETOKEN=();
            @LISTEETIQUETTE=();
            @LISTELEMME=();
        }
    }
}

sub compare {
    my ($first,$second)=@_;
    my @LISTETOKEN=@$first;
    my @LISTEETIQUETTE=@$second;
    foreach my $patron (@LISTEPATRON) {
        $patron=~s/\r//;
        chomp $patron;
        my $texte_des_pos=join(" ",@LISTEETIQUETTE);
        while ($texte_des_pos=~/$patron/g)
        {
            # On compte les blancs à gauche
            my $contextebefore=$`;
            my $compteurblanc=0;
            while ($contextebefore=~/\t/g)
            {
                $compteurblanc++;
            }
            
            my @MONPATRONENCOURS=split(/ /, $patron);
            my $longueurpatron=$#MONPATRONENCOURS;
            my $bornesup = $compteurblanc + $longueurpatron;
            print "@LISTETOKEN[$compteurblanc..$bornesup] \n";
        } 
    }
}

On obtient ainsi un fichier texte contenant le patron que l'on a cherché.

Une salle de prière musulmane 
le pays applique encore des 
Star Wars franchit la barre 
Une trentaine d' études ont 
La question hautement sensible de 
Le scrutin doit mettre un terme au