Comment comparer des documents ?

Comparaison de documents, de quoi parle-t-on ?

De nom­breuses appli­ca­tions néces­sitent de pou­voir com­pa­rer des docu­ments entre eux, par exemple pour cor­ri­ger un docu­ment, détec­ter du pla­giat, consti­tuer une mémoire de tra­duc­tion, faire de la recherche d’in­for­ma­tion, lut­ter contre les fake news ou encore éva­luer un logi­ciel de tra­duc­tion.

Les tech­niques employées dif­fèrent selon les besoins et la taille des docu­ments. On trouve par­mi ces tech­niques le cal­cul de la dis­tance d’é­di­tion, les modèles pro­ba­bi­listes et la com­pa­rai­son par espace vectoriel.

La distance d’édition

Il n’est pas rare qu’une erreur typo­gra­phique se glisse dans la requête d’u­ti­li­sa­teur sur un moteur de recherche : carac­tère oublié, incer­ti­tude sur l’or­tho­graphe… La dis­tance d’é­di­tion per­met de retour­ner des résul­tats en com­pa­rant la requête avec les termes effec­ti­ve­ment pré­sents dans l’in­dex du moteur de recherche. Cette dis­tance d’é­di­tion est éga­le­ment uti­li­sée pour des appli­ca­tions telles que la cor­rec­tion ortho­gra­phique ou pour cer­taines mesures de qua­li­té en tra­duc­tion auto­ma­tique, qui consistent à com­pa­rer le docu­ment pro­duit par la machine avec une ver­sion stan­dard rédi­gée par un traducteur. 

Comment calculer une distance d’édition

La dis­tance d’é­di­tion consiste à comp­ter le nombre mini­mum d’o­pé­ra­tions néces­saires et suf­fi­santes pour pas­ser d’une chaîne de carac­tères à une autre. Ces opé­ra­tions sont :

  • l’é­li­sion : un carac­tère est effa­cé (exmple)
  • l’in­ser­tion : un carac­tère est ajou­té (exeemple).
  • la sub­sti­tu­tion : un carac­tère est rem­pla­cé (example).

Ain­si par exemple, la dis­tance d’é­di­tion entre les chaînes mode­la et demo­tal est de 5:

  • inser­tion de deux carac­tères d et e (+ 2) pour pas­ser de mode­la à demo­de­la
  • sub­sti­tu­tion de t à la place de d (+ 1) et de a à a place de e (+ 1) pour pas­ser de demo­de­la à demo­ta­la
  • sup­pres­sion de a (+ 1) pour pas­ser de demo­ta­la à demo­tal

Comparer des textes, la méthode vectorielle

Les méthodes vec­to­rielles consistent à construire un espace vec­to­riel dont chaque mot des textes est un vec­teur, puis de posi­tion­ner le texte dans cet espace afin de cal­cu­ler des dis­tances vec­to­rielles entre textes. On parle ain­si de vec­to­ri­sa­tion des textes.

Ce type de tech­nique est notam­ment uti­li­sé en recherche d’in­for­ma­tion.

Comment construire un espace vectoriel pour la comparaison de textes

Une méthode consiste, dans un pre­mier, à comp­ter les mots dans les dif­fé­rents textes du corpus. 

Le posi­tion­ne­ment des docu­ments dans cet espace vec­to­riel repose sur deux fac­teurs qui tra­duisent quelques intui­tions simples : 

  • plus un terme est fré­quent dans un docu­ment, plus il est pro­bable que ce docu­ment concerne le concept cor­res­pon­dant à ce terme,
  • plus un terme est fré­quent dans l’en­semble du cor­pus, moins il est dis­cri­mi­nant pour la recherche d’information.

Tech­ni­que­ment, ces prin­cipes se tra­duisent par deux facteurs :

  • la fré­quence d’ap­pa­ri­tion du terme dans le docu­ment considéré 
  • la fré­quence d’ap­pa­ri­tion du terme dans l’en­semble du cor­pus.

Afin de mettre en équa­tion, on écrit

  • tf (text fre­quen­cy) pour la fré­quence d’ap­pa­ri­tion dans le docu­ment considéré.
    • tf = fré­quence du terme dans le docu­ment / nombre de mots dans le document
  • IdF (Invert docu­ment fre­quen­cy) pour la fré­quence d’ap­pa­ri­tion dans l’en­semble du corpus
    • Idf = log(nombre de docu­ments / nombre de docu­ments conte­nant le terme au moins une fois)

Le posi­tion­ne­ment d’un docu­ment dans cet espace vec­to­riel consiste à cal­cu­ler tf*idf pour chaque vecteur-mot.

La recherche d’in­for­ma­tion par com­pa­rai­son de docu­ments consiste alors à posi­tion­ner la requête dans cet espace vec­to­riel et de trou­ver les docu­ments les plus proches mathématiquement.

Vectorisation à l’aide de plongements lexicaux

Il est éga­le­ment pos­sible d’ob­te­nir cette repré­sen­ta­tion vec­to­rielle à par­tir des tech­niques d’ap­pren­tis­sage à base de réseaux de neu­rones. His­to­ri­que­ment, on dis­tingue les « word embed­dings » (en fran­çais plon­ge­ments lexi­caux) qui per­mettent d’as­so­cier un vec­teur à un mot, les vec­teurs ayant pour pro­prié­té d’être d’au­tant plus proches que leur sens est proche. En cumu­lant l’en­semble des vec­teurs, on obtient une repré­sen­ta­tion vec­to­rielle du texte. Des approches plus récentes (comme BERT) per­mettent d’ob­te­nir un vec­teur à par­tir d’une séquence de mots (sou­vent des phrase) et ain­si d’ob­te­nir une mesure de simi­la­ri­té séman­tique entre deux textes, même s’ils n’emploient pas les mêmes mots.

Les mémoires de traduction

Les mémoires de tra­duc­tion fonc­tionne en com­pa­rant le texte à tra­duire avec les textes déjà tra­duits. Cette com­pa­rai­son néces­site la construc­tion d’une base de don­nées issue de l’a­na­lyse des docu­ments tra­duits. Vous trou­ve­rez plus d’in­for­ma­tion sur la page dédiée aux outils de tra­duc­tion.

Par Alain Couillault
PhD Chargé de Mission Innovation APIL