Dans ce chapitre, nous présenterons quelques principes généraux qui concernent le traitement des règles par le programme. Cela nous donnera loccasion aussi de signaler quelques différences entre les deux versions.
Après avoir chargé un ensemble de n règles, ETYMO suit lalgorithme suivant pour les appliquer au mots :
Commence avec la règle x = 1
Tant que toutes les règles nont pas été traitées, répète les instructions (3) à (5)
Prend la règle x et vérifie la condition
Si la condition est remplie, applique la règle. Ensuite, répète (2) avec la même règle
Si la condition nest pas remplie, répète (2) avec la règle x+1.
Chaque règle est donc appliquée autant de fois que sa condition est vraie. Cela a comme conséquence que dans un mot tel que @#ki|wi|ta|tem# la règle VtV > VdV sapplique aux deux t intervocaliques. Tandis que, dans la plupart des cas, ce principe fournit des résultats satisfaisants, il peut être problématique dans dautres cas, notamment lorsque la règle comporte un phénomène de feeding.
Chaque règle transforme un élément A (appelé input) en un élément B (appelé output). Lorsquon a plusieurs règles qui se suivent, il peut arriver que loutput de la règle x devienne linput de la règle x+1. Ce phénomène sappelle feeding(1).
Rx : x > y | loutput de Rx devient linput de Rx+1 | |
Rx+1 : y > z |
Tandis que le feeding entre Rx et Rx+1 rend possible lapplication de Rx+1, le bleeding fait exactement linverse, cest-à-dire quil empêche lapplication de Rx+1 :
Rx : x > y | Rx+1 ne peut pas être appliqué | |
Rx+1: x > z |
A part le feeding / bleeding, le rapport entre deux règles peut aussi être indifférent :
Rx : n > m | rapport indifférent entre Rx et Rx+1 | |
Rx+1: x > y |
Lorsque ces rapports apparaissent entre deux (ou plusieurs) règles, ils peuvent être utilisés pour établir une « chronologie relative » de celles-ci(2). Il existe des cas, cependant, où des effets de feeding ou de bleeding apparaissent à lintérieur dune seule règle (nous parlons, dans ces cas, dauto-feeding / auto-bleeding par opposition au trans-feeding / trans-bleeding) :
e > ee | auto-feeding | |
e > a | auto-bleeding (ou rapport indifférent) |
Notons que lauto-feeding peut poser des problèmes en relation avec le principe de la répétition des règles : si on appliquait la règle e > ee au mot lem, le résultat serait lem > leem > leeem > leeeem > leeeeem .. et ainsi de suite, jusquà linfini. Dans ces cas, il est donc important de créer un bleeding explicite :
CeC > CeeC lem > leem
Il nous reste à signaler un cas particulier dauto-feeding qui correspond à ce que lon pourrait appeler la « règle zéro ». Celle-ci se caractérise par le fait quelle ne transforme rien, cest-à-dire que linput et loutput sont identiques :
e > e | règle zéro |
En principe, une telle règle devrait créer une série infinie dévolutions du type lem > lem > .. > lem. ETYMO, cependant, traite ces règles comme un cas particulier et ne lapplique quune seule fois. Lévolution zéro est notamment utilisée dans les conséquences multiples(3) :
x > { x, y } | conséquence multiple avec évolution zéro |
Cette règle signifie donc que lélément x peut SOIT ne pas évoluer SOIT passer à z.
Selon lalgorithme de base(4), les règles sont appliquées de manière séquentielle de la première jusquà la dernière. Les évolutions multiples, cependant, viennent bouleverser cet ordre : du fait que seule une ligne évolutive peut être calculée à la fois, le programme est obligé de revenir plusieurs fois en arrière, afin de les calculer toutes. Voici un schéma qui peut illustrer la manière dont lordinateur traite ces évolutions :
Après lapplication des règles r1 .. rx-1, le mot original m1 sest transformé en me. A ce moment, la règle rx fait bifurquer lévolution : elle donne naissance à n formes notées par m(1)e+1, m(2)e+1 .. m(n)e+1. Le programme va maintenant continuer le calcul de la ligne L1 en y appliquant les règles restantes. Ensuite, il va revenir en arrière pour continuer le calcul de la ligne L2 et ainsi de suite jusquà atteindre la dernière ligne Ln.
Lorsque le programme reprend le calcul dune ligne, il utilise la règle de reprise rr qui se définit comme suit :
ì rx+1 | dans le cas dune évolution zéro(5) | ||
rr= | í | ||
î rx | dans tous les autres cas |
Etant donné que la règle de reprise peut être rx, il faut à nouveau tenir compte des effets dauto-feeding. Une règle telle que e > { e, ee } produirait donc des bifurcations à linfini.
Lors de lexécution dune règle, lordinateur doit commencer par vérifier la condition (et éventuellement le contexte) de celle-ci. Pour ce faire, il « scanne » le mot de gauche à droite jusquà trouver une correspondance :
règle : VtV > VdV
pas : |
(1) k i w i t a t e V t V | => pas de correspondance |
(2) k i w i t a t e V t V | => pas de correspondance | |
(3) k i w i t a t e V t V | => pas de correspondance | |
(4) k i w i t a t e V t V | => correspondance | |
Une fois quune correspondance a été trouvée, le scanning est arrêté et linterpréteur applique la transformation décrite par la règle. Dans lexemple susmentionné, cela signifie donc que seul un des deux t intervocaliques est remplacé par d. Le deuxième t nécessite une nouvelle application de la règle :
pas : |
(1) k i w i d a t e V t V | => pas de correspondance |
: | ||
(6) k i w i d a t e V t V | => correspondance | |
Le programme cherche donc toujours la première occurrence dune séquence et la remplace par la séquence correspondante.
Le principe de la première occurrence, pourtant, nest valable que pour la version MS-DOS. La version UNIX, quant à elle, remplace toutes les occurrences dune séquence en une seule fois.
Une fois que la position de la séquence recherchée a été déterminée à lintérieur dun mot mn, le programme calcule le successeur immédiat mn+1. Pour ce faire, il coupe le mot en trois parties :
mn | = | p1 p2 .. pn | p1 .. pn = phonèmes dont le mot mn se compose | |
in | = | p1 .. px-1 | partie initiale | |
cn | = | px .. py | partie centrale | |
fn | = | py+1 .. pn | partie finale |
De ces trois parties, cn est celle qui subira la transformation tandis que in et fn restent intactes cest-à-dire que la nouvelle forme à calculer mn+1 peut se définir comme
mn+1 = in T(cn) fn |
où T() désigne la transformation. Celle-ci se présente comme une reconstruction complète de la partie centrale. La méthode utilisée est ici la concaténation de phonèmes. Le nombre et la constitution de ces derniers dépend, pour lessentiel, de deux facteurs : (1) de lassignation ou de la non-assignation des jokers ou des termes, et (2) des traits supplémentaires ainsi que des frontières utilisés dans ceux-ci.
Lorsquun terme ou un joker est assigné, ETYMO copie le ou les phonème(s) du mot mn. Au contraire, lorsquun terme nest pas assigné (ce qui en principe ne fait sens quavec des termes littéraux), il insère le phonème décrit par le terme :
Après la copie ou linsertion dun phonème, celui-ci peut encore être modifié par des traits supplémentaires et/ou par des frontières :
|
EXPRESSION |
SIGNIFICATION |
traits |
X[+t] |
le trait t doit être rajouté au phonème X |
frontières |
XF |
la frontière F doit être rajoutée au phonème X |
traits |
X[-t] |
le trait t doit être effacé dans le phonème X (cest-à-dire quil sera remplacé par le trait [0] du groupe correspondant(6)) |
frontières |
X!F |
La frontière F doit être supprimée dans le phonème X |
Chaque transformation passe donc par ces deux phases, à savoir (1) copie ou insertion dun phonème, et (2) modification subséquente de celui-ci.
1 Daprès le verbe anglais to feed « nourrir » : loutput de la règle se convertit en input. Le terme est utilisé, par exemple, par Carmen Pensado Ruiz, op. cit., 1984, p. 627.
2 Voir Carmen Pensado Ruiz, op. cit., 1984.
3 Voir ch. , p. .
4 Voir ch. , p. .
5 Voir ch. , p. .
6 Voir ch. , p. .
Retour à la page principale | << Chapitre précédent | Chapitre suivant >> |