4.3 Un exemple d´etaill´e d’analyseur morphologique
5.1.3 R`egles de r´e´ecriture pond´er´ees
5.1.3.1 Syntaxe
Les r`egles de r´e´ecriture pond´er´ees sont une extension des r`egles de r´e´ecriture classiques dans les formalismes d’´etats finis. Ces r`egles de r´e´ecriture d´ecrivent une transduction rationnelle et effectuent donc une mise en correspondance entre des chaˆınes de deux langages rationnels. Chacun de ces deux langages est d´efini sur un alphabet qui lui est propre, mais ces deux alphabets sont tous deux compris dans un alphabet « universel ».
On consid`ere les r`egles de la forme : φ→ ψ/λ ρ
ce qui se lit : « une occurrence de φ pr´ec´ed´ee d’une occurrence de λ et suivie d’une occurrence de ρ se r´e´ecrit en ψ», avec φ , ψ , λ et ρ des expressions r´eguli`eres pond´er´ees. Ces r`egles sont directement inspir´ees des r`egles de r´e´ecriture en phonologie. Plusieurs de ces r`egles peuvent ˆetre appliqu´ees en parall`ele ou en s´equence. On a donc une notion de grammaire d´ecrites par des expressions dont les symboles sont des r`egles de r´e´ecriture et les op´erateurs sont ",," pour l’application parall`ele et "%" pour l’application s´equentielle.
La syntaxe d’une r`egle dans Sumo est la suivante : φ "->" ψ "||" λ " " ρ
5.1 Le calcul d’´etats finis pond´er´e 99
Les quatre expressions en param`etres suivent ´evidemment la syntaxe d’expressions r´eguli`eres de Sumo et ne doivent d´ecrire que des automates, et non des transducteurs. Le contexte gauche ou droit peut ˆetre vide, et dans le cas des r`egles inconditionnelles (qui s’appliquent quelque soit le contexte), toute la partie de description du contexte de la r`egle peut ˆetre omise (par exemple, la r`egle a -> b est plus simple `a ´ecrire que a -> b || ).
5.1.3.2 S´emantique
L’application d’un ensemble de r`egles parall`eles `a un automate peut se comprendre en consid´erant ind´ependamment chaque chemin. L’automate r´esultat est l’union du r´esultat de l’application des r`egles `a chacun de ces chemins.
Pour un chemin donn´e, on applique les r`egles de gauche `a droite. Une r`egle donn´ee peut s’appliquer si le membre gauche de la r`egle est bien pr´esent dans le chemin dans le contexte d´ecrit par la r`egle, auquel cas la partie non-contextuelle est « consomm´ee » et mise en correspondance avec le membre droit dans la chaˆıne r´esultat. Tous les symboles non consomm´es sont recopi´es tels quels. Plusieurs chemins peuvent ˆetre produits pour un seul chemin donn´e.
Par exemple, ´etant donn´ees les deux r`egles
a b -> e f || _ c ,, b c -> f g || a _ d;
et la chaˆıne en entr´ee babcd, on aura les deux r´esultats suivants : b a b c d b a b c d
| | | | | | | | | | b e f c d b a f g d
Dans le premier cas, c’est la premi`ere r`egle qui s’applique pour r´e´ecrire ab en ef ; dans le deuxi`eme cas, c’est la deuxi`eme qui r´e´ecrit bc en fg.
5.1.3.3 Exemple de compilation et d’application
Un jeu de r`egles est compil´e par Sumo sous la forme d’un transducteur. L’application de ce jeu de r`egles se fait par le biais de l’op´erateur de composition % comme le montre cet exemple. Soit les deux r`egles parall`eles suivantes d´ecrivant le transducteur $R :
$R = a b -> e f || _ c ,, b c -> f g || a _ d
On voit le r´esultat de la compilation de ces r`egles dans la figure 5.6. Mˆeme si le transducteur est quelque peu complexe, on peut comprendre son principe de fonctionnement. Par exemple, dans l’´etat 0, quand on lit un a, il y a deux possibilit´es : soit ce a est le d´ebut de la s´equence abc... qui doit ˆetre remplac´e par efc..., auquel cas on va dans l’´etat 2 o`u il faut imp´erativement lire un b puis un c sous peine d’ˆetre bloqu´e et de devoir faire un retour arri`ere ; soit ce a ne fait pas partie d’une telle s´equence et l’on passe dans l’´etat 1 (il se peut par contre que a soit le d´ebut d’une s´equence abcd qui doit se r´e´ecrire en afgd).
´Etant donn´e un ensemble de chaˆınes en entr´ee sous la forme d’un automate (figure 5.7), l’applica-tion du transducteur de r`egles produit la sortie attendue (figure 5.8) et s’´ecrit dans Sumo :
$entree = a b c d | a n d | b a b c d | b a n d | c b c d | c n d | m c d ;
$resultat = ($entree % $R),l ;
100 Syntaxe et s´emantique formelle de Sumo
Fig. 5.6 – Le transducteur de r`egles R
5.1 Le calcul d’´etats finis pond´er´e 101
Fig. 5.8 – Automate r´esultat
5.1.3.4 R´ealisation et variantes
On dispose d’algorithmes efficaces pour la compilation de jeux de r`egles de r´e´ecriture parall`eles [Kaplan et Kay, 1994; Mohri et Sproat, 1996], pond´er´ees ou non. Les r`egles s´equentielles se compilent grˆace `a l’op´eration de composition d´ej`a vue.
Nous avons ajout´e des variantes existant dans la litt´erature et dans les autres syst`emes d’´etats finis. Elles sont compatibles entre elles.
– l’op´erateur "->" d´enote, comme dit plus haut, une r`egle s’appliquant de gauche `a droite ; cepen-dant, une r`egle peut tout `a fait s’appliquer de droite `a gauche ("<-") ou simultan´ement dans les deux directions ("<->") ;
– une r`egle peut ˆetre optionnelle, c’est-`a-dire qu’elle s’applique ou non `a une chaˆıne. La r`egle b ->? d || a _ c
appliqu´ee `a la chaˆıne abc produira donc deux chaˆınes, adc et abc..
– lorsque le membre gauche d’une r`egle d´ecrit plusieurs chaˆınes, la r`egle s’applique `a toutes les occurrences de cette chaˆıne. Par exemple, la r`egle
a+ -> b
appliqu´ee `a la chaˆıne aaac produira les trois chaˆınes bc, abc et aabc. [Karttunen, 1996] propose des r`egles « dirig´ees » qui remplacent uniquement l’occurrence la plus longue ou la plus courte. Ainsi, la r`egle
a+ ->@ b
appliqu´ee `a la chaˆıne aaac produira uniquement bc. Ces r`egles d´ecrivent toujours des transduc-teurs d’´etats finis, mais la taille de ces transductransduc-teurs peut tr`es vite exploser, aussi ne sont-elles pas toujours utilisables en pratique ;
– il est ´egalement possible de « recopier » dans le membre droit la partie reconnue par le membre gauche lorsque celle-ci peut varier `a l’aide du symbole "...". Par exemple,
a | b | c -> ... d || _ f
ajoute un d apr`es un a, un b ou un c suivi d’un f (par exemple, afbf donnera adfbdf) ; – enfin, des raccourcis syntaxiques permettent de sp´ecifier plusieurs contextes possibles pour une
mˆeme r`egle, par exemple
a b -> c d || f _ g, h _ i
ou encore de sp´ecifier plusieurs r`egles partageant un mˆeme contexte, comme a b -> c d, f -> g || h _ i