investigation ECHELON images/petit_logo_jcd.gif

 

 

 

 

exercice pratique de linguistique ............. retour

J'ai rapporté l'idée de cette étude de mon travail.

C'est une bonne illustration de la difficulté de comprendre le langage humain avec les outils informatiques dont nous disposons aujourd'hui. J'ai pensé en faire une page sur le net.

Les espions de la NSA ne doivent probablement pas réussir beaucoup mieux que ce que j'ai, moi même, pu réaliser lors de cette expérience. Quoique, sans doute, ils ont accès à des données théoriques que je n'ai pas... Il existe par ailleurs des logiciels de traduction qui obtiennent certains résultats. Pour cela, ils doivent non seulement connaître la correspondance du vocabulaire entre deux langues, mais aussi pouvoir reconnaître des structures de phrases typiques. On peut évaluer ce genre de logiciel sur internet, sur Voilà (http://tr.voila.fr/) par exemple. On peut s'amuser à les mettre en défaut, en leur soumettant ses propres textes.

Pour le contenu des mails qui transitent sur internet, l'analyse syntaxique sera plus compliquée car il s'agit d'un langage proche du langage parlé. Les tournures de phrases sont multiples et souvent contradictoires. Toutes sortes d'abréviations ou d'expressions peuvent apparaître et disparaître en quelques mois. Les codes changent selon les milieux, les pays, les époques. Et comme dans une conversation entre deux personnes qui se connaissent bien, certains éléments de contexte ne sont pas répétés à chaque message.

 

le cadre de l'étude

Il s'agissait, à l'occasion de la modernisation d'un système informatique, d'étudier des textes courts afin de les "normaliser". Ces textes se présentaient sous la forme de chaînes de 80 caractères maximum. Ils étaient supposés décrire des "plages horaires" à l'intérieur des consignes utilisées par des personnels de surveillance, la nuit ou le week-end.

Pour chaque type de problème, ils disposaient d'une procédure informatisée précisant la conduite à tenir. L'utilisateur sélectionnait la plage horaire adéquate pour obtenir les indications particulières en fonction du jour et de l'heure.

Ces plages horaires se présentaient ainsi :

SAMEDI-DIMANCHE ET JOURS FERIES DE 8H A 17H

L'application informatique qui les utilisait a existé à une trentaine d'exemplaires, pendant une dizaine d'années. Les plages horaires ont été saisies depuis l'origine, par différentes personnes, dans différentes régions de France. Aucun contrôle n'avait été prévu dans le logiciel et aucune règle de syntaxe très précise n'avait été donnée, ce qui a conduit à une grande variété d'usages.

 

les syntaxes observées

Les trois exemples suivants de plages horaires donnent une idée des variations de syntaxe observées :

SEMAINE DE 17H A 08H +SAM+DIM+FERIE
HNO SEMAINE 17H30-7H30, SAMEDI, DIMANCHE ET FERIES
LUN AU VEN DE 18H A 08H00 SAM DIMACHE ET FERIE

Ils correspondent tous les trois à une plage de temps commençant, les jours de semaine, entre 17h00 et 18h00 jusqu'au lendemain matin entre 7h30 et 8h00, et de 0 heure à 24 heures, les samedi, dimanche et jours fériés.

 

On peut faire un certain nombre de constatations :

CADRE DE PERMANENCE
LAFILAIRE 4

 

Certaines ambiguïtés sont constatées dans la formulation des plages horaires :

LUNDI A VENDREDI DE 19H A 7H + SAMEDI DE 18H30 A LUNDI 7H
SAMEDI DIMANCHE FERRIE ET SEMAINE DE 20H00 A 07H00

liste 1 - liste 2

 

instant de méditation

Je vois dans cet exemple - autant de diversité pour une si petite chose - le lieu du conflit entre deux approches de la compréhension du monde (conflit que je porte d'ailleurs en moi !).

Le poète se réjouira des multiples manières d'exprimer une même chose. Il y verra de la richesse et de la nuance. Il contemplera ces listes de plages horaires comme un "inventaire à la Prévert" et tentera de trouver d'autres formulations qui manquent dans ces deux listes.

L'informaticien remarquera immédiatement que les trois libellés discutés plus haut ne relèvent que d'une seule structure qui peut être réduite à une forme unique, éliminant toute ambiguïté, autant pour les hommes que pour les machines. Soit :

du LUNDI au VENDREDI de 00H00 à 08H00 et de 18H00 à 24H00
et les SAMEDI, DIMANCHE et FERIES de 00H00 à 24H00.

Il proposera probablement une formulation néo mathématique qui améliore la lisibilité à l'écran:

LUNDI à VENDREDI 00H00 -> 08H00 + 18H00 -> 24H00
+ SAMEDI + DIMANCHE + FERIE 00H00 -> 24H00

Le bon sens de l'informaticien l'emportera inévitablement car il conduit à une meilleure productivité.

 

le traitement informatique

J'ai réalisé deux programmes prototypes visant à effectuer la normalisation de ces libellés de plages horaires.

Le premier appelé plages1w.bat détermine quels sont les textes qu'il semble possible de traduire. Pour cela, le programme recherche si tous les mots font partie de la liste de mots clés retenus.

Le deuxième module plages2w.bat effectue la normalisation des libellés. Il procède en deux temps dont la première phase est une analyse sématique permettant de déterminer le format de chaque libellé.

Les résultats quantitatifs obtenus par ces deux programmes sont les suivants :

  liste 1 liste 2
nombre de plages horaires 256 484
sans doublons 218 (85%) 349 (72%)
Traitement 1
plages acceptés 148 (57%) 320 (66%)
rejets mineurs 2 45
rejets majeurs 106 (41%) 124 (25%)
Traitement 2
plages effectivement traitées 83 (32%) 169 (35%)
libellé produits 140 264
libellés produits sans doublons 34 70
nombre de règles utilisées 8 16

rejet mineur : la plage horaire contient des données horaires mais les heures ne sont pas des heures rondes (par exemple 16h36).
rejet majeur : la plage horaire contient des mots qui ne sont pas des notions horaires (nom de lieu, de service,...) ou elle a un format "exotique". Elle ne peut être traduite.

Le traitement a été effectué sur les deux listes contenant respectivement 256 et 484 libellés de plages horaires avec un certain nombre de doublons.

Un tiers des libellés environ a été rejeté parce qu'il contenait des mots ne correspondant pas à des notions horaires.

La réussite du traitement complet ne dépasse guère 30%. Il pourrait probablement être amélioré en écrivant de nouvelles règles de traduction mais il faut rester très prudent si on ne veut pas produire des non sens.

Nous avons estimé que le risque de voir apparaître de nouvelles syntaxes pour chacune des trente bases de données à traiter était trop important. Nous aurions été obligés de modifier les programmes à chaque passage !

Nous avons estimé qu'il sera plus économique de réaliser cette "normalisation" à la main !

 

les algorithmes mis en oeuvre

J'ai utilisé le langage awk pour ces deux programmes car il permet en peu de lignes de nombreuses manipulations (au prix, il est vrai, d'un code quasi illisible).

programme 1 (plages1w.bat - plages1.awk)

Le programme examine chaque libellé de plage horaire pour déterminer s'il est traduisible ou non. Le résultat est ACC si le libellé est accepté. RJ1 pour un rejet mineur, REJ pour un rejet majeur.

Voici quelques exemples :

Plage horaire Résultat Mot reconnus
1 TOUS LES JOURS ACC LUNDI VENDREDI SAMEDI DIMANCHE FERIE
2 TOUS LES JOURS ACC LUNDI VENDREDI SAMEDI DIMANCHE FERIE
3 HO DU LUNDI AU VENDREDI DE 07H A 12H ET DE 13H A 17H15 ACC HO LUNDI VENDREDI 07:00 12:00 13:00 17:15
4 LUN AU VEN DE 17H15 A 07H SAMEDI DIMANCHE FERIE ACC LUNDI VENDREDI 17:15 07:00 SAMEDI DIMANCHE FERIE
5 TOUS LES JOURS (xxx) ACC LUNDI VENDREDI SAMEDI DIMANCHE FERIE
6 SAMEDI-DIMANCHE ET JOURS FERIES DE 8H A 17H (xxxxx xxxxx) ACC SAMEDI DIMANCHE FERIE 08:00 17:00

...

18 HNO ACC HNO
19 DU LUNDI AU VENDREDI DE 08H A 16H36 RJ1 LUNDI VENDREDI 08:00 16:36
20 SEMAINE DE 16H36 A 08H00 + SAMEDI-DIMANCHE-FERIE (xxx xx xxx) RJ1 LUNDI VENDREDI 16:36 08:00 SAMEDI DIMANCHE FERIE
21 LUN AU VEN DE 07H A 19H + SAM DE 07H A 18H ACC LUNDI VENDREDI 07:00 19:00 SAMEDI 07:00 18:00
22 LUN AU VEN DE 07H A 18H xxx xxxx REJ LUNDI VENDREDI 07:00 18:00

 

La colonne de droite donne la liste des mots reconnus. On remarque que certains transcodages sont effectués selon des règles internes au programme. Ces transcodages visent à préparer le traitement de plages2.

Pour comprendre comment cela fonctionne, il faut entrer dans le détail du programme plages1.awk .

 

Le choix des mots clés est assez empirique. Pour cela, je me suis aidé d'un comptage des mots de chacune des listes et de l'observation directe des listes de libellés.

liste_1_cl.txt mots_alpha_liste_1_cl.txt mots_liste_1_cl.txt
liste_2_to.txt mots_alpha_liste_2_to.txt mots_liste_2_to.txt

Le besoin s'est fait sentir de reconnaître certaines expressions comme JOURS DE SEMAINE, JOURS FERIES, SAUF FERIES...

 

La première catégorie de mots reconnus est celle des mots ignorés :

LE, LA, LES, UN, UNE, DES, DU, DE, A, AU, ET, OU, EN, SUR, ENTRE les programmes considèrent que ces mots ne servent à rien !

 

Parmi les mots acceptés, les noms des jours de la semaine doivent l'être sous différents formes :

LUNDI ^LUN
ou LU
les mots commençant par LUN auxquels j'ai, dans un deuxième temps, rajouté "LU"
MARDI ^MAR mots commençant par MAR, MER ou JEU.
ces mots provoquent un rejet mineur (RJ1) car ils correspondant à des exceptions par rapport aux syntaxes de libellés plus courants qui couvrent la période du lundi au vendredi.
MERCDREDI ^MER
JEUDI ^JEU
VENDREDI ^VEN mots commençant par VEN.
SAMEDI ^SAM^$
^SAMEDI
^SAM$ signifie commençant et finissant par SAM. J'aurais pu écrire ="SAM".
Il était nécessaire de détecter exactement la chaîne "SAM" car elle peut être suivie d'un "+", d'une virgule, etc...
^SAMEDI permet de détecter SAMEDI ou SAMEDIS
DIMANCHE ^DIM mots commençant par DIM

Les mots suivants ont aussi été retenus :

FERIE ^FERIE
^FERRIE
J'ai pris en compte le mot FERRIE à la place de FERIE parce que cette faute se retrouvait dans plusieurs libellés de l'une des listes.
TOUS
JOUR
OUVRABLE
TOUS
^JOUR
^OUVRABLE
afin de reconnaître les expressions TOUS LES JOURS, JOURS OUVRABLES,...
HO, HNO HO
HNO
sigles utilisés souvent pour HEURES OUVRABLES ou HEURES NON OUVRABLES.
SEMAINE SEM
SEMAINE
chaîne contenant SEMAINE, remplacée par "LUNDI VENDREDI".
NUIT ^NUIT nuit ou nuits.

 

Un certain nombre d'expressions remarquables ont été prises en compte :

TOUS-LES-JOURS équivalent à semaine + week-end + ferié
WEEK-END différentes syntaxes avec ou sans le tiret ou écrit WE. Equivalent à samedi+dimanche
24H/24 nombreuses formes possibles avec ou sans espaces : 24/24, 24H/24H, 24 / 24, etc..
SAM DIM FER la reconnaissance de cette expression permet de reconnaître FER comme férié avec peu de risques d'erreur.
SAUF-FERIE la présence de "sauf" modifie le sens du mot férié.
JOURS OUVRABLES transformé en lundi-vendredi
JOURS DE SEMAINE transformé en lundi-vendredi
JOURS FERIES équivalent à FERIE
FETE équivalent à FERIE

Le traitement de ces expressions remarquables se fait en deux temps :

1) reconnaissance des expressions : elle sont transformées en une chaîne expression qui ne doit pas comporter d'espaces (car c'est le séparateur de mots) :

WEEK END devient WEEK-END
24H / 24 devient 24/24, etc.

2) dans la boucle de lecture mot par mot, la chaîne expression est reconnue et transformée en une suite de mots équivalente.

Ainsi les expressions JOURS DE SEMAINE ou JOURS OUVRABLES ont été transformées en LUNDI-VENDREDI qui est comptabilisé comme la liste de mots connus LUNDI VENDREDI.

Cette dernière transformation s'explique par le fait que les expressions DU LUNDI AU VENDREDI ou LUNDI A VENDREDI doivent aboutir au même résultat lorsque les mots DU, AU, A considérés comme inutiles ont été éliminés.

soit :

JOURS DE SEMAINE est transformé en LUNDI-VENDREDI
par la recherche d'expression
puis traduit
LUNDI VENDREDI
DU LUNDI AU VENDREDI devient
DU LUNDI AU VENDREDI
par élimination des mots non signifiants
ce qui donne
LUNDI VENDREDI

Cette méthode est le résultat de plusieurs essais et tâtonnements. Elle est particulièrement efficace avec un expression comme "24H/24" qui est ainsi naturellement transformée en "00H00 24H00" quelque soit la syntaxe de départ. Bien que ce cas n'a finalement pas été traité, on peut penser que cette méthode était indispensable pour faire la différence entre FERIE et SAUF FERIE.

 

autres traitements effectués dans plages1.awk:

Le programme élimine les séparateurs pour les remplacer par des espaces :

Les caractères " + - , _ . / = ; * & sont remplacés par un espace.
Le caractère : (deux points) n'a pas été éliminé car il peut se trouver dans les chaînes décrivant des heures minutes (08:00).
Un patch permet d'éliminer ce caractère s'il suit un I comme pour LUNDI:

Ce traitement correspond en langage awk aux mystérieuses lignes suivantes :
.............gsub(/[\"\+\-\,_\.\/=;*&]/," ")
.............gsub(/I:/,"I ")

Cette élimination des séparateurs est assez satisfaisante. En les remplaçant par des espaces, on évite de coller des mots consécutifs entre eux, et les expressions SAM DIM FERIE, SAM+DIM+FERIE ou SAM, DIM ET FERIE peuvent être traitées de la même façon.

Les heures minutes sont reconnues sous différents formats :

heures suivies de H /^[0-9][H]$/
/^[0-2][0-9][H]$/
heures minutes avec minutes terminées par 0 ou 5. Séparateur H ou : /^[0-9][H:][0-5][05]$/
/^[0-2][0-9][H:][0-5][05]$/
heures minutes (toutes valeurs de minutes). Les lignes correspondantes sont RJ1 (rejet mineur). /^[0-9][H:][0-9][0-9]$/
/^[0-9][0-9][H:][0-9][0-9]$/

 

Quelques traitements d'exception ont été ajoutés :

 

programme 2 (plages2w.bat - plages2.awk, plages2a.awk, plages2b.awk)

Ce deuxième programme effectue la phase active de la normalisation. Il ne traite que les libellés non rejetés lors de la première analyse.

Le traitement se fait à partir de la liste de mots clés reconnus pour chaque libellé.

 

plages2.awk recherche le format de chaque libellé.
Le vocabulaire est plus réduit et chaque mot est remplacé par son code :

LUNDI
MARDI
MERCREDI
JEUDI
VENDREDI
SAMEDI
DIMANCHE
FERIE
HO
HNO
NUIT
SAUF-FERIE
J1
J2
J3
J4
J5
S1
D1
D2
M1
M2
M3
M4

Un calcul est effectué également sur les heures-minutes pour déterminer quel type de syntaxe doit être utilisé. Les heures-minutes sont regroupées par deux (car il faut un couple d'heures minutes pour définir une plage horaire). Les codes possibles sont :

hrHR
0000
HRhr
si heure 1 < heure 2
si heure 1 = heure 2
si heure 1 > heure 2

 

Les programmes plages2a.awk et plages2b.awk ont un fonctionnement plus mécanique.
A partir du format obtenu précédemment, ils reconbinent la liste de mots reconnus pour obtenir le nouveau libellé.

Ainsi le format "J1J5hrHRS1hrHR" est utilisé pour les deux libellés suivants :

libellé d'origine LUN AU VEN DE 07H A 19H + SAM DE 07H A 18H
mots reconnus LUNDI VENDREDI 07:00 19:00 SAMEDI 07:00 18:00
libellé calculé LUNDI A VENDREDI 07:00 -> 19:00
SAMEDI 07:00 -> 18:00

 

libellé d'origine LUNDI A VENDREDI 17H30 A 20H00 ET LE SAMEDI DE 8H00 A 19H00
mots reconnus LUNDI VENDREDI 17:30 20:00 SAMEDI 08:00 19:00
libellé calculé LUNDI A VENDREDI 17:30 -> 20:00
SAMEDI 08:00 -> 19:00

 

Le tableau suivant donne les formats et règles qui ont été utilisés au cours des traitements (une même règle peut correspondre à plusieurs formats) :

format règle format règle
M1 1 M2J1J5hrHRhrHRS1D1D2 110
M2 2 J1J5HRhrS1D1D2 110
M3 3 M2J1J5HRhrS1D1D2 110
M1hrHR 20 HRhrJ1J5S1D1D2 111
hrHR 20 M2HRhrS1D1D2 112
M2HRhr 21 S1D1D2 120
M1hrHRhrHR 22 M2S1D1D2 120
J1J5hrHR 100 J1J5HRhrS1 150
J1J5hrHRhrHR 100 J1J5HRhrD1D2 160
M2J1J5HRhr 100 M2J1J5hrHRS1hrHR 200
M1J1J5hrHRhrHR 100 J1J5hrHRS1hrHR 200
M1J1J5hrHR 100 M1J1J5hrHRS1hrHR 200
hrHRJ1J5 101 J1J5hrHRhrHRS1hrHR 202
M1hrHRJ1J5 101 M2J1J5hrHRhrHRS1hrHR 202
M1hrHRhrHRJ1J5 101 J1J5hrHRS1hrHRhrHR 220
J1J5hrHRhrHRS1D1D2 110    

 

Les fichiers suivants donnent les résultats complets des traitements. Ils ont été épurées des informations "confidentielles". Pour manipuler ces fichiers, il est préférable de les importer dans un tableur ou une base de données.

resultat final liste 1
resultat final liste 2

 

évaluation du résultat de traitement

L'analyse du résultat des traitements apporte les informations les plus instructives.

Je n'ai pas constaté "d'erreur de compréhension" dans les libellés produits par les programmes. Tous semblent corrects. Cependant ces programmes ne sont pas parfaitement fiabilisés et en examinant précisemment leur code, j'ai remarqué plusieurs bugs :

if ( fmt=="J1J5hrHRHHhr" ) { fmtT = 100 }
if ( fmt=="hrHRHHhrJ1J5" ) { fmtT = 101 }

HH est écrit à la place de HR. Cela se traduit par le non traitement de certains libellés.

JOURS OUVRABLES DE 8H A 17H45 (HO)

dont les "mots reconnus" sont, anormalement

LUNDI 08:00 17:45

au lieu de

LUNDI VENDREDI 08:00 17:45

Le bug est dans le module plages1.awk :
JOURS OUVRABLES est une expression remarquable,
transformée en LUNDI-VENDREDI. au début du programme,
mais dans le traitement mot par mot,
cette chaîne est analysée à tort comme LUNDI comme tous les "mots" commençant par LUN.

 

L'examen des formats acceptés non traités fait apparaître des cas de libellés dont les règles devraient être ajoutées dans les traitements :

liste 1... (093+21)/256 = 44% (au lieu de 32%)
liste 2... (169+47)/484 = 44% (au lieu de 35%)
SEMAINE DE 17H-07H45 + SAMEDI DIMANCHE FERIE 24/24 ( xxx43 IM)
LUN AU VEN 21H A 07H SAM DIM FERIE DE 08H A 21H (xxx43ID)
SAMEDI-DIMANCHE ET JOURS FERIES DE 8H A 17H (xxx63 xxxxx)
SAM DIM FERIE DE 08H A 17H (xxx63 ID)

Le même format apparaît 8 fois dans la liste 2, par exemple :

SAMEDI-DIMANCHE-FERIE DE 8H A 17H30
SAMEDI,DIMANCHE ET FERIE 24H SUR 24
HNO:SEMAINE 18H00-24H00+00H00-08H00+SAMEDI+DIMANCHE+FERIES

est traduit

LUNDI A VENDREDI 18:00 ->24:00 + 00:00 -> 08:00
SAMEDI + DIMANCHE + FERIE 00:00 -> 24:00

mais la traduction

LUNDI A VENDREDI 00:00 -> 08:00 + 18:00 -> 24:00
SAMEDI + DIMANCHE + FERIE 00:00 -> 24:00

serait plus pertinente, ce qui impliquerait un complément au programme pour ordonner les heures.

HNO LUNDI AU VENDREDI 8H30-12H/13H30-16H30, SAMEDI, DIMANCHE ET FERIES

qui est traduit

LUNDI A VENDREDI 08:30 -> 12:00 + 13:30 -> 16:30
SAMEDI + DIMANCHE + FERIE 00:00 -> 24:00

Des formats très voisins sont observés (Ils n'ont pas été traites par les règles connues du programme).

M2J1J5hrHRHRhrS1D1D2 HNO SEMAINE 12H-13H / 17H48-8H, SAMEDI, DIMANCHE ET FERIES
M2J1J5HRhrhrHRS1D1D2 HNO SEMAINE 17H-8H/12H-13H30, SAMEDI, DIMANCHE ET FERIES
M2J1J5HRhrHRhrS1D1D2 HNO SEMAINE 18H00-08H00 ET 18H-8H LES SAMEDI, DIMANCHE ET FERIES

Les deux premiers libellés sont équivalents et correspondraient à une traduction de la forme suivante :

LUNDI A VENDREDI 00:00 -> 08:00 + 12:00 -> 13:00 + 17:48 -> 24:00
SAMEDI + DIMANCHE + FERIE 00:00 -> 24:00

Le troisième libellé est tout à fait différent car la première plage se rapporte aux jours de semaine tandis que la deuxième concerne les samedis dimanches et fériés.

J1J5HRhrS1J1 LUNDI A VENDREDI DE 19H A 7H + SAMEDI DE 18H30 A LUNDI 7H
J1J5HRhrS1J1D2 LUNDI A VENDREDI DE 19H A 7H + SAMEDI DE 18H30 A LUNDI 7H + FERIES
J1J5HRhrS1D1J5J1D2 LUNDI A VENDREDI DE 17H A 8H + WEEK-END DU VEN.17H A LUN.8H + FERIES

 

LUNDI AU SAMEDI DE 08H A 18H (xxx DR)
DU LUNDI 17H00 AU VENDREDI 08H00
SAMEDI 8H-17H30
SEMAINE ET SAMEDI DE 17H30 A 20H + DIMANCHE ET FERIE DE 8H A 20H
HNO SEMAINE, SAMEDI, DIMANCHE, ET FERIES
VENDREDI DE 16H00 A 24H00
VENDREDI DE 12H/13H30 16H45/24H
SEMAINE 00H00/7H00,12H00/13H30,16H30/24H00.WEEK END ET FERIES 24H
TOUS LES JOURS ENTRE 0H00 ET 08H00
LUNDI 0H A 8H
VENDREDI 16H00 AU LUNDI 07H00,ET JOURS FERIES = HNO
DU LUNDI AU VENDREDI DE 16H45 A 07H00 ET DE 12H00 A 13H30
NUITS ET WEEKEND
HO+HNO
SEMAINE HNO + SAMEDI
DE 7H A 8H,DE 17H A 20H SAM+DIM+FER DE 8H A 20H

L'examen des rejets fait apparaître d'autres cas de mise en échec du programme :

SEMAINE DE 17H30 A 08HOO WEEK-END ET FERIES

La chaîne 08HOO n'est pas reconnue car des O ont été tapés à la place de zéro.

SEMAINE 17-24H,SAM,DIM,FERIES 8-24H

17-24H au lieu de 17H 24H ou 17H00 24H00.

LUN AU VEN DE 07H A 18H xxx xxxx

car il contenait du texte "non horaire" (remplacé ici par des xx).

LU AU VEN 17H-21H + SAM 08H-21H +DIM FERIE :08H-21H (xxx43 ID)

même type de problème avec

HO:DE 08H00 A 18H00
HO :08H00 - 18H00
SEMAINE DE 17H15 A 08H00 +DAM+DIM+FERIE (xxx xxxxx IM)
SEMAINDE DE 17H A 19H +SAM+DIM+FERIE DE 08H A 19H (xxx15 ID)
SAM+DIM+FERIEDE 08H A 21H (xxx xxxxxxxxxxxxxxx)

SEMAINDE n'est pas reconnu car le test est réalise sur "SEMAINE"
FERIEDE est analysé (à tort) comme FERIE et le libellé est accepté.

SEMAINE A PARTIR DE 16H30-WEED END ET FERIES 24H SUR 24
LUNDI 8H AU LUNDI SUIVANT 8H
TOUS LES JOURS 24H/24H SAUF JOURS OUVRABLES DE 8H A 17H45 (HNO)
TOUS LES JOURS HEURES OUVRABLES ET NON OUVRABLES
TOUS LES JOURS SAUF SAMEDI 8H-18H
TOUS LES JOURS HNO SAUF DIMANCHE+FERIE 8H-18H
TOUS LES JOURS DE 7H A 21H SAUF WEEK-END ET FERIES 8H/21H (ALARMES ID)
LUN AU VEN DE 17H A 8H PLUS SAM+DIM+FERIE (xxx)
DU VENDREDI 17H00 AU LUNDI 8H ET FERIE DE LA VEILLE 17H AU LENDEMAIN 8H
AUTRES PLAGES
EN DEHORS DE CES PLAGES
WEEK-END AVEC FERIE OU FERIE SEUL + ELECTIONS (VEILLE 17H LENDEMAIN 8H)
WEEK END JUILLET AOUT 95 2EME ASTREINTE EN SECOURS DE LA NORMALE
PASSAGE AN 2000 DU VENDREDI 31/12/99 A 18H00 AU LUNDI 03/01/00 A 08H00

Ces libellés spéciaux montrent - à contrario- un certain soucis d'homogénéïté dans les autres libellés vus précédemment !

 

conclusion

Ce qui me frappe à l'issue de cette longue explication, c'est de remarquer que les explications sur le traitement à réaliser et la manière d'y parvenir sont aussi longues que la liste des libellés à traduire !

Je disposais pour cette étude d'environ 500 libellés différents.

Pour traduire ces libellés, j'ai réalisé les programmes suivants qui font au total 607 lignes de programme (y compris, il est vrai, les lignes blanches).

programme nombre de lignes
plages1w.bat 24
plages1.awk 137
plages2w.bat 39
plages2.awk 61
plages2a.awk 219
plages2b.awk 127
total 607

On doit se demander si on est bien en présence d'un processus automatisable.

En l'état actuel des choses, l'utilisation des ordinateurs ne se justifie que pour réaliser des tâches répétitives. L'écriture de ces programmes se justifie si les mêmes règles de traduction peuvent fonctionner sur les autres bases de données du même type, ce qui est loin d'être certain.

8 règles de traduction différentes ont été utilisées pour la liste 1, 16 pour la liste 2, soit un ratio d'environ 3 règles pour 100 libellés. L'échantillon est manifestement insuffisant. Qu'en serait-il avec 10 000 libellés ? Verrait-on le nombre de règles nécessaires diminuer et le rendement du programme augmenter ? (actuellement un taux de réussite de l'odre de 30%).

J'ai le sentiment que la méthode même de développement des programmes devrait être repensée pour résoudre ce genre de problème. Il ne s'agit plus de disposer d'un logiciel qui sait traiter toutes les situations imaginées au départ, mais plutôt d'un mécanisme capable d'assimiler de nouvelles règles en permanence. Les recherches sur l'intelligence artificielle allaient dans ce sens, mais jusqu'ici je n'ai guère vu de résultats probants.

D'une certaine manière, il est plus excitant d'essayer de réaliser un logiciel capable de comprendre un grand nombre de structures de phrases, que de s'intéresser à ce que racontent ces phrases, qui est souvent banal.

Je ne serais qu'à moitié surpris qu'une telle dérive ne se soit produite chez les opérateurs aveugles de la NSA qui n'ont rien vu venir malgré leurs machines sophistiquées.

 

 

retour ; page echelon ; début de page


me contacter par e-mail jean-claude.devaux (site officiel)

mise à jour le 17/06/2002