ETYMO

La meilleure définition d’ETYMO est probablement celle d’une « machine étymologique abstraite » qui, grâce à un certain « langage », peut être « programmée » de façon à produire des étymologies dans une langue spécifique. Du point de vue informatique, ETYMO peut être considéré comme un « interpréteur de formules linguistiques » : dans une première phase (parsing), le programme lit des « définitions » (contenues dans ce que nous appelons un « catalogue de règles ») qu’il traduit dans des structures internes exécutables. En combinaison avec l’interpréteur, ces structures forment un « algorithme complexe » qui permet de calculer des étymologies dans une langue donnée. Cet algorithme peut être exécuté (phase de l’interprétation à proprement parler) soit en l’appliquant à des unités lexicales isolées (mots individuels), soit à des ensembles de mots plus larges (corpus). Schématiquement, tout calcul effectué par ETYMO requiert donc deux informations : (1) un « catalogue de règles » qui définit l’évolution diachronique d’une langue et (2) le matériel linguistique – mots individuels ou en corpus – auquel le calcul s’applique :


catalogue de regles ="interprete"=> programme=interpréteur de regles ="applique"=> mots: individuels ou corpus

Dans les chapitres suivants, nous présenterons le « langage » qui sert à « programmer » ETYMO. Notons que, d’un point de vue scientifique, une telle présentation doit surtout aborder deux aspects du formalisme, à savoir (1) sa syntaxe et (2) sa sémantique. Étant donné qu’une séparation stricte des deux aspects aurait aboutit à un exposé relativement austère et peu lisible et que, outre cela, ils sont souvent interdépendants, nous avons essayé de trouver un juste milieu afin de les aborder ensemble.

Nous aurons aussi à présenter les différents types de calculs qui peuvent être effectués une fois qu’une certaine programmation a eu lieu. Ceci nous amènera à parler des différents types de résultats ainsi que des opérations disponibles pour sauvegarder les étymologies calculées. Afin de compléter le tour d’horizon, nous exposerons aussi quelques principes généraux qui caractérisent le calcul. En vue d’une future amélioration du programme, nous aimerions finalement consacrer quelques pages à la documentation de certains aspects relevant de l’implémentation même de celui-ci.

Le catalogue de règles

Le catalogue de règles est un fichier ASCII(1) composé de quatre parties différentes qui contiennent les définitions (1) des traits distinctifs (features), (2) des caractères littéraux (litterals), (3) des symboles (symbols) et (4) des règles proprement dites (rules). Afin que ces différentes parties puissent être reconnues par le programme, elles doivent être délimitées par des mots-clés du type @defpartie et @endpartie, donc @deffeatures@endfeatures pour les traits distinctifs, @defliterals@endliterals pour les caractères littéraux, @defsymbols@endsymbols pour les symboles, @defrules@endrules pour les règles. L’ordre susmentionné des définitions doit être respecté étant donné que les traits sont utilisés pour définir les littéraux et les symboles qui, à leur tour, sont utilisés pour formuler des règles.

Traits distinctifs (features)

Tandis que le système phonologique de PHONO repose sur des traits distinctifs binaires, ETYMO introduit ce que nous appelons des traits distinctifs multiples. Cela veut dire que chaque trait peut contraster non seulement avec sa forme négative ([+x] s’oppose à [-x]), mais avec un nombre quelconque de traits ([+x] s’oppose à [+y] qui s’oppose à [+z] etc.). Si nous nous sommes décidés à « rompre » avec le système binaire traditionnel, c’est qu’il force parfois l’utilisateur à des définitions qui paraissent illogiques. Prenons l’exemple des consonnes qui se caractérisent par leur « lieu d’articulation » qui peut être « bilabial », « labio-dental », « alvéolaire », « dental », « palatal », « vélaire », « laryngal » etc. Dans un système binaire, on est obligé de définir un trait pour chaque lieu articulation. Chaque trait peut ensuite avoir deux valeurs (« + » ou « – »), ce qui donne des définitions du style



ldent

bil

alv

dent

pal

vel

lar

/t/

-

-

-

+

-

-

-

/b/

-

+

-

-

-

-

-


Nous constatons que seul un trait peut avoir la valeur « + » par phonème : en effet, pour des raisons évidentes, une consonne ne peut pas s’articuler à deux endroits différents en même temps, ce qui veut dire que les traits s’excluent mutuellement. C’est pour cette raison qu’il nous semble plus logique de définir des groupes de traits. Chaque phonème peut ensuite « sélectionner » un (et exactement un) trait par groupe, comme l’illustre le schéma suivant pour /b/ et /x/ :


<tableau>

Le système de traits multiples n’exclut pas la possibilité de définir des oppositions binaires : tous les groupes contiennent par défaut un élément « zéro » qui s’oppose à tous les traits du groupe. Lorsque le groupe ne contient qu’un seul trait, celui-ci et l’élément « zéro » forment donc une opposition binaire.

Définition des groupes

Tout au début du catalogue de règles se situent les définitions des traits distinctifs. Celles-ci doivent respecter la syntaxe suivante :

     n := { t1, t2, .., tm }     m e N+(2)

n désigne le nom du groupe et t1, t2, ..., tm représentent les traits distinctifs qui lui appartiennent. On pourrait donc définir un groupe « articulation » qui contiendrait les lieux d’articulation des consonnes :

     articulation := { bil, ldent, alv, dent, pal, vel, lar }(3)

Dans un tel groupe, chaque trait peut être décrit par deux coordonnées, à savoir le nom du groupe (n) et celui du trait (tx, avec 1 £ x £ m). Pour abréger, nous introduisons deux notations différentes pour désigner ces traits : (1) une notation longue [n,tx] qui contient les deux coordonnées et qui est donc aussi précise que possible, et (2) une notation brève [tx] qui fait abstraction du nom du groupe. Etant donné qu’ETYMO exige que le nom des traits soit univoque, celui du groupe n’est, en principe, pas nécessaire pour identifier le trait. Nous utiliserons donc de préférence la deuxième notation.

Dans un tel groupe, chaque trait [tx] s’oppose à tous les autres traits [t1], [t2], .. [tx-1], [tx+1] .., [tm], mais en même temps, il s’oppose aussi à un « trait zéro » [0]. Chaque groupe contient donc exactement m+1 éléments. Grâce à ce trait zéro il est possible de définir des traits binaires traditionnels, comme par exemple

     accent := { ton }

où la valeur [accent,ton] s’oppose à la valeur [accent,0], opposition qui, comme nous le verrons plus tard, pourra aussi être notée [+ton] vs [-ton].

Hiérarchisation des traits

Nous avons dit que chaque phonème « sélectionne » un certain nombre de traits provenant de plusieurs groupes. Ce fait doit forcément soulever la question de savoir si tous les traits ou groupes peuvent être combinés(4). Il semble, en effet, que certaines combinaisons ne font pas de sens ou devraient même être considérées comme interdites : ainsi, le trait [+ton] qui indique l’accent d’une voyelle ne doit probablement pas s’appliquer aux consonnes, c’est-à-dire aux phonèmes qui présentent le trait [+cons]. On pourrait donc dire que le trait [+ton] est incompatible avec le trait [+cons], ou – si nous inversons la perspective – que le trait [+ton] exige la présence du trait [+voc].

Il existe donc, pour chaque groupe, un certain nombre de traits qui déterminent sa validité. Afin de tenir compte des dépendances qui existent entre les traits, ETYMO offre la notation suivante :

     d1, d2, .., dk : n := { t1, t2, .., tn }     m, k e N+

d1, d2, ..., dk désignent ce que nous appelons les « traits dominants », par opposition aux « traits dominés » représentés par t1, t2, ..., tm. Les traits dominants se caractérisent donc par le fait qu’ils doivent être présents pour que les traits t1, t2, ..., tn du groupe n soient valables.

Afin de donner un exemple concret de cette notation, voici une version complétée des définitions amorcées dans les paragraphes précédents :

          : type         := { cons, voc } (5)
     cons : articulation := { bil, ldent, alv, dent, pal, vel, lar } 
     voc  : articulation := { ant, cent, post }

Nous définissons donc un premier groupe « type » qui n’est dominé par aucun trait, ce qui veut dire qu’il est global (et qu’il peut être combiné avec n’importe quel groupe). Ensuite, nous définissons deux groupes qui, quoiqu’ils portent les deux le nom « articulation », n’ont pas la même signification : le premier (avec les traits [±bil], [±ldent] etc.) n’est valable que pour les consonnes, tandis que le deuxième (avec [±ant] « antérieur », [±cent] « central », [±post] « postérieur ») ne peut être combiné qu’avec des voyelles.

Notons qu’il est possible d’indiquer plusieurs traits dominants, qui, dans ce cas, doivent être séparés par des virgules. Lorsqu’un groupe est dominé par plusieurs traits, ceux-ci « partagent » les traits du groupe. On pourrait, par exemple, définir un groupe de traits binaire « durée » avec les éléments [+long] vs [-long] qui serait valable pour les consonnes aussi bien que pour les voyelles :

     cons, voc : durée := { long }

Si le groupe « durée » pouvait être combiné avec n’importe quel groupe (et qu’il soit donc valable pour tous les groupes sans exception), on pourrait aussi ne pas indiquer de trait dominant tout simplement :

               : durée := { long }

Dans ce cas, les groupes « type » et « durée » seraient, les deux, globaux. Comme nous le verrons en relation avec les traits non phonologiques(6), tous les groupes globaux peuvent être combinés entre eux.

Vu que les traits « dominés » peuvent être à leur tour « dominants », ces relations de validités peuvent créer de véritables « hiérarchies » qui ont une influence notamment sur le calcul : ainsi, chaque fois que le trait d’un phonème est modifié, le programme établit sa validité à l’intérieur de l’arbre hiérarchique pour effacer ensuite, si nécessaire, tous les traits inférieurs au trait en question, c’est-à-dire tous les traits dominés par lui (infériorité directe) ou tous les traits dominés par des traits qu’il domine (infériorité indirecte). Cela veut dire, par exemple, que lorsqu’on transforme une voyelle en consonne, tous les traits dominés par [+voc] (donc tous les traits valables pour les voyelles) sont effacés, exception faite de ceux que le trait [+voc] partage avec le trait [+cons](7).

Le système hiérarchique tel que nous venons de le présenter, constitue, à nos yeux, une solution idéale par rapport au problème des validités. Malheureusement, il reste théorique dans la mesure où, quoique prévu et en partie implémenté dans la version UNIX, il a dû être simplifié, pour des raisons de temps, dans la version MS-DOS. Dans celle-ci, le système de validités a été remplacé par un système de « priorités » où chaque groupe de traits est pourvu d’une valeur (p) entre 0 et 9 :


      p : n := { t1, t2, .., tn }

Par définition les numéros bas dominent les numéros plus élevés, c’est-à-dire un groupe de la priorité x domine tous les groupes ayant une priorité p > x. La seule exception est la priorité 0 qui est réservée aux traits non phonologiques(8). Voici, à titre d’exemple, les définitions données plus haut transcrites, cette fois-ci, pour la version MS-DOS :


     1 : type         := { cons, voc }
     2 : articulation := { bil, ldent, alv, dent, pal, vel, lar }
     2 : articulation := { ant, moy, post }

Contrairement à la version UNIX, il n’est pas clair, ici, avec quels traits les deux groupes « articulation » peuvent se combiner (ils pourraient ici être combiné à la fois avec [+cons] et [+voc], ce qui constitue un certain défaut théorique). Par contre, le traitement lors du calcul reste, pour l’essentiel, le même, c’est-à-dire que chaque fois qu’un trait avec une priorité x est modifié, tous les traits avec une priorité p > x sont effacés(9).

Traits non phonologiques

ETYMO distingue entre deux types de traits : ceux phonologiques et ceux non phonologiques. Tandis que les premiers – comme leur nom l’indique – sont en rapport avec les phonèmes, les seconds s’appliquent au mot : c’est-à-dire que si les traits phonologiques servent à caractériser les phonèmes du mot, les traits non phonologiques servent à caractériser le mot lui-même en tant qu’unité sémantique, syntaxique, grammaticale etc. Un trait non phonologique permet, par exemple, de distinguer entre un cas sujet ou régime (trait « grammatical »), entre un verbe inchoatif ou non inchoatif (trait « sémantique »), entre un emploi proclitique ou enclitique (trait « syntaxique »), etc.

La définition des traits non phonologiques est la même que celle des traits phonologiques, sauf qu’ils doivent être marqués comme « non dominés » dans la version UNIX et avec une priorité 0 dans la version MS-DOS. Voici, à titre d’exemple trois groupes de traits grammaticaux :


version UNIX :
: cas := { nom, gen, acc, dat, abl, voc } (10)
: genre := { m, f, n }
: nombre := { sg, pl }
version MS-DOS :
0 : cas := { nom, gen, acc, dat, abl, voc }
0 : genre := { m, f, n }
0 : nombre := { sg, pl }

A l’aide de ces groupes, il est donc possible de déterminer un mot par rapport à son cas (six cas possibles), par rapport à son genre (masculin, féminin ou neutre) ou par rapport à son nombre (singulier ou pluriel).

Du point de vue technique, les traits non phonologiques sont liés au mot de la même façon qu’un trait phonologique, sauf que le phonème porteur du trait est, cette fois-ci, ce que nous appelons un « son factice » (dummy sound) : il s’agit d’un phonème « muet » qui se trouve tout au début du mot et qui est représenté par le caractère « @ ». Nous en parlerons plus en détail au chapitre « frontières » et « mots ».

Caractères littéraux (literals)

Les caractères littéraux (ou « littéraux », en bref) correspondent aux phonèmes d’un mot. Comme ceux-ci peuvent être considérés comme des « traits distinctifs simultanés »(11), la définition consiste à leur assigner un certain nombre de traits. Cela peut être obtenu par la notation suivante :

     l := [ t1, t2, .., tn ]     n e N+ (12)

t1, t2, ..., tn désignent des traits préalablement définis et l représente une lettre. Des 256 caractères théoriquement disponibles sur l’ordinateur, tous ne peuvent pas être utilisés : sont exclus par avance les caractères prédéfinis par le système d’exploitation (en général les codes ASCII 0 – 30 environs), les chiffres (0, 1, 2, ..., 9), les majuscules (qui, elles, sont réservées aux symboles), les autres caractères prédéfinis par le programme (essentiellement >, /, –, +, _, :, ., #, !, &, ?, @ et la virgule) ainsi que toutes les parenthèses(13). Il reste donc, pour l’essentiel, les minuscules ainsi que des caractères spéciaux du style à, á, â, ã, ä, å, ß, d, ñ, ç etc.(14) Voici, à titre d’exemple, la définition des cinq voyelles principales a, e, i, o, u en latin :


     i := [ voc, haut, ant ]
     e := [ voc, moy, ant ]
     a := [ voc, bas, cent ]
     o := [ voc, moy, post ]
     u := [ voc, haut, post ]

Ces définitions sont donc basées sur un triangle vocalique constitué par deux axes qui, par rapport à leur « lieu d’articulation », pourraient être qualifiés d’« horizontal » (avec les valeurs [+ant] « antérieur », [+cent] « central » et [+post] « postérieur ») et de « vertical » (avec les valeurs [+haut], [+moy] « moyen », [+bas]).


[+haut]

i




u

[+moy]


e


o


[+bas]



a




[+ant]

[+cent]

[+post]


A ces définitions de base, on pourrait ajouter d’autres traits tels que [+ouv] vs [+ferm] ou [+long] vs [+bref] pour distinguer les variantes ouvertes / fermées et longues / brèves de chacune de ces voyelles.

Symboles (symbols)

Tandis que les littéraux correspondent à un (et exactement un) phonème, les symboles décrivent certaines catégories de phonèmes. La définition d’un symbole est pratiquement identique à celle d’un littéral, sauf que les traits (t1, t2, .., tn) doivent être précédés soit par « – », soit par « + » et que le caractère qui est censé représenter le symbole (s) doit être une majuscule :

     s := [ +-t1, +-t2, .., +-tn ]     n e N+ (15)

Lorsqu’un trait est précédé par « + », cela signifie qu’il doit être présent dans le phonème en question. Au contraire, lorsqu’il est précédé par « – », il ne doit pas être présent. Voici deux exemples qui illustrent le fonctionnement des signes :

     B := [ +cons, +bil ]
     O := [ +cons, -nas ]

Dans le premier, B représente les consonnes bilabiales (p, b, m), c’est-à-dire tous les phonèmes qui contiennent à la fois les traits [+cons] et [+bil]. Dans le deuxième, O se rapporte aux consonnes « non nasales » (ou « orales »), c’est-à-dire tous les phonèmes qui contiennent [+cons], mais pas [+nas].

En règle générale, les différents traits maintiennent entre eux un rapport de conjonction, c’est-à-dire que toutes les conditions doivent être remplies pour que le phonème corresponde au symbole. Il existe, cependant, une exception importante à cette règle : lorsqu’un symbole contient plusieurs traits du même groupe précédés par « + », il suffit qu’un des traits énumérés soit présent. Dans la définition


     H := [ +voc,+post, +ant ]
                 (même groupe)

par exemple, où les traits [+haut] et [+moy] proviennent du même groupe, le phonème remplit la condition du symbole s’il contient soit le trait [+haut], soit le trait [+moy]. Dans ces cas, il est important d’observer que les traits doivent se suivre immédiatement dans la définition. Il ne serait donc pas correct d’écrire


     H := [ +voc,+post, +ouv, +ant ]         faux : [+post] et [+ant] sont séparés

Vu l’équivalence


     H := [ +cons, +post, +ant ]      <=>     H := [ +voc, -cent ]

la deuxième forme est à préférer puisqu’elle est plus courte.

Notons qu’il existe aussi trois symboles prédéfinis ?, & et @ qui ont des significations particulières :

? : se réfère à un « phonème quelconque ». N’importe quel terme symbolique peut être remplacé par un terme commençant par ‘?’. Ainsi,

     V[+ton]        <=>     ?[+voc,+ton]
     C[+bil,+son]   <=>     ?[+cons, +bil, +son]

sont parfaitement équivalentes(16).
& : représente un « phonème vide ». Il ne peut contenir que des frontières et il est utilisé pour déterminer la structure syllabique d’un mot(17) ou pour préserver les frontières d’un phonème (dans la conséquence). Notons que le phonème vide coïncide toujours avec le phonème précédent.
@ : représente le « phonème factice ». Le phonème factice – qui n’est pas un phonème à proprement parler – se trouve au tout début d’un mot et contient les traits non phonologiques ainsi que la première frontière de celui-ci.


Bien qu’il s’agisse de symboles prédéfinis, ils disposent des mêmes possibilités que ceux définis par le linguiste et peuvent donc être combinés en termes(18).

Règles (rules)

Les règles, qui constituent sans doute la partie la plus importante et complexe du catalogue, obéissent à un formalisme que nous aimerions présenter en trois étapes : nous parlerons d’abord de la structure des règles en général. Nous présenterons ensuite les éléments qui s’inscrivent dans cette structure de base. Finalement, nous reviendrons sur la structure de base afin d’expliquer la coopération entre les différentes parties d’une règle.

Structure de base

Chaque règle – de quelque complexité qu’elle soit – suit un modèle de base assez simple qui est le suivant :


     [T:] A > B [/ [C] -- [D]] [ : K]

Les caractères gras (« : »,  « > », « / », « -- ») servent à structurer la règle et ne peuvent pas être modifiés, tandis T, A, B, C, D et K sont des variables qui signifient :


variable

désignation

fonction

T

temps

moment où la règle s’applique

A

condition

suite de phonèmes qui subira la transformation

B

conséquence

transformation que A subira

C -- D

contexte

(-- = "focus")

ce qui se trouve à gauche et à droite de A

K

commentaire

description (linguistique) de la transformation


Les éléments entre crochets sont optionnels. Il existe donc différents formats de règles :


        A > B                              forme la plus simple
     T: A > B / C –– D   : K               forme la plus complète
        A > B / C –– D
        A > B /   –– D                     formes intermédiaires
        A > B            : K 		
     T: A > B

Du point de vue sémantique, une règle n’est rien d’autre qu’une implication logique du type «  SI A [entre C et D], ALORS B », c’est-à-dire si un mot remplit la condition [C] A [D], la partie A subira la transformation décrite dans B.

Cette notation, prévue initialement pour la version UNIX, n’a malheureusement pas pu être implémentée telle quelle dans la version MS-DOS : celle-ci n’admet pas de contextes ce qui veut dire que toute règle du type



     (i)      A > B / C –– D

doit être formulée comme


     (ii)     C A D > C B D

Cette reformulation ne pose aucun problème lorsque le contexte (C et D) ne contient pas d’éléments disjonctifs(19). Dans tous les autres cas, il peut arriver que ce qui constitue une seule règle dans la version UNIX doive être formulé en plusieurs règles dans la version MS-DOS(20). Bien que cette restriction du formalisme constitue sans doute un certain désavantage (dans la mesure où plus de règles seront nécessaires pour décrire la même quantité de transformations), elle ne nuit finalement pas (ou très peu) à la fonctionnalité effective du programme.

Unités minimales

Les parties centrales des règles – condition, conséquence et contexte – décrivent des séquences de phonèmes en recourant à ce que nous appelons des « unités minimales ». Ces unités sont au nombre de trois : ce sont (1) les termes (symboliques ou littéraux) qui se réfèrent à un seul segment dans le mot à calculer, (2) les jokers qui se rapportent à plusieurs segments et (3) les listes qui représentent des combinaisons plus complexes de termes et de jokers (et qui peuvent se référer à un ou plusieurs segments).

Termes

Un terme est une séquence de caractères qui se réfère à un (et exactement un) segment dans mot à calculer. Chaque terme contient un caractère de base (B) qui peut être soit un symbole, soit un phonème. Ce caractère peut être suivi d’un marqueur (M), d’une liste de traits supplémentaires (t1, t2, .., tn) ainsi que d’une ou de plusieurs frontières (F) :


     B M [t1,t2, ..., tn] F

Tous les éléments sauf B sont optionnels : un terme peut donc se composer d’un seul caractère – un symbole ou un littéral tels que C, V, a, b, m etc. – ou, au contraire, de séquences assez longues comme par exemple a1[+ouv,+ton]|!# ou C[+ocl,-son]#.

Le symbole ou le littéral qui sert de caractère de base (B) doit avoir été défini, au préalable, dans la section correspondante(21). Quant au marqueur (M), il s’agit d’un chiffre entre 1 et 9 qui identifie de manière univoque le phonème auquel le terme correspond. Les marqueurs jouent un rôle important notamment dans la conséquence de la règle(22). En ce qui concerne les traits supplémentaires (t1, t2, ..., tn), il s’agit de traits phonologiques qui s’ajoutent au caractère de base. Chacun de ces traits doit être précédé par « + » ou « – » qui ont, ici, exactement la même signification que dans la définition des symboles et des littéraux(23) : une expression telle que a[+ton] signifie donc que non seulement le phonème doit être a (ce qui revient à dire qu’il doit contenir tous les traits qui ont été définis pour ce littéral), mais que, outre cela, il doit aussi contenir le trait [+ton]; l’expression a[-ouv], par contre, signifie que le phonème ne doit pas contenir le trait [ouv](24).

Quant aux frontières (F), elles sont représentées par les caractères |, + et # dont chacun a une signification particulière :

     | = frontière de syllabe
     + = frontière de morphème
     # = frontière de mot

Lorsqu’un terme contient plusieurs frontières, l’ordre « | avant + avant # » doit être respecté. Chaque frontière peut être niée par le caractère « ! » qui doit précéder immédiatement la frontière correspondante(25).

Jokers (wild cards)

A la différence des termes, les jokers peuvent se référer à zéro, à un ou à plusieurs segments dans le mot à calculer. Ils servent essentiellement à formuler des règles qui décrivent des « transformations à distance »(26). Ces transformations se caractérisent par le fait que les phonèmes qui se trouvent entre ceux modifiés, restent intacts et n’ont, dans la plupart des cas, pas d’influence sur celles-ci.

Un joker se compose d’un caractère de base (J) suivi par un marqueur optionnel (M) qui est à nouveau un chiffre entre 1 et 9 :


     J M

Il existe deux types de jokers différents que nous appelons, en fonction du caractère qui les représente, le joker-point (« . ») et le joker-astérisque (« * »). La différence entre les deux consiste dans leur comportement par rapport aux frontières de syllabe : tandis que le joker-astérisque peut dépasser les frontières de syllabe (représentées par « | »), le joker-point ne le peut pas. Voici, à titre d’exemple, l’application des deux jokers dans le mot @#mu|rum#(27) :


joker

partie(s) affectée(s)

C * C

mu|r ET rum

C . C

rum


En combinaison avec le phonème vide &(28), le joker-point peut être utilisé, notamment, pour déterminer la structure syllabique d’un mot :


     @# . V . &| . V . &| . V . &#  (29)

Cette suite de caractères désigne donc n’importe quel mot de trois syllabes. Afin de pouvoir mieux illustrer le fonctionnement exact de ce joker et notamment les correspondances possibles qui peuvent s’établir dans le calcul concret, voici son application aux mots @#fa|bu|lam# et @#le|gum|bre# (30). Nous avons numéroté les différents éléments – termes et jokers – afin de rendre visibles leurs correspondances respectives :


     @# . V . &| . V . &|  .  V  . &#
     0  1 2 3 4  5 6 7 8   9 10 11 12
dans @#fa|bu|lam# (i) :
0 = @#(31) 4 = &|(32) 8 = &|(33) 12 = &#(34)
1 = F      5 = B      9 = L
2 = A|     6 = U|    10 = A
3 = –      7 = –     11 = M#
dans @#le|gum|bre#(ii) :  
0 = &#     4 = &|     8 = &|     12 = &#(35)
1 = L      5 = G      9 = BR
2 = E|     6 = U     10 = E#
3 = –      7 = M|    11 = – 

Ces exemples montrent qu’un joker peut correspondre à zéro (voir i : 3, 7 ; ii : 3, 11), un (voir i : 1, 2, 5 etc.) ou plusieurs (voir ii : 9) phonèmes.

Listes

ETYMO distingue deux types de listes, à savoir (1) des listes simples et (2) des listes récursives. Dans les deux cas, la liste contient un certain nombre d’éléments qui se situent entre deux accolades. La liste simple est utilisée dans la conséquence où elle exprime une « évolution multiple ». Elle obéit à la syntaxe suivante :

     { e1, e2, .., en }     n e N+, n > 1

Une telle liste n’est donc rien d’autre qu’une énumération linéraire d’un certain nombre (n) d’éléments (e1, e2, .., en) qui se trouvent tous au même niveau.

Dans une liste récursive, par contre, chaque élément (e1, e2, .., en) peut être soit un élément simple (comme dans la liste simple), soit une liste. En d’autres termes, une liste récursive se caractérise par le fait qu’elle peut, à son tour, contenir des listes :


L
x1,2,..,n
=
=
{ x1, x2, .., xn }        n e N+
soit: un élément simple (ei)
soit: une liste (L)

Les listes récursives sont utilisées notamment dans le contexte où elles désignent des éléments disjonctifs(36).

Les différentes parties d’une règle

Les unités minimales (termes, jokers et listes) sont utilisées dans les parties centrales (condition, conséquence et contexte) des règles. Outre cela, ces dernières peuvent contenir un temps et un commentaire. Par la suite, nous expliquerons plus en détails les fonctions de ces différentes parties.

Temps

La variable optionnelle T désigne le moment (approximatif) où la règle produit le changement. Elle doit être un nombre entier qui peut prendre des valeurs positives (par exemple +100 ou tout simplement 100) ou négatives (-100, ce qui peut correspondre à une date « av. J.-Chr. », par exemple). T intervient dans le calcul dans la mesure où l’on peut indiquer, pour chaque mot, le moment où il entre dans le calcul(37). Lorsque l’utilisateur fait usage de cette possibilité, l’ordinateur vérifie la date de chaque règle et ne l’applique que dans le cas où celle-ci est postérieure à la date du mot. Après l’application de la règle, la nouvelle forme reçoit la date de celle-ci. Si une règle n’est pas datée de manière explicite, mais qu’elle a été précédée par une règle dont la date était postérieure à celle du mot, l’ordinateur déduit qu’elle peut aussi être appliquée (ETYMO procède donc à une datation implicite des règles). Dans ces cas, la date de la nouvelle forme est indiquée comme ‘x++’, ce qui veut donc dire « postérieur au moment x »(38).

Condition

La condition (A) se compose d’une séquence d’éléments (a1, a2, .., an) qui peuvent être soit des termes, soit des jokers. Ceux-ci décrivent une suite de phonèmes que le mot doit contenir :

     A := a1 a2 .. an       n e N+ (39)

Ces éléments entretiennent entre eux un rapport logique de conjonction, c’est-à-dire que tous doivent être vrais pour que la condition soit remplie.

Conséquence

Il existe deux types différents de conséquences : (1) la conséquence simple et (2) la conséquence multiple. Bien que, du point de vue technique, ces deux types soient identiques(40), leur notation diffère légèrement :


conséquence simple :    A > B1
conséquence multiple :    A > { B1, B2, .., Bn }     n e N+

La conséquence multiple doit donc être entourée de deux accolades et les différents éléments (dont chacun représente une conséquence simple) doivent être séparés par des virgules. Dans les deux cas, le ou les élément(s) Bx se compose(nt) d’une suite de termes ou de jokers (b1, b2, .., bn) qui décrivent une transformation :

     Bx := b1 b2 .. bn     n, x e N+


Etant donné que cette transformation décrite par b1, b2, .., bn affecte les éléments référencés par a1, a2, .., am, il se pose le problème de savoir à quel(s) phonème(s) se réfèrent les différents éléments de la conséquence. En d’autres termes : chaque élément bx de la conséquence doit être assigné à l’élément correspondant ay de la condition. Il existe deux méthodes pour assurer une assignation correcte, à savoir celle implicite et celle explicite.

La méthode implicite – qui est celle utilisée par défaut – assigne les termes et les jokers selon leur ordre d’apparition. Dans la règle


     V C[+sourd] V > V C[+son] V 

le programme assigne les termes de la façon suivante :


     condition& :    V  C[+sourd] V
                     |  |         |
     conséquence :   V  C[+son]   V

Notons que c’est l’ordre individuel de chaque symbole ou littéral qui importe. Donc, même si on a des règles comme

     V C V > V V C
ou :      V C V > C V V

où la conséquence ne respecte pas l’ordre absolu (V avant C avant V) de la condition, les deux voyelles (V) et la consonne sont assignées séparément (on aurait donc, dans ce cas aussi, des correspondances V1 Û V1, V2 Û V2, C1 Û C1).

La méthode implicite, bien que pratique, atteint vite ses limites : dès que la conséquence contient plus ou moins de symboles ou de littéraux que la condition, il est impossible de savoir quelles correspondances il faut établir entre eux. Parfois, même si le nombre des éléments est le même, les correspondances ne sont pas évidentes. Pour éviter tout malentendu, il existe donc la possibilité de recourir à la méthode explicite. Celle-ci utilise des marqueurs afin de définir des relations univoques entre les termes. Cette méthode permet non seulement d’assurer une assignation correcte des termes, mais encore d’inverser l’ordre des éléments où d’ajouter plusieurs fois le même phonème dans la conséquence :


V1 V2 > V2 V1
V1    > V1 V1
inversement de l’ordre
le même phonème est ajouté 2 fois


Les deux méthodes peuvent d’ailleurs être combinées dans la même règle :


V1 C V2 > V1 C V2     
V1, V2 = assignation explicite
C = assignation implicite


Finalement, il existe aussi la possibilité de ne pas assigner certains termes. Dans ce cas, il s’agit d’un nouveau phonème qui est inséré dans la conséquence :


p t1 > t t1(41)     
le premier t n’est pas assigné


Il est important de savoir que dès qu’un terme de la conséquence est assigné, il est copié tel quel depuis la condition. Contrairement à ce qu’on pourrait croire, la règle


p1 t2 > t1 t2
transformation zéro : #ap|ta# ® #ap|ta#


ne provoque pas d’assimilation du groupe pt, mais le laisserait intact du fait que t1 de est assigné à p1 qui est donc copié tel quel(42).

Contexte

Le contexte pourrait être défini comme une « prolongation de la condition » dans la mesure où il fait également partie de la prémisse de la règle. A la différence de celle-ci, pourtant, les phonèmes auxquels il se réfère ne peuvent pas être modifiés : le contexte ne fait que décrire ce qui doit précéder et suivre immédiatement les phonèmes désignés dans la condition, mais il ne peut subir aucune modification.

L’avantage du contexte réside en cela qu’outre les éléments conjonctifs (tels que nous les avons déjà vus dans la condition), il admet des éléments disjonctifs sous forme de listes récursives(43). Le contexte gauche ou droit peut donc être défini comme 

     C := D1 D2 .. Dn     n e N+

Dx désigne soit un élément simple (E) – terme (T) ou joker (J) – soit une liste récursive (L) contenant des éléments qui peuvent, à nouveau, être soit des éléments simples (E), soit d’autres listes récursives (L), donc

D := E v L
E := T v J
L := { X1, X2 , .. , Xm }
X := C
E = élement simple, L = liste
T = terme, J = joker
X = élement de la liste
C = contexte (voir ci-dessus)

Du point de vue sémantique, les séquences simples (D1 .. Dn) expriment un rapport de conjonction, tandis que les listes (L) désignent un rapport de disjonction. Voici trois exemples qui peuvent illustrer ces rapports :


       (i)     A > B  /  -- ab
      (ii)     A > B  /  -- { a, b }
     (iii)     A > B  /  -- { ab, cd }

Dans (i) la condition A doit être suivie ET par a ET par b. Dans (ii), la condition A doit être suivie OU par a, OU par b. Dans (iii), la condition A doit être suivie SOIT par a ET b, SOIT par c ET d.

Grâce à leur structure récursive, les contextes peuvent devenir très complexes, ce qui permet d’exprimer un grand nombre de conditions en peu de caractères. Malheureusement, seule la version UNIX peut donner une première impression de la puissance de ce formalisme, étant donné que les contextes n’ont pas été implémentés dans la version MS-DOS.

Commentaires

Chaque règle peut être pourvue d’un commentaire linguistique (K) qui décrit la transformation. Celui-ci doit se situer tout à la fin de la règle :


     A > B / C -- D             : K

Le commentaire n’a pas de format particulier : n’importe quelle suite de caractères est donc permise. Le commentaire est affiché sur l’écran lors du calcul d’un mot individuel(44).


1 Un fichier qui contient du texte, tout simplement. N’importe quel éditeur conventionnel devrait, en principe, être capable de produire de tels fichiers.

2 Dans la version actuelle (V 1.3), le nombre des traits par groupe est limité à 255. Quant au nombre des groupes, il est limité à 200.

3 Nous abrégeons les traits tel que nous le ferons aussi dans le catalogue de règles valable pour l’espagnol.

4 Dans le système binaire traditionnel, tous les traits sont globaux, ce qui signifie que n’importe quel trait peut être combiné avec n’importe quel autre. Le concept que nous suivons ici est différent puisque nous considérons que les traits sont interdépendants.

5 Lorsqu’un groupe n’est dominé par aucun trait, il est quand même nécessaire d’écrire les deux points « : ».

6 Voir ch. , p. .

7 Notons qu’à l’heure actuelle, ces fonctions n’ont pas encore été implémentées dans la version UNIX. La version MS-DOS, quant à elle, a recours à un système hiérarchique différent.

8 Voir ch. , p. .

9 Comme, dans la version MS-DOS, il est impossible d’indiquer des « traits partagés » – c’est-à-dire des groupes dominés par plusieurs traits – lors de la transformation d’un trait (dans un phonème) tous les traits inférieurs sont effacés, même si, du point de vue linguistique, ceux-ci pourraient être compatibles avec le trait dominant impliqué dans la transformation. Par exemple, si nous avons un trait [+long] avec la priorité 2 et deux traits [+voc] et [+cons] avec la priorité 1 et que, dans un phonème [+voc, +long], nous remplaçons le trait [+voc] par [+cons], le trait [+long] est effacé même si, en théorie, ce dernier est compatible à la fois avec [+voc] et [+cons].

10 Notons que le trait [+voc] « vocatif » entre en conflit avec le trait [+voc] « vocalique ». Dans la pratique, on serait donc obligé de changer un des deux noms.

11 Robins, op. cit., 1976, p. 237.

12 Le nombre n est limité à 200.

13 Outre cela, nous déconseillons aussi l’utilisation de caractères qui sont susceptibles d’obtenir une signification linguistique dans une des versions futures, par exemple des caractères tels que %, $, ‘, » etc.

14 Si nous restons assez vagues par rapport au problème des caractères qui peuvent être utilisés, c’est que cela peut, effectivement, varier de système en système, le problème de la conversion correcte des caractères spéciaux étant, d’ailleurs, un des plus anciens du domaine informatique. La meilleure méthode pour savoir si un caractère peut être utilisé ou non est celle de passer le catalogue par le parseur : si celui-ci ne signale pas d’erreur, le caractère est correct et peut être utilisé.

15 Le nombre n est théoriquement illimité. Comme le nombre des groupes est limité à 200 et comme chaque groupe peut contenir 255 traits au maximum, la valeur théorique maximale pour n est 200 x 255 = 51000.

16 Pour les crochets, voir ch. , p. .

17 Voir ch. , p. .

18 Voir ch. , p. .

19 Voir ch. , p. .

20 La règle t > d / V –– { V, r } par exemple doit être formulée en deux règles : (1) VtV > VdV et (2) Vtr > Vdr.

21 Voir ch. , p.  et ch. , p. .

22 Voir ch. , p. .

23 Voir ch. , p. .

24 Notons que les termes littéraux servent aussi à entrer le(s) mot(s) à calculer dans l‘ordinateur. Nous nous sommes décidés pour cette notation puisqu’elle permet d’exprimer des « variantes de phonèmes » sans avoir à définir un caractère spécial pour chacune de celles-ci. Cela réduit donc la quantité de caractères qui seraient nécessaires pour désigner tous les phonèmes d’une langue (au lieu de définir un caractère pour le phonème « a nasal tonique », on ne définit qu’un phonème « a nasal » – par exemple â – auquel on peut ensuite rajouter le trait supplémentaire « tonique », donc â[+ton]. On n’a donc utilisé qu’un caractère pour exprimer les deux variantes – tonique et atone – du phonème â) ce qui constitue un grand avantage étant donné que le nombre des caractères disponibles sur l’ordinateur est limité.

25 Il existe donc en tout 27 (= 3(3)) combinaisons possibles pour F, à savoir « pas de frontière »; |, !|, +, !+, #, !#; |+, !|+, !|!+, |!+, |#, !|#, !|!#, |!#, +#, !+#, !+!#, +!#; |+#, !|+#, !|!+#, !|!+!#, |!+!#, |+!#, |!+#, !|+!#. Voir aussi ch. , p. .

26 Nous pensons à des métaphonies (par exemple un i final long qui a une influence sur l’évolution de la voyelle tonique, comme c’est le cas de certains parfaits latins), à certaines dissimilations (par exemple arbore > arbol, sanguine > sangre, *rodondo > redondo etc.), à des dissimilations dites totales du style propriu > propio (ou encore trem(u)lare > *tremblar > tiemblar) ou à des métathèses (animalia > alimaña, parabola > palabra, mirac(u)lu > milagro etc.). Voir aussi ch. , p. .

27 Pour la notation des mots, voir ch. , p.

28 Voir ch. , p. .

29 Pour le caractère « @ » voir ch. , p. .

30 Pour la notation des mots, voir ch. , p. .

31 La frontière de mot est sauvegardée dans le « son factice » symbolisé par « @ ».

32 La frontière de mot est ici la même que celle référencée par l’élément 2. Le son vide coïncide donc avec le joker « . » – qui, dans ce cas-ci se trouve être vide, lui aussi –, ce qui fait qu’il coïncide finalement avec l’élément 2.

33 La frontière de mot est la même que celle référencée par l’élément 6. Voir la note précédente.

34 La frontière de mot est la même que celle référencée par l’élément 11. Voir avant-dernière note.

35 Pour 0, 4, 8, 12, remarques similaires que pour l’exemple précédent.

36 Voir ch. , p. .

37 On peut donc simuler des emprunts postérieurs ou des (semi-)cultismes comme nous l’avons suggéré au ch. , p. .

38 Voir ch. , p. .

39 Dans la pratique, n ne dépassera probablement pas le nombre 20.

40 Pour l’ordinateur, autant les conséquences simples que celles multiples sont des listes, avec la seul différence que, dans le premier cas, la liste ne contient qu’un seul élément.

41 Dans la pratique, cette règle s’écrirait plutôt p1t2 > t&1t2 pour préserver les frontières qui pourraient éventuellement se situer après p. Mais dans ce cas aussi, le premier t n’est pas assigné.

42 Voir ch. , p. .

43 Voir ch. , p. .

44 Voir ch. , p. .


Retour à la page principale << Chapitre précédent Chapitre suivant >>