• Aucun résultat trouvé

Codes ` a longueur variable et d´ecodabilit´e

Dans le document Compression de textes en langue naturelle (Page 32-36)

1.3 Codes `a longueur variable et d´ecodabilit´e

Tous les exemples pr´ec´edents permettent de compresser un texte en r´eduisant le nombre de bits n´ecessaires `a coder l’unit´e de base d’un texte : le caract`ere. Tous les caract`eres de l’alphabet sont cod´es avec un mˆeme nombre de bits. On constate ais´ement `a la lecture d’un texte que la distribution de ces caract`eres n’est pas uniforme ; ainsi dans un texte ´ecrit en fran¸cais, la proportion de e s’av`ere plus importante que celle de n ou de k. Cette simple observation est `a la base des codes `a longueur variable dans lesquels les divers caract`eres sont cod´es sur un nombre de bits d’autant plus petit que leur fr´equence est grande. Un code utilisant ce principe de longueur variable en fonction de la fr´equence du caract`ere a ´et´e mis au point par Samuel F.B. Morse (tableau 1.1). Le code Morse, du nom de son inventeur, code `a la base de la t´el´egraphie sans fil, et dont l’id´ee remonte `a 1832, fut pr´esent´e pour la premi`ere fois en 1837. Il permet de repr´esenter 42 caract`eres ou signaux `a l’aide de trois signes, le point, le trait et l’espace, ce dernier jouant le rˆole de s´eparateur. Le trait dure trois fois plus longtemps que le point. L’espace repr´esente une unit´e de temps et sera not´e t. Le point et le trait sont s´epar´es par un espace, les caract`eres par 3 espaces, les mots par 6 espaces.

´

Ecrivons selon ce code le mot DE :

DE = −t·t·ttt·

Dans le cadre informatique, nous devons utiliser un codage binaire. Suppo-sons que l’on ´ecrive le mot DE sans s´eparateur.

Nous avons : DE= − · ··

Nous pouvons bien sˆur relire ais´ement le mot DE. Cependant le texte cod´e peut ˆetre lu de plusieurs mani`eres : TEEE, TEI, TIE, TS, NEE, NI, B.

Cet exemple fait apparaitre la notion de d´ecodabilit´e. En effet, pour relire le mot DE et ne relire que lui, (unicit´e du d´ecodage), il faut que l’on sache d´ecouper correctement le message en mots du code, puis en symboles.

Car. Code Car. Code A ·− 1 · − − − − B − · ·· 2 · · − − − C − · −· 3 · · · − − D − · · 4 · · · · − E · 5 · · · · · F · · −· 6 − · · · · G − − · 7 − − · · · H · · ·· 8 − − − · · I · · · 9 − − − − · J · · · 0 − − − − − K − · − . · − · − ·− L · − · , − − · · −− M · · · : − − − · ·· N −· ? · · − − ·· O − − − - − · · · · − − · · − · P · − −· / · − · · −· Q − − ·− ( ou ) · − − · − R · − · = − · · · − S · · · compris · · · − · T erreur · · · ·· U · · − + · − · − · V · · ·− inv − · − W · − − attente · − · · · X − · − fin de travail · · · − ·− Y − · −− commencement − · − · − Z − − ·· s´eparateur · − · · −

Tab. 1.1 – Code Morse

Ce probl`eme de d´ecodabilit´e provient du fait que contrairement aux codes dont nous avons parl´e pr´ec´edemment, le code Morse est `a longueur variable. En effet, lorsqu’un code est de longueur fixe k bits par symbole, nous savons que tous les k bits, on obtient le code d’un symbole. Dans le cas d’un code `a longueur variable, tel le code Morse, il faut savoir `a quel instant un symbole a ´et´e lu. On dira d´esormais qu’un ensemble de mots sur un alphabet A est un code si l’unicit´e du d´ecodage est garantie. Celle du code Morse est obtenue grˆace aux espaces s´eparateurs.

1.3 Codes `a longueur variable et d´ecodabilit´e 15

D´efinition : Soit A un alphabet.

Un code est un ensemble de mots X ⊆ A+ qui v´erifie : ∀x1, x2, ..., xn, y1, y2, ..., ym ∈ X x1x2...xn= y1y2...ym ⇒ n = m et ∀i xi= yi.

Exemple : Consid´erons les ensembles de 4 mots E1, E2, E3, E4, E5 .

M ot E1 E2 E3 E4 E5

m1 00 0 0 0 0

m2 01 1 10 01 10

m3 10 00 110 011 110

m4 11 11 1110 0111 111

Tab. 1.2 – Ensembles de mots

E1 est un ensemble de mots de longueur fixe, c’est donc un code.

En ce qui concerne E2, si nous consid´erons la suite 100, elle peut se lire de 2 fa¸cons : m2m3 ou m2m1m1. E2 n’est donc pas un code.

On voit facilement que E3 est un code. Il suffit de remarquer qu’un nouveau mot a ´et´e reconnu d`es l’arriv´ee d’un 0. Le z´ero, qui appartient au mot du code reconnu, joue ici le mˆeme rˆole de s´eparateur que les 3 unit´es de temps du code Morse. Le code E3, est un code appel´e code instantan´e.

De plus, E4 est, en quelque sorte, le miroir du code E3. L’occurrence d’un 0 indique, comme dans le cas pr´ec´edent, qu’un nouveau mot a ´et´e lu. Cepen-dant, contrairement au code E3 le 0 n’appartient pas au mot du code reconnu, mais au d´ebut du mot du code suivant. En effet, supposons que nous ayons lu 01, il n’est pas possible `a ce stade, de reconnaitre m2, il faut lire un bit suppl´ementaire. Si celui-ci est 0, le mot pr´ec´edent ´etait bien m2. Si le bit lu est un 1, il faut lire encore un bit pour savoir si le symbole cod´e est m3 ou m4. Ce type de code est dit non instantan´e.

En ce qui concerne E5, on remarque qu’un mot est reconnu d`es l’occurrence d’un 0 ou de trois 1 successifs. E5 est donc un code intantan´e.

D´efinition :

X ⊆ A+ est un code pr´efixe si et seulement si, aucun mot de X n’est pr´efixe d’un autre mot de X :

∀x, x ∈ X x ≤ x ⇒ x = x.

Une condition n´ecessaire et suffisante pour qu’un code soit instantan´e est qu’il soit pr´efixe.

– Cette condition est suffisante car la lecture d’un mot complet du code entraˆıne le d´ecoupage `a la fin de ce mot.

– Cette condition est n´ecessaire : Si x < y, on ne sait pas apr`es avoir lu x si le d´ecoupage doit se faire `a cette position ou s’il s’agit du d´ebut de y. Si nous revenons `a l’´etude des ensembles de mots E3, E4, E5, le code E3 est effectivement un code pr´efixe. En revanche, pour le code E4, 0111 a 3 pr´efixes : 0,01,011, qui appartiennent `a ce code.

Dans le document Compression de textes en langue naturelle (Page 32-36)