Les expressions régulières dans Fonology
Les limites et les défis des regex
Comment identifier les patrons phonologiques d’une langue à partir de données écrites?
Nous voyons du texte partout, ce qui peut laisser croire que la collecte de données n’a jamais été aussi simple. Le problème réside dans le décalage bien connu entre les lettres (graphèmes) et les sons (phonèmes) : il est impossible de comprendre pleinement les systèmes phonologiques en se contentant d’examiner la distribution des lettres dans un corpus donné. Ainsi, pour identifier les patrons phonologiques, il faut d’abord convertir les graphèmes en phonèmes.
Cette série est consacrée à un projet financé par le CRSH (subvention no 141280) qui examine comment les statistiques lexicales peuvent être exploitées afin de générer une base de comparaison avec des données expérimentales. Une partie de ce projet implique le développement d’outils de conversion graphème-phonème (il est en effet très difficile d’analyser les patrons phonologiques dans des données écrites sans accès à une transcription phonétique). La bibliothèque R Fonology est directement liée à ce projet et couvre le portugais, le français, l’italien et l’espagnol. Matéo Levesque a travaillé sur des scripts de conversion graphème-phonème pour le français. Les articles de cette série s’inscrivent dans les efforts de mobilisation des connaissances du projet.
Guilherme D. Garcia
Introduction
Dans l’article précédent, nous avons présenté une méthode de transcription phonémique du français. Cependant, les regex imposent encore plusieurs limites. Dans cet article, nous examinerons les limites liées au français ainsi que celles qui sont inhérentes aux expressions régulières elles-mêmes. Nous ferons aussi un survol d’autres défis et explorerons quelques pistes de solution.
Les limites
Durant le développement du module de transcription du français, nous avons rencontré plusieurs limites.
Limites du français
Comme nous l’avons mentionné dans l’article précédent, l’orthographe française contient de nombreux cas exceptionnels. La seule solution pratique à cette limite consiste à maintenir une liste de mots prétranscrits avant d’appliquer les règles générales de transcription. Le problème d’une telle liste est qu’elle ne peut jamais être entièrement exhaustive. Pour atténuer ce problème et permettre aux utilisateurs de constituer la liste d’exceptions la plus précise possible, l’extension Fonology fournit les fonctions
add_lex_...(), qui permettent d’ajouter vos propres transcriptions à la liste d’exceptions.1L’orthographe française contient également de nombreux cas d’homophonie et d’homographie. L’homophonie n’est pas particulièrement problématique, puisque nous pouvons simplement indiquer que « ou » et « où » doivent recevoir la même transcription. Les homographes, en revanche, sont beaucoup plus difficiles à traiter. Nous ne pouvons pas déterminer si « fils » doit être transcrit /fis/ ou /fil/, car les regex ne peuvent pas analyser le contexte linguistique autour d’un mot. Cela nous amène naturellement aux limites des regex elles-mêmes.
Limites des regex
La plus grande limite des regex est qu’elles n’ont pas été conçues pour la transcription phonémique. Il est donc difficile d’obtenir des transcriptions très précises lorsque la langue cible possède une orthographe irrégulière.2 De plus, comme les regex n’ont pas accès à des structures phonologiques comme les syllabes, les pieds et d’autres unités prosodiques, il est difficile de rendre compte de phénomènes comme le relâchement des voyelles fermées dans la première syllabe de certains mots en français québécois.3 Cela nous mène à un autre défi : la variation dialectale.
Si nous voulions prendre en charge des variétés régionales comme le français québécois, le français belge, le français suisse et d’autres, il faudrait répéter toutes les étapes décrites dans l’article 2 pour chaque variété. Certaines règles du français standard pourraient être réutilisées, mais il faudrait ajouter de nombreuses règles et en supprimer d’autres (c’est-à-dire introduire des règles conditionnelles). Une solution possible serait simplement de traiter chaque variété régionale comme une langue distincte, mais le processus resterait fastidieux et complexe.
Quelques solutions
Pour les cas (1) et (4), les solutions proposées sont déjà décrites dans leurs sections respectives. Pour les cas (2) et (3), voici quelques pistes de solution.
Pour résoudre le cas (2), nous pourrions forcer l’affichage de toutes les transcriptions possibles pour un même mot.4 Cela indiquerait que le mot est un homographe, même si le contexte ne serait toujours pas pris en compte.
Pour le cas (3), nous pourrions utiliser le système de syllabation déjà intégré à l’extension afin de traiter les transcriptions qui dépendent des frontières syllabiques. Cela réglerait la plupart des problèmes restants pour le français. Toutefois, pour les langues qui exigent aussi l’accès à des structures phonologiques de niveau supérieur, comme les pieds, cette approche resterait limitée.
Conclusion
Dans ces trois articles, nous avons présenté une méthode de transcription phonémique en prenant le français comme exemple. La même méthodologie peut s’appliquer à de nombreuses autres langues. N’hésitez pas à installer l’extension Fonology et à expérimenter avec les quatre langues déjà prises en charge.
Copyright © Guilherme Duarte Garcia
Notes de bas de page
Notez que ces fonctions dépendent de la session et ne sauvegardent pas à elles seules le nouveau lexique de façon permanente d’une session R à l’autre. C’est intentionnel. L’utilisateur devrait donc aussi utiliser la fonction
export_lex()afin de sauvegarder les nouvelles entrées dans un fichier, qui pourra ensuite être soumis au dépôt de Fonology pour que les mises à jour futures incluent les entrées en question.↩︎Ces problèmes sont fortement réduits dans les langues dont le système orthographique est plus régulier, comme l’espagnol.↩︎
Cela ne pose problème que si l’utilisateur souhaite aller au-delà de la transcription phonémique et inclure aussi des phénomènes variables.↩︎
La même approche pourrait aussi être appliquée au cas (4) afin de gérer la variation dialectale.↩︎