• Aucun résultat trouvé

Chapitre 2 : Etat de l’art

2.3. Interprétation

2.3.3. Analyse syntaxique

La dernière étape de la reconnaissance d’expressions mathématiques consiste le plus souvent en une analyse syntaxique. L’objectif de cette analyse se résume en trois points principaux :

− Produire l’arbre de dérivation final de l’expression dans le but d’obtenir une représentation hiérarchique transformable facilement aux standards comme LaTeX ou MathML ;

− Assurer l’exactitude grammaticale de l’expression reconnue ;

− Et, ce qui est plus important : déduire un contexte global de l’expression afin d’enlever des ambiguïtés rencontrées tout au long de la reconnaissance.

Une expression mathématique est générée par un langage formel bidimensionnel. Une grammaire hors contexte peut parfaitement produire toutes les expressions mathématiques. Il suffira donc de disposer d’un analyseur (parseur) efficace pour obtenir l’arbre de dérivation de l’expression. Les grammaires hors contexte sont efficacement employées pour les langages formels 1D (comme les langages de programmation). La grammaire 2D peut être construite directement à partir des expressions mathématiques d’apprentissage [18]. Remarquons qu’il faut beaucoup d’expressions représentatives pour pouvoir généraliser la grammaire résultante. Plus récemment, une extension en grammaire 2D hors contexte a été proposée pour modéliser les relations entre les symboles mathématiques [19][93]. On définit une région par un rectangle dans l’image d’entrée. Supposons

NAB

soit

une règle de production de la grammaire. Elle dénote la production de la région N en unifiant les régions A et B. La règle est appliquée si une certaine contrainte est respectée, de plus un coût est associé à cette production.

Figure 37 - Schéma général de production de la règle

NAB

La contrainte à respecter est montrée dans la Figure 37, les régions R1,R2 (A,B) sont unifiées si un point caractéristique de R2 (le point F) est à l’intérieur

R

62

du rectangle C relative au type de règle de production. La région résultante R est le rectangle le plus petit contenant R1 et R2. La pénalité est calculée en fonction des tailles et positions relatives de A et B. Les règles de productions sont appliquées successivement jusqu’à unifier toutes les régions en une seule qui représente l’expression.

Cependant, analyser les langages bidimensionnels n’est pas directe et nécessite des algorithmes spéciaux et des contraintes pour diminuer la complexité [21]. On trouve dans la littérature deux approches principales pour effectuer l’analyse syntaxique : une analyse basée sur une grammaire, ou bien une autre se basant sur un graphe.

2.3.3.1. Approche grammaticale

Chan et al. proposent une méthode basée sur une « Definite Clause Grammar » (DCG) [59]. Tout d’abord, l’expression est transformée de sa forme bidimensionnelle en une représentation unidimensionnelle. En effet, il existe beaucoup de parseurs 1D efficaces. La DCG est utilisée pour définir un jeu de règle de remplacement pour analyser les expressions. Ces règles s’écrivent facilement sous forme de prédicats Prolog, mais cette approche n’est pas très efficace car elle implique un grand nombre de retours en arrière. Pour contourner cette difficulté, les auteurs ont proposé d’améliorer l’efficacité du système en transformant les règles pour qu’elles soient factorisées à gauche « left factored ». Cette dernière méthode permet une analyse descendante et améliore nettement la performance de la DCG, notamment en nombre d’opérations logiques appliquées. Plus récemment, Garain et al. proposent une méthode se basant sur une grammaire hors contexte [94]. En s’appuyant sur des informations géométriques extraites de l’expression, ils effectuent l’analyse à l’aide de la grammaire. Initialement, la structure de l’expression est construite en divisant l’expression récursivement en bandes horizontales et verticales jusqu’à ce qu’un niveau atomique soit atteint (un seul symbole). Finalement, chaque élément atomique est fusionné en suivant les règles de production correspondant aux relations spatiales, afin d’obtenir l’équivalent Latex. Dans [24], il est proposé une grammaire probabiliste et structurelle. Chaque règle de la grammaire est reliée à une relation logique (au dessus, en dessous, …). Une probabilité est aussi associée à chaque règle. Donc, la reconnaissance de l’expression est transformée en une recherche des règles maximisant la probabilité d’obtenir une certaine interprétation.

Une approche appelée « Fuzzy Shift Reduce Parsing » (FSRP) est présentée dans [92]. Cette méthode est construite sur une analyse ascendante traditionnelle, donc assure une vérification syntaxique efficace. La logique floue est introduite pour faire face aux ambiguïtés structurelles inhérentes à l’écriture manuscrite. Ils proposent un nouvel algorithme, le « Fuzzy Online Structural Analysis algorithm » (FOSA). L’arbre de l’expression est

Etat de l’art

63

immédiatement mis à jour pour chaque nouveau trait de l’utilisateur. La logique floue est utilisée à chaque étape de la reconnaissance pour pallier aux imprécisions de l’écriture manuscrite [67].

Zanibbi et al. proposent pour leur part une technique basée sur la transformation d’arbre [85]. Ainsi, une recherche récursive permet d’identifier les structures linéaires de l’expression et l’on construit un arbre structurel des lignes de base « BST » (voir § 2.3.1.2). Le BST est ensuite soumis à une analyse lexicale pour transformer les relations spatiales en relations logiques. Cet arbre est traduit en chaîne de caractères et ensuite analysé avec une grammaire hors contexte classique (comme celle utilisée pour les langages de programmation) pour produire l’arbre syntaxique de l’expression.

Dans l’approche que nous allons proposer (cf. chapitre 4), nous allons simplifier la complexité de l’utilisation d’une grammaire bidimensionnelle. Pour cela, nous proposons une grammaire qui comporte deux types de règles : horizontales et verticales. Un coût structurel est associé à l’application de chaque règle en fonction des types de symboles et des relations spatiales mises en jeu.

2.3.3.2. Approche graphique

Une grammaire graphique s’applique sur un graphe sous la forme d’un système de réécriture avec analyse descendante. La réécriture consiste à remplacer un sous graphe par un seul nœud contenant l’arbre syntaxique de l’expression. Les grammaires de graphes sont exploitées dans [95] pour la reconnaissance de schémas électriques et d’organigrammes. L’unité de base est le segment, où l’ensemble des segments du graphique sont organisés en forme du graphe en fonction de leur proximité. La grammaire permet ensuite de transformer ce graphe en un autre en fusionnant les segments en symboles ou connexions

Dans une grammaire de graphe pour interpréter les expressions mathématiques, les parties droites des règles de production sont localisées dans le graphe et représentées dans un seul nœud [34][76][96]. Toutefois le temps du calcul est considérablement élevé. L’algorithme de parsing est simple, on applique itérativement la première règle valide jusqu’il ne reste plus des règles applicables. Malheureusement deux règles peuvent réécrire un même graphe de deux manières différentes et donc obtenir deux arbres différents. Pour éviter des ambiguïtés on propose d’introduire du contexte pour les règles. On considère deux critères : la priorité mathématique de l’opérateur décrit dans la règle, et une information graphique. Ce dernier critère est important pour déterminer la priorité à droite, par exemple l’exposant à une priorité plus grande que l’opérateur ‘+’[76] [89].

64

2.4. Optimisation simultanée de la segmentation, la