Les expressions régulières dans Fonology
Leur utilisation pour la transcription phonémique
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 connue 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
Comme nous l’avons vu dans l’article précédent, le but de la transcription dans Fonology est de prendre des données textuelles en français et de les coder phonologiquement. Dans cet article, nous approfondirons comment utiliser les regex pour faire de la transcription phonémique en français.
La transcription
La transcription se découpe en plusieurs étapes importantes qui ont une organisation précise. Ces étapes sont : le nettoyage, la gestion des exceptions, l’application des règles de transcription et un nettoyage final.
Nettoyage
Avant de transcrire les mots, il faut nettoyer les données. Pour ce faire, on change tous les caractères pour leur équivalent en minuscules et on enlève toutes les marques de ponctuation. Une fois que le nettoyage est fait, on peut commencer la transcription.
Exceptions
En français, l’orthographe est relativement généralisable,1 mais il reste que plusieurs mots ont une orthographe particulière. Ces mots uniques, comme “monsieur”, “hier” ou “yeux”, doivent être transcrits en premier si on veut éviter que nos règles de transcription remplacent l’orthographe qui nous permet de les identifier.
Application des règles
Il serait impossible de présenter toutes les règles qui ont été utilisées dans le module. Les règles suivantes sont donc des exemples qui servent à expliquer les concepts de base utiles pour comprendre le processus.
Il y a des lettres (et groupes de lettres) qui sont assez simples à transcrire, comme :
- “â” –> /ɑ/
- “gn” –> /ɲ/
- “oy” –> /waj/
- etc.
Ces graphèmes sont réguliers, donc très faciles à transcrire2. Par contre, pour les autres règles, il faut être un peu plus vigilant. L’ordre d’application des règles est, en règle générale, très important. Par exemple, prenons deux règles :
- A : “u” –> /y/
- B : “ou” –> /u/
Si on applique la règle A avant la règle B, il n’y a pas de problème. Cependant, si on applique la règle B avant la règle A, tous les “u” deviendront des /y/, puisque le programme ne fait pas la différence entre le caractère “u” et le phonème /u/.3
Les remplacements temporaires
Dans certains cas, même le fait de changer l’ordre des règles ne corrige pas les erreurs. Pour remédier à cela, nous avons utilisé des remplacements temporaires. Cette méthode offre la possibilité de spécifier si une lettre a déjà été transcrite ou non. Par exemple, prenons les règles suivantes :
- A : “ées”, “és”, “ée” et “é”4 –> /e/
- B : “e” –> /ə/
Pour l’instant, les règles sont dans un ordre problématique, parce que la règle A perdra son effet à cause de la règle B. Cependant, si on tente de réorganiser les règles, on observe encore un problème : “ées” et “ée” seront transcrits comme /eə/. C’est donc dans des cas comme celui-ci qu’on peut utiliser les remplacements temporaires.
En conservant l’ordre décrit plus haut, on peut modifier la règle A comme suit :
- A : “ées”, “és”, “ée” et “é” –> “E”
- B : “e” –> /ə/
De ce fait, la règle B ne cible plus le résultat de la règle A, puisque celui-ci est une majuscule.
Nettoyage final et dernières transcriptions
Si on utilise les remplacements temporaires, on obtient un résultat fonctionnel, mais qui n’est pas une transcription phonémique. Il faut donc s’assurer de changer les caractères temporaires pour le bon phonème. C’est aussi dans cette section de la transcription que les consonnes géminées sont réduites à leur équivalent non géminé. Par exemple : “tt” –> /t/.
Conclusion
Donc, dans l’ordre :
- On nettoie les données.
- On gère les exceptions.
- On applique les règles qui ont une priorité (pour ne pas réécrire nos transcriptions).
- On applique le reste des règles dont l’ordre importe peu.
- On convertit les remplacements temporaires vers les phonèmes appropriés.
- On finalise les dernières transcriptions.
C’est ce qui résume le fonctionnement de la transcription phonémique du français dans Fonology.
Bien que des solutions aient été proposées aux problèmes présentés plus haut, la transcription peut parfois être erronée. Dans le prochain article, nous verrons quels sont les autres problèmes difficiles à gérer avec les expressions régulières. Nous verrons aussi certaines limitations de cette méthode.
Regular expressions and the Fonology package
How can we map phonological patterns in a language using written data?
We see text everywhere, so it’s reasonable to assume that gathering data has never been easier. The problem is the well-known mismatch between letters (graphemes) and sounds (phonemes): we cannot fully understand phonological systems by simply examining how letters are distributed in a given corpus. Thus, to map phonological patterns, we first need to convert graphemes into phonemes.
This series is dedicated to a SSHRC-funded project (grant no. 141280) examining how lexical statistics can be explored to generate a baseline for comparison with experimental data. Part of this project involves the development of grapheme-phoneme conversion tools — it is very difficult to examine phonological patterns in written data without access to phonetic transcription. The Fonology package is directly connected to this project, covering Portuguese, French, Italian, and Spanish. Matéo Levesque worked on grapheme-phoneme conversion scripts for French. These posts are part of the project’s knowledge mobilization efforts.
Guilherme D. Garcia
Introduction
As we saw in the previous article, the goal of transcription in Fonology is to take textual data in French and encode it phonologically. In this article, we will take a closer look at how to use regex to perform phonemic transcription in French.
Transcription
Transcription is divided into several important steps that follow a specific structure. These steps are: cleaning, handling exceptions, applying transcription rules, and final cleaning.
Cleaning
Before transcribing words, the data must be cleaned. To do this, all characters are converted to lowercase and all punctuation marks are removed. Once the cleaning is done, transcription can begin.
Exceptions
In French, spelling is relatively generalizable,5 but many words still have irregular spelling. These unique words, such as “monsieur”, “hier”, or “yeux”, must be transcribed first if we want to avoid our transcription rules replacing the spelling that allows us to identify them.
Applying the rules
It would be impossible to present all the rules used in the module. The following rules are therefore examples that illustrate the basic concepts needed to understand the process.
There are letters (and groups of letters) that are fairly simple to transcribe, such as:
- “â” –> /ɑ/
- “gn” –> /ɲ/
- “oy” –> /waj/
- etc.
These graphemes are regular and therefore very easy to transcribe6. However, for other rules, more caution is required. The order in which rules are applied is generally very important. For example, consider two rules:
- A : “u” –> /y/
- B : “ou” –> /u/
If rule A is applied before rule B, there is no problem. However, if rule B is applied before rule A, all “u” will become /y/, since the program does not distinguish between the character “u” and the phoneme /u/.7
Temporary replacements
In some cases, even changing the order of the rules does not fix the errors. To address this, we used temporary replacements. This method makes it possible to specify whether a letter has already been transcribed or not. For example, consider the following rules:
- A : “ées”, “és”, “ée” and “é”8 –> /e/
- B : “e” –> /ə/
At first, the rules are in a problematic order, because rule A will lose its effect due to rule B. However, if we try to reorder the rules, we still observe a problem: “ées” and “ée” will be transcribed as /eə/. It is in cases like this that temporary replacements can be used.
Keeping the order described above, we can modify rule A as follows:
- A : “ées”, “és”, “ée” and “é” –> “E”
- B : “e” –> /ə/
As a result, rule B no longer targets the output of rule A, since it is now an uppercase letter.
Final cleaning and last transcriptions
If temporary replacements are used, the result is functional but not yet a phonemic transcription. It is therefore necessary to convert the temporary characters into the correct phonemes. It is also in this stage of transcription that geminate consonants are reduced to their non-geminate equivalents. For example: “tt” –> /t/.
Conclusion
So, in order:
- Clean the data.
- Handle exceptions.
- Apply the rules that have priority (to avoid rewriting our transcriptions).
- Apply the remaining rules whose order matters less.
- Convert temporary replacements into the appropriate phonemes.
- Finalize the remaining transcriptions.
This summarizes how French phonemic transcription works in Fonology.
Although solutions have been proposed for the issues presented above, transcription can sometimes still be incorrect. In the next article, we will examine other difficult problems when using regular expressions. We will also look at some limitations of this method.
Copyright © Guilherme Duarte Garcia
Notes de bas de page
Le français exige une fenêtre d’analyse fréquemment plus longue que celle utilisée en portugais ou en espagnol, par exemple, où un seul caractère est souvent remplacé par un symbole phonétique non ambigu.↩︎
En effet, si nous avions une langue dont l’orthographe représentait parfaitement les sons, les expressions régulières permettraient une transcription parfaite (100 % de précision)↩︎
Il y a donc un parallèle entre l’application des règles de remplacement (regex) et les règles phonologiques.↩︎
Ici, j’exclus volontairement les mots finissant par “er”, “ai”, “ez” et autres pour des raisons de simplicité et d’économie.↩︎
French often requires a longer analysis window than languages such as Portuguese or Spanish, where a single character is often replaced by an unambiguous phonetic symbol.↩︎
Indeed, if we had a language whose spelling perfectly represented its sounds, regular expressions would allow for perfect transcription (100% accuracy)↩︎
There is therefore a parallel between the application of replacement rules (regex) and phonological rules.↩︎
Here, I deliberately exclude words ending in “er”, “ai”, “ez”, and others for reasons of simplicity and efficiency.↩︎