• Aucun résultat trouvé

Chapitre III Méthode et outils

6.3 Analyse structurelle

L’analyse syntaxique des langages bidimensionnels a été étudiée et est exposée par M. Tomita dans [?][1]. Nous ne présentons pas ici de considérations générales, mais uni- quement les conséquences de l’analyse que nous avons présentée.

6.3.1 Analyse ascendante

L’approche envisagée précédemment est donc du type ascendante (bottom-up). Étant donné un graphe initial, l’application successive des règles de la grammaire, et donc la ré- écriture du graphe, va permettre l’analyse de chacune des sous-expressions composant la notation à reconnaître. Cette réécriture se poursuivra jusqu’à ce que le graphe ne contienne plus qu’un seul et unique nœud, qui contiendra la structure de l’expression mathématique.

La mise en œuvre des contextes assure que la grammaire est sans ambiguïté et donc qu’une règle ne s’applique que si aucune autre ne peut l’être au “même endroit” (avec au moins un nœud en commum). L’analyse peut donc s’effectuer sans retour arrière (backtra- cking).

En cas d’erreur, l’analyse s’arrêtera si aucune règle ne peut s’appliquer ; il restera alors un graphe contenant plus d’un seul nœud.

Pour une illustration de cette réécriture successive du graphe par application des règles, le lecteur pourra consulter l’annexe A. Elle contient les différentes étapes de la reconnaissance structurelle de la formule n! =

n



i=1

i. Nous allons détailler une de ces étapes de réécriture du

graphe après avoir identifier qu’une règle peut s’appliquer ; la figure 18 illustre cette phase. Sur la figure 18, partie gauche, le sous-graphe entouré est la partie identifiée par le mo- dèle de la règle que l’on applique. Ce modèle est supprimé du graphe et remplacé par la production de la règle. Dans notre cas cette production peut-être un nouveau nœud contenant l’arbre de syntaxe abstraite résultant de la combinaison des différents éléments identifiés par

Réécriture

Sous-graphe identifié Arcs sortants

Arcs entrants

par une règle

? ? ? ? nouveaux liens Identification des Nouveau noeud (production de la règle)

FIG. 18 – Réécriture d’un sous-graphe en un nœud

la règle.

Se pose alors le problème des arcs entrants et sortant du sous-graphe. La validité de ces arcs est à reconsidérer afin de connecter le nouvel élément (le nouveau nœud) au reste du graphe. La solution la plus simple serait de recalculer complètement le graphe incluant les modifications apportées par la réécriture. Toutefois, pour des raisons évidentes d’efficacité, une solution incrémentale est préférable. C’est la méthode que nous allons maintenant pré- senter.

6.3.2 Attributs synthétisés

La première étape est de synthétiser les attributs du nouveau nœud. Pour cela, les règles sémantiques telles que nous les avons introduites page 82, sont appliquées.

Un ensemble d’attributs, correspondant à des informations géométriques, est attaché à chacun des nœuds du graphe. On citera entre autres : la position géométrique, la taille rela- tive de l’objet, la ligne de référence par rapport à laquelle le symbole est écrit, etc. Lors de la réécriture, un nouveau nœud est produit ; il est nécessaire de calculer la valeur de chacun de ses attributs. Les règles sémantiques permettent de spécifier la manière dont la valeur de l’attribut sera synthétisée (calculée à partir des fils, donc des valeurs positionnées sur les nœuds du sous-graphe que l’on remplace).

Comme nous l’avons présenté précédemment, l’attribut définissant l’enveloppe du sym- bole ou de la sous-expression, est synthétisé par calcul de la région rectangulaire englobant l’ensemble de la sous-expression reconnue. Les autres attributs, comme la taille ou la ligne de référence, seront calculés en fonction de l’opérateur considéré, donc de la règle sémantique attachée à une règle syntaxique donnée. Prenons un exemple :

6. Analyse structurelle

ligne de référence sera la valeur moyenne des lignes de références pour chacun des objets composant l’opération.

– pour une division du type ab, la nouvelle ligne de référence sera celle du trait de fraction. Disposant de ces attributs pour le nouveau nœud, il est alors possible de faire une mise à jour locale du graphe, et donc de calculer les arcs reliant le nouveau nœud au reste du graphe.

6.3.3 Mise à jour incrémentale du graphe

Les informations géométriques, sous forme d’attributs des nœuds, permettent de déter- miner quels sont les voisins géométriques du nœud. On peut donc appliquer au graphe l’al- gorithme de construction du graphe présenté précédemment ConstruireGrapheInitial en n’itérant le processus que sur le nouveau nœud.

procedure MiseAJourGraphe(Noeud n1, donneeresultat Graphe g) debut

pour chaque type d’arc a faire

pour chaque noeud n2 voisin de n1 faire

si (n1<>n2) et Evaluation(n1, n2, a) alors 5

ajouter l’arc a entre n1,n2 au graphe g

finsi finpour finpour resultat g 10 fin

6.4

Optimisation

Une règle ne peut s’appliquer que si l’on vérifie que l’ensemble des sous-graphes contex- tuels n’est pas présent. L’augmentation de règles de la grammaire induit une augmentation des contextes d’une règle, même si les informations lexicales permettent de limiter les cas d’ambiguïtés. Fort de ce constat, nous avons tenté d’optimiser quelques peu l’application de la grammaire, afin qu’elle soit concrètement applicable à des formules de plusieurs dizaines de symboles, sans être pénalisé par un temps trop long d’exécution.

Étant donnée une règle, l’ensemble qui constitue le contexte doit être testé afin de sa- voir si l’on peut appliquer une règle et ainsi réécrire une partie du graphe. L’évaluation du contexte se limite à tester séquentiellement la présence ou non d’un sous-graphe avec un certain nombre de nœuds ou d’arcs communs avec le sous-graphe reconnu par la règle. Dès que l’un des contextes est reconnu, la règle ne peut pas s’appliquer. L’ordre des compo- sants du contexte est donc important. Une organisation de celui-ci permet de diminuer le temps nécessaire pour décider si une règle peut ou non s’appliquer. Cette réorganisation des graphes constituant le contexte peut s’effectuer dynamiquement, en mettant en tête tout nou-

veau contexte qui fait échouer l’application de la règle. De cette manière, les contextes qui reviennent le plus souvent feront échouer l’application le plus tôt possible.

Cette optimisation a permis un gain de plus de 20% du temps nécessaire pour la recon- naissance d’une formule composée d’environ 25 symboles.

7

Conclusion

Ce chapitre a présenté les points principaux de l’architecture et des méthodes employées dans notre composant pour la reconnaissance structurelle des notations mathématiques. Le choix des grammaires de graphes pour l’analyse syntaxique s’est révélé être bien adapté au problème traité.

La réflexion menée sur l’application des grammaires de graphes au cas particulier de la reconnaissance des notations mathématiques, nous a conduit à l’enrichir de l’étude des contextes, obtenant ainsi une grammaire contextuelle. L’association entre les opérateurs à reconnaître et les règles de grammaires correspondantes, ainsi que les paramètres géomé- triques pris en compte ont permis de construire automatiquement ces contextes de règles. Il est ainsi facile pour un utilisateur de modifier la grammaire, apportant alors un degré supplé- mentaire d’évolutivité du composant OFR.

La dissociation des étapes d’analyses géométriques et syntaxiques permet une adaptation aux différents cas d’étude que nous avons rencontrés, à savoir la reconnaissance structurelle de notations typographiées et manuscrites.

Dans les chapitres suivants, certains aspects plus techniques sont évoqués. Notre expé- rience dans le domaine à même conduit à d’autres travaux. La méthode à base de grammaires de graphes, que nous avons présentée dans ce chapitre, à été utilisée avec succès dans des travaux de recherche sur une interface pour l’édition de formules mathématiques manuscrites (travaux réalisés par S. Smithies [?][1], Université de Otago, Nouvelle Zélande). Nous pré-

senterons les prototypes que nous avons étudiés et utilisés et ceux que nous avons mis au point quant cela était nécessaire, afin d’effectuer les tests de validation de la méthode.

Chapitre IV