Un idiot utile

“Le Nombre imaginaire” ou les mathématiques comme terrain de jeu où l’imagination seule fixe les limites.

Non, il ne s’agit pas ici de Trump : celui qui s’est vu qualifier entre autres d’« idiot utile de Poutine » est (pour le moment) hors course. Notre idiot utile d’aujourd’hui est un programme de traduction statistique.

Dans une précédente chronique nous avons décrit l’approche idéaliste mais naïve qui consiste pour traduire un énoncé à analyser sa structure grammaticale, à en extraire le contenu sémantique, puis enfin à créer à l’inverse un énoncé grammaticalement correct dans la langue cible à partir de cette même sémantique. Objectif noble, mais inatteignable dans la pratique. Nous ne savons tout simplement pas créer de modèles de règles qui représentent réellement la structure et le sens de tous les énoncés susceptibles d’être produits et compris dans une langue donnée.

Une autre approche existe, qui part de présupposés presque opposés. Au lieu de chercher à créer une connaissance riche de la structure et du sens des énoncés de la langue source et de la langue cible, elle s’appuie sur une connaissance minimale de ces dernières ; sa puissance vient de la force brute et des masses importantes de données qu’elle manipule.

Dans cette approche statistique, un énoncé de l’une ou l’autre langue est considéré comme une structure très simple – par exemple une suite de mots, sans beaucoup plus de détails. Ce qui compte, en revanche, c’est de se doter d’une énorme base d’exemples contenant des énoncés dans la langue source (le français étant l’exemple le plus courant dans la littérature américaine) et leurs traductions en langue cible (l’anglais dans cette même littérature). Ces corpus (ou dit-on corpora ?) viennent de nombreuses sources – dont, par exemple, les bases réglementaires multilingues de l’Union européenne – et fournissent des millions d’exemples.

Ils permettent de construire des modèles statistiques des langues. Un tel modèle estime par exemple la probabilité qu’un énoncé en anglais soit la traduction d’un énoncé français donné (et vice-versa) ; il estime aussi la probabilité qu’une phrase anglaise donnée soit effectivement prononcée ou écrite par un locuteur de cette langue.

S’il était possible de créer un catalogue de tous les énoncés d’une langue, associées à leurs traductions établis par des humains, le problème serait trivial – il suffirait, chaque fois qu’un énoncé de la langue source est soumis à la machine, d’aller chercher sa traduction qui serait déjà là, quelque part. C’est, bien entendu, impossible.

On pourrait imaginer de se contenter de stocker toutes les phrases accompagnées de leurs traductions : après tout, tout énoncé en français est une suite de phrases. Mais outre que cela reste quantitativement impossible, on voit apparaître un problème : la bonne traduction d’une même phrase peut être radicalement différente en fonction de son contexte dans l’énoncé auquel elle appartient. « Son amie était musicienne » se traduira selon le cas par « His friend was a musician » ou « Her friend was a musician » : seul le contexte peut le dire. Notons que réciproquement, seul le contexte peut décider si cette dernière phrase doit être traduite en français par « Son amie était musicienne » ou « Son ami était musicien ».

Dans les faits, on construit des catalogues de fragments appelés n-grammes, des suites de mots de longueur limitée extraits (avec leurs traductions) des textes du corpus. On pourra ainsi trouver un 3 -gramme pour « son amie était », et un autre pour « amie était là ». Chaque n-gramme français se trouvera ainsi associé à différents n-grammes en Anglais (et vice-versa). On compte également le nombre d’occurrence de chaque n-gramme de chaque langue, ce qui permet d’évaluer la probabilité qu’il apparaisse dans une énoncé de sa langue pris au hasard : « Népomucène est inconstitutionnel » est clairement moins fréquent que « Trump a menti ».

Le problème de la traduction est alors traité de manière purement statistique. Etant donnée un énoncé F en langue source, on cherche l’énoncé E en langue cible qui a le plus de chance d’être une bonne traduction de F. Plus précisément, on cherche l’énoncé anglais qui maximise la propriété P(E/F), c’est-à-dire la probabilité conditionnelle que, sachant que la source est F, la cible soit E. Le théorème de Bayes, dont nous avons déjà parlé, permet de dire que P(E/F) = P(F/E) * P(E)/P(F). Cette expression calcule la probabilité que F soit une traduction française de E, multipliée par la probabilité que E apparaisse comme énoncé en anglais, divisé par la probabilité que F apparaisse comme énoncé en français. Cette dernière étant fixée pour un F donné, le problème revient alors à trouver un énoncé anglais E suffisamment courant – P(E) élevé – dont F soit une traduction fréquente en français – P(F/E) élevé, de manière à augmenter les deux membres de ce produit.

Il est urgent de donner un exemple. Supposons que le fragment « le chat chasse une souris » soit le plus souvent traduit par « the cat is chasing a mouse » ou par « the cat is hunting a mouse ». Ajoutons quelques instances où il serait malencontreusement traduit par « the cat is casting out a mouse » – chassé étant ici pris dans le sens de « renvoyé, exclu ».

Cette dernière expression est bien peu susceptible d’apparaître dans un texte en anglais, contrairement aux précédentes qui sont courantes. Par ailleurs, il est très probable que l’anglais « the cat is hunting a mouse » soit toujours associée au français « le chat chasse une souris ». Ce sera aussi le cas de « the cat is casting out a mouse », qui n’apparaît que par erreur. En revanche, « The cat is chasing a mouse » pourra aussi être associé au français « Le chat poursuit une souris », dont il est également une traduction.

Entre les trois expressions anglaises, « The cat is hunting a mouse » est celle qui est la plus fréquente et dont la traduction française est le plus souvent la chaîne source ; c’est donc elle que nous retiendrons comme traduction – de manière discutable à mon sens, car chasing serait plus adapté quand on parle d’une souris particulière ; je dirais volontiers chasing a mouse, hunting mice.

La traduction statistique marquera ainsi bien la différence entre « Il chasse son serviteur » (traduit par « He drives out his servant ») et « il chasse une souris » (« He hunts a mouse »). De même, « Il poursuit son employeur » est traduit par « He sues his employer », alors que « il poursuit une souris » donne « He’s chasing a mouse ».

Tout cela ne fonctionne pas si mal, mais nous avons la chance que la phrase à traduire soit suffisamment courte pour apparaître dans l’échantillon de fragments traduits par des humains. Qu’en est-il d’une phrase plus longue, disons « Le chat chasse une souris dans le jardin du couvent  » ? Dans ce cas, les algorithmes ne peuvent escompter trouver la phrase entière dans leur base de données ; mais ils pourront y trouver des fragments qui recouvrent entièrement la phrase comme par exemple « le chat chasse une souris », « souris dans le jardin  », et « jardin du couvent ». Ils vont alors essayer de trouver une combinaison de traductions anglaises de ces fragments qui obtiennent de bonnes notes en utilisant la méthode décrite plus haut, mais aussi qui se « collent » bien ensemble. Par exemple, « smile in the garden » pourrait être une traduction fréquente de « souris dans le jardin », mais elle entrerait en conflit avec la traduction de « souris » par « mouse » dans le fragment précédent ; « mouse in the garden » sera donc privilégié. De même, le mot « couvent » compris comme un verbe pourrait évoquer l’anglais « hatch » ; mais un fragment tel que «  in the hatch garden » sera rejeté car (on peut l’espérer) inexistant dans le corpus anglais.

Dans tout cela, l’algorithme n’a besoin de témoigner d’aucune compréhension « intelligente » du contexte, des règles de bon sens, ni même de la grammaire : il s’appuie simplement sur les fragments que les locuteurs des deux langues écrivent, et les joint comme il peut. L’absurdité ne lui fait donc pas peur. Par exemple, un alexandrin de Frankenstein tel que « L’œil était dans la tombe épousa la belle Aude » sera impavidement traduit comme « The eye was in the grave married the beautiful Aude », manquant complètement le jeu phonétique amusant qui superpose le son « é » du milieu des deux vers d’origine de La Légende des Siècles, « L’œil était dans la tombe [… et regardait Caïn] » et « [C’est ainsi que Roland …] épousa la belle Aude ». Il existe sans doute une traduction intelligente de ce fragment qui mélangerait deux vers de Shakespeare partageant un homophone, mais ce n’est pas un programme statistique qui la trouvera !

Les algorithmes les plus récents sont plus fins que cela  ; ils s’intéressent par exemple aux mots et expressions rares, qu’ils essaient de relier à des locutions apparentées et plus fréquentes. Cela conduit à introduire un minimum de morphologie dans les algorithmes. Cependant, le principe reste de traiter la langue comme un objet statistique, sujet aux calculs de probabilité, mais sans chercher à dégager le sens des énoncés. Les algorithmes de reconnaissance de la parole suivent d’ailleurs des principes comparables. Si les sons reconnus présentent une ambigüité, le logiciel s’appuiera sur les probabilités pour les discriminer. Il est ainsi plus probable d’entendre « il pleut dans le Doubs » que « il pleut dans le doux ».

Le fameux service Google Translate était, jusqu’en 2016 environ, fondé sur ce principe, et connu pour quelques bugs hilarants et difficiles à corriger. « Le Président Hollande sera présent » se retrouvait ainsi traduit par « President Holland will attend », du fait de la domination statistique du nom de pays sur celui de l’homme politique : c’est tout de même gênant. Depuis la technologie a changé et – reconnaissons-le – beaucoup progressé, adoptant une approche par réseau de neurones dont nous reparlerons. Mais soyons rassurés : nos amis du Coin des traîtres peuvent dormir tranquilles !

Yannick Cras
Le nombre imaginaire