BOÎTE À OUTILS 3

Extraction des patrons morphosyntaxiques à partir d'un script perl.

Fichier CORDIAL

Nous allons commencer par travailler sur le fichier étiqueté par CORDIAL.

Pour ce script, nous suivons le schéma conceptuel suivant :

Récupération de la liste des patrons consécutifs recherchés
Lecture du fichier
récupération du lemme
récupération du token
récupération des étiquettes
ajout de chaque élément dans un tableau
comparaison de la liste des patrons à la liste des étiquettes

Liste des patrons

Par exemple pour une recherche d'une suite déterminant + nom + déterminant on aura la liste de patrons suivant :

DET.+#NC.+#PREP#DET.+
Comme nous voulons tous les types de déterminants, nous ajoutons une expression régulière qui permet de prendre tous les déterminants, peu importe leur genre et/ou leur nombre.

Liste des étiquettes

La sortie de CORDIAL donne aussi le genre et le nombre dans le POS (part-of-speech, ou catégorie grammaticale en français), on a donc des résultats, pour les déterminants :

DETDFS
DETDPIG
DETIFS
De même pour les noms :
NCMS
NCFS
NCMP

Détails du programme

On récupère d'abord la liste des tokens, des lemmes et des étiquettes de chaque phrase du fichier étiqueté par CORDIAL. Donc si une étiquette correspond à une ponctuation, on vide les tables et on lance la comparaison entre les tables enregistrées et la liste des patrons recherchés.

if ( $ligne =~ /^([^\t]+)\t([^\t]+)\t([^\t]+)/ ) {
my ($token, $lemme, $etiquette) = ($1,$2,$3);
if ($etiquette !~ /PCTF/) {
&compare(\@LISTEETIQUETTE,\@LISTETOKEN);
@LISTEETIQUETTE=(); @LISTELEMME=(); @LISTETOKEN=();
}
}

Dans le sous-programme, on parcourt la liste des patrons recherchés, on la compare ensuite avec la liste des étiquettes, on a au préalable "mâché" ( fonction chomp ) toutes les étiquettes sur une seule ligne :

my $texte_des_pos = join(" ",@LISTEETIQUETTE);
while($texte_des_pos=~/$patron/g)
my $contextebefore = $`;

Nous utilisons maintenant un programme qui sert à une représentation graphique de ses patrons : boîte à outils 4.