Qu'est-ce que la normalisation de textes ?

Quand est-il nécessaire de normaliser des textes ?

La nor­ma­li­sa­tion de textes consiste à pré­pa­rer les textes pour effec­tuer un trai­te­ment auto­ma­tique du conte­nu de plus haut niveau.

Cette étape est néces­saire lorsque les texte four­nis aux outils de trai­te­ment du lan­gage pro­viennent de sources peu fiables quant à la forme du texte, par exemple dans le cas d’enquêtes d’o­pi­nions, de docu­ments acquis par recon­nais­sance optique de carac­tères ou bien d’en­vi­ron­ne­ments logi­ciels tiers. 

Dif­fé­rents trai­te­ments de nor­ma­li­sa­tion des textes peuvent être envisagés :

Comment traiter les différents jeux de caractères ?

Outre le fait qu’il existe un large éven­tail d’al­pha­bets, et de familles d’al­pha­bets dif­fé­rents – arabe, cyril­lique, latin, idéo­gram­ma­tiques…, les jeux de carac­tères peuvent être codés de plu­sieurs façons dif­fé­rentes au niveau infor­ma­tique. Les pre­miers jeux de carac­tères – ASCII -, ne per­met­taient de repré­sen­ter qu’un nombre limi­té de carac­tères. Ces 128 carac­tères se sont révé­lés insuf­fi­sants pour repré­sen­ter toute la gamme de carac­tères dis­po­nibles. Il a donc été néces­saire d’é­tendre ces pre­miers jeux de caractères.

Cepen­dant, ces exten­sions, en fonc­tion des besoins, et mal­gré la nor­ma­li­sa­tion au niveau inter­na­tio­nal, ne couvrent pas toutes les mêmes carac­tères. Cela nuit à la com­pa­ti­bi­li­té entre jeux de carac­tères, en par­ti­cu­lier dans le cas de docu­ments multilingues. 

Le cas des caractères en html

Par ailleurs, cer­tains modes de repré­sen­ta­tion de textes en machine pos­sèdent leurs propres jeux de carac­tères. C’est le cas du lan­gage HTML – Hyper­Text Mar­kup Lan­guage – uti­li­sé pour repré­sen­ter et trans­por­té les pages sur le Web (cette page, par exemple).

Ain­si, le carac­tère è est codé par la chaîne de carac­tères è mais peut éga­le­ment être codé dans le jeu de carac­tères de la page elle-même. 

Comment normaliser les jeux de caractères ?

On le voit, la nor­ma­li­sa­tion des jeux de carac­tères est un préa­lable néces­saire à de nom­breux trai­te­ments infor­ma­tiques et ne doit pas être négli­gée lors de la mise en place d’une solution. 

choisir un jeu de caractères pour le traitement linguistique

La pre­mière chose à faire est de choi­sir le jeu de carac­tères à uti­li­ser pour le trai­te­ment lin­guis­tique, qui doit prendre en compte d’une part les sources de docu­ments dis­po­nibles et, d’autre part, les pla­te­formes logi­cielles sur les­quelles ces trai­te­ments seront effectués. 

faire converger les sources

Autant que pos­sible, il est sou­hai­table que l’en­semble de la chaîne de trai­te­ments uti­lise le même jeu de carac­tères et donc, autant que pos­sible, faire en sorte que les textes soient pro­duits dans le même jeux de carac­tères que celui uti­li­sé pour le traitement. 

convertir les jeux de caractères des documents sources

Il existe un cer­tain nombres d’u­ti­li­taires qui effec­tuent la conver­sion d’un jeu de carac­tères à un autre, uti­li­sables dans des petits pro­grammes de trai­te­ments. Un pro­gramme pour­ra, par exemple, dans un pre­mier temps, iden­ti­fier le jeu de carac­tères dans lequel est écrit le docu­ment, puis conver­tir d’un jeu à l’autre. Comme on l’a vu, il peut y avoir perte d’in­for­ma­tion en fonc­tion des jeux de carac­tères uti­li­sés, par exemple lorsque le jeu de carac­tères cible contient moins de carac­tères que le jeu source.

cas particulier d’Unicode

Le stan­dard Uni­code vise à repré­sen­ter tous les sys­tèmes d’é­cri­ture. Par son uni­ver­sa­lisme, il tend à s’im­po­ser dans les échanges infor­ma­tiques modernes. En revanche, il pré­sente au moins deux difficultés:

  • il existe trois jeux de carac­tères pour l’U­ni­code : UTF‑8, UTF-16 et UTF-32. Ce der­nier repré­sente un carac­tère Uni­code sur un entier de 32 bits. Les deux autres sont des jeux de carac­tères à taille variable, c’est-à-dire qu’un carac­tère peut occu­per 32, 16 ou (dans le cas d’UTF‑8) 8 bits sui­vant sa « posi­tion » dans Unicode;
  • l’en­co­dage Uni­code per­met de coder le même carac­tère de dif­fé­rentes façons : par exemple, le carac­tère è peut être enco­dé comme un seul carac­tère (de code U+00E8) ou deux carac­tères : e (U+0065) sui­vi de accent grave (U+0300)

Des outils dédiés à Uni­code per­mettent la nor­ma­li­sa­tion de ces variantes d’encodage.

Comment corriger l’orthographe et les coquilles d’un texte ?

La cor­rec­tion des textes couvre une large gamme de ques­tions, par exemple :

  • la cor­rec­tion des erreurs de frappe
  • la cor­rec­tion de cer­tains codes typo­gra­phiques, tels que les césures
  • la cor­rec­tion des erreurs de recon­nais­sance de carac­tères lors de l’u­ti­li­sa­tion d’un logi­ciel d’OCR
  • la cor­rec­tion des erreurs de syntaxe
  • la recon­nais­sances de mots inconnus

Qu’est-ce que la distance d’édition ?

Les erreurs de frappe et les erreurs de recon­nais­sance peuvent être cor­ri­gées par des mesures de dis­tance d’é­di­tion par rap­port à des termes connus dans l’en­vi­ron­ne­ment appli­ca­tif. Cette dis­tance d’é­di­tion est éva­luée en comp­tant le nombre d’o­pé­ra­tions (ajout, sup­pres­sion ou sub­sti­tu­tion) néces­saires et suf­fi­santes pour pas­ser du terme pré­sent dans le texte au terme connu.

Ain­si, par exemple, la dis­tance d’é­di­tion entre les termes carat­cères et carac­tères est de 2, car 2 opé­ra­tions sont néces­saires pour pas­ser de l’un à l’autre :

  • sub­sti­tuer c à t
  • sub­sti­tuer t à c

Comment corriger les erreurs de syntaxe dans une phrase ?

Cer­tains textes, par exemple lors­qu’ils sont col­lec­tés en ligne, comme dans le cas des réseaux sociaux, d’en­quêtes d’o­pi­nions ou d’a­vis client, peuvent conte­nir des licences de syn­taxe : accord d’un adjec­tif, par­ti­cipe pas­sé hasar­deux voire expres­sion idio­ma­tique. Ce type de licences néces­site, pour être cor­ri­gées, d’ef­fec­tuer une ana­lyse lin­guis­tique de haut niveau, qui doit donc être effec­tuée en fin de chaîne de trai­te­ment de nor­ma­li­sa­tion de texte. 

Qu’est-ce que la reconnaissance de segments remarquables ?

La recon­nais­sance de seg­ments remar­quables consiste à iden­ti­fier des seg­ments textes par­ti­cu­liers, qu’il est pré­fé­rable de nor­ma­li­ser : suites de carac­tères spé­ci­fiques, adresses mails, dates, adresses pos­tales, numé­ros de télé­phones, réfé­rences pro­duits, acro­nymes, points médians de l’é­cri­ture inclusive…

Ces seg­ments remar­quables sont géné­ra­le­ment iden­ti­fiables, et iden­ti­fiés, au moyen de gram­maires locales qui recon­naissent la struc­ture de ces segments.

Par exemple, une adresse de cour­riel est consti­tuée des élé­ments ordon­nés suivants :

  • une suite de carac­tères : lettres, chiffres et cer­tains carac­tères spéciaux
  • une aro­base (@)
  • une suite de carac­tères alpha-numériques
  • un point
  • une suite de carac­tères alphabétiques

Des gram­maires locales, sou­vent plus com­plexes, sont néces­saires pour iden­ti­fier les autres seg­ments remar­quables.

L’ap­pli­ca­tion de ces gram­maires locales sur le texte d’en­trée va per­mettre d’i­den­ti­fier les seg­ments remar­quables et, soit de les trans­for­mer en une forme nor­male, soit d’a­jou­ter une éti­quette (par exemple, ajou­ter une balise XML). 

Par Alain Couillault
PhD Chargé de Mission Innovation APIL