• Aucun résultat trouvé

Les patrons et leur expression régulière

CHAPITRE 5 MÉTHODOLOGIE

5.3 Patrons

5.3.3 Les patrons et leur expression régulière

Un patron est un motif qui sera détecté dans un texte. Par exemple, le patron Le chat appliqué sur le texte Le chat bleu. Les chats noirs. Le chat dort. s’appariera avec le groupe de mots Le chat bleu et avec Le chat dort. On peut extraire des résultats du patron les mots bleu et dort. La même technique sera appliquée pour trouver nos élé- ments prédicatifs. Le patron final détectera une portion de phrase avec laquelle il partage des éléments et il isolera des mots d’intérêt. Les patrons peuvent être très généraux, mais on les préfère précis pour assurer la pertinence des éléments prédicatifs extraits. Les patrons ignorent tous les mots qui précèdent ou qui suivent le groupe de mots qu’ils recherchent. Pour rechercher des groupes de mots dans l’ensemble des phrases du corpus, nous avons

7. http ://gate.ac.uk/

utilisé le langage des expressions régulières.

De prime abord, il faut présenter le rôle de certains caractères dans les expressions régulières : Les crochets [ et ], l’astérisque *, le point . et l’accent circonflexe ˆ . Écrire le patron d’un caractère e s’appariera avec tous les e d’un texte, mais pour trouver toutes les voyelles d’un texte, il faut utiliser les crochets pour écrire le patron [aeiouy]. Ce patron s’apparie avec un seul caractère, qui peut être un a, un e, un i, . . . Pour trouver tous les caractères qui ne sont pas des voyelles, le patron [ˆaeiouy] est construit en ajoutant l’accent circonflexe au début de la liste. Si l’on veut détecter le mot chat, l’exclamation chat !, le cri chat ! ! et encore chat ! ! ! ! ! !, on utilise l’astérisque * dans le patron chat!*. L’astérisque (ou étoile de Kleene) permet zéro, une ou plusieurs apparitions du caractère précédent. Pour forcer le caractère à apparaître au moins une fois, le plus + est disponible. Ensuite, le point . remplace n’importe quel caractère unique. Le patron . s’appariera avec tous les caractères du texte, y compris les espaces, les points et les soulignés _. Finalement, si l’on veut obtenir chaque référence de l’expression Nastase[1], Rosario[2] et Girju[?], il faut utiliser la barre oblique inversée. La barre oblique inversée \ évite l’interprétation d’un caractère spécial des expressions régulières et considère le caractère lui-même. Le patron \[.\] combine la barre inversée et le point pour obtenir [1], [2] et [?].

Pour que les annotations comme la nature d’un mot soient accessibles au patron en même temps que le mot lui-même, nous concaténons les quatre caractéristiques de chaque nom comme ceci : nature:syntagme:lemme:mot. Si l’on ne connaît ni la nature, ni le syntagme et ni le lemme d’un mot, on peut écrire le mot seul et remplacer les autres annotations par n’importe quelle chaîne de caractères. Pour remplacer n’importe quelle chaîne de caractères, on peut combiner le caractère inconnu et l’astérisque pour dire « aucun ou plusieurs caractères inconnus » : .* . Le patron pour le mot chats est .*:.*:.*:chats. On peut faire de même avec les autres catégories. Le patron pour tous les verbes est VB:.*:.*:.*, pour les membres d’un groupe nominal .*:NP:.*:.* et pour capturer travail ou travaux : .*:.*:travail:.*. Pour contenir les chaînes de caractères inconnues aux caractères qui peuvent apparaître entre les deux points, permettons aux chaînes de caractères inconnues de contenir tous les caractères sauf le deux-points : [ˆ:]* . Il est maintenant possible d’écrire le motif

(?:[^:]*:[^:]*NP:word:[^_]*)

où les parenthèses isole le motif du reste du patron et où le ?: signifie que le motif entre parenthèses doit être trouvé, mais non extrait de la phrase. Le patron recherche tous les mots qui sont membres d’un groupe nominal (indiqué par une expression se terminant par NP, comme nous le verrons plus loin) et dont le lemme est word.

À présent, il est possible d’étendre l’explication au reste de la phrase pour la raison du tiret bas qui est interdit dans la dernière chaîne de caractères inconnue ([ˆ_]*). Nous séparons chacun des mots et son groupe de 4 annotations des autres par un tiret bas. Le caractère après la quatrième annotation est un tiret bas parce que la fin du mot est atteinte. La chaîne de caractères inconnue est donc limitée par le tiret bas (_). En guise d’exemple, chercher toutes les variations de lemme de le chat bleu s’écrit

(?:[^:]*:[^:]*:le:[^_]*)_(?:[^:]*:[^:]*:chat:[^_]*)_ (?:[^:]*:[^:]*:bleu:[^_]*)

Si l’on ignore le nombre de mots à la création d’un motif, il est possible de faire répéter zéro ou plusieurs fois un sous-motif en faisant suivre les parenthèses d’un astérisque : (?:)*. Comme nous savons que les mots seront suivis du caractère de séparation, du tiret bas, il est possible de l’insérer dans le sous-motif. Ainsi, pour s’assurer de la présence soit de le chat, le

bleu chat ou le bleu bleu chat, il est acceptable d’écrire :

(?:[^:]*:[^:]*:le:[^_]*)_(?:[^:]*:[^:]*:bleu:[^_]*_)* (?:[^:]*:[^:]*:chat:[^_]*)

L’écriture des patrons pour l’expérience ne nécessite plus que deux subtilités. La première est la possibilité de distinguer les mots qui commencent un nouveau syntagme, comme Le et

dort dans la phrase Le chat bleu dort. Le commence le groupe nominal Le chat bleu et dort

commence et termine son groupe verbal. Cette distinction est permise grâce à l’analyseur syntaxique, qui appose l’annotation B-NP sur le premier mot des syntagmes et I-NP sur tous les autres. Pour trouver un mot dont le lemme est word et qui commence un groupe nominal, on utilise

(?:[^:]*:B-NP:word:[^_]*)

Pour trouver le même mot, mais au milieu ou à la fin d’un groupe nominal, on utilise l’an- notation I-NP

(?:[^:]*:I-NP:word:[^_]*)

Finalement, il est fréquent qu’on soit indifférent à la position d’un mot dans son groupe. Le patron qui correspond à nos besoins est :

La dernière subtilité concerne l’adaptation des patrons aux différents noms composés recher- chés. Notre expérience interprète tous les patrons en remplaçant les mots word par le lemme d’un nom du nom composé. Ainsi, avec le nom composé deserts rats dont les lemmes sont

desert et rat, le patron simplifié

(?:[ˆ:]*:[ˆ:]:word:[ˆ_]*)_(?:[ˆ:]*:[ˆ:]:word:[ˆ_]*) est remplacé d’abord par

(?:[ˆ:]*:[ˆ:]:desert:[ˆ_]*)_(?:[ˆ:]*:[ˆ:]:rat:[ˆ_]*) Une copie du patron est ensuite faite avec le remplacement opposé : (?:[ˆ:]*:[ˆ:]:rat:[ˆ_]*)_(?:[ˆ:]*:[ˆ:]:desert:[ˆ_]*)

Si le premier patron détecte un élément prédicatif, on note la direction N1 N2 de la phrase source et pour les éléments détectés par le second patron, la direction notée sera N2 N1. Voici finalement un patron complet pour une phrase de la forme sujet-verbe-complément, où l’élément prédicatif extrait est un verbe.

(?:[^:]*:[^:]*NP:word:[^_]*)_(?:[^:]*:[^:]*NP:[^:]*:[^_]*_)* (?:[^:]*:[^:]*VP:[^:]*:[^_]*_)*(VB[^:]*:[^:]*VP:[^:]*:[^_]*)_ (?:[^:]*:[^:]*NP:[^:]*:[^_]*_)*(?:[^:]*:[^:]*NP:word:[^_]*)

La première ligne s’assure que le premier nom est dans un groupe nominal et permet à d’autres mots d’être présents entre le nom et le verbe s’ils font partie du même groupe nominal. Sur la deuxième ligne, le premier sous-motif permet aussi à des membres d’un groupe verbal de s’intercaler entre le nom et le verbe. Le verbe lui-même est capturé à la fin de la deuxième ligne, par le sous-motif qui n’est entouré que de parenthèses (sans ?:). La troisième ligne est le reflet de la première. On permet à des membres d’un groupe nominal de précéder le second nom s’ils font partie du même groupe. La phrase peut contenir d’autres mots après le patron ou avant. Des patrons pour des variations diverses de cette phrase seront présentés dans la prochaine section.