• Aucun résultat trouvé

Module de construction du RPMH de dictionnaire

Chapitre 5 : Spécification et conception du système SARIPOD

1. Spécification du système SARIPOD

1.1 Module de construction du RPMH de dictionnaire

Dans le cadre de la reformulation de la requête utilisateur, le système interroge le RPMH du dictionnaire de mots en vue de déterminer les mots sémantiquement proches des mots-clés proposés par l’utilisateur du système.

Ce module accepte en entrée le dictionnaire français « Le Grand Robert » sous format XML

et engendre l’ensemble des circuits dans ce RPMH des mots de ce dictionnaire. En effet, l’objectif ultime de ce module réside dans la génération des mots sémantiquement les plus proches d’un mot donné dans la requête utilisateur. Cette proximité entre deux mots quelconques M1 et M2 du dictionnaire est calculée par la formule suivante :

Proximité_Dictionnaire (M1, M2) = Nbre de circuits (M1, M2)/Nbre maximum de circuits détectés

L’architecture logicielle de ce module est présentée par la figure 5.2. En fait, dans notre prototype, ce module interagit avec le module d’analyse de documents Web pour permettre au module de tri de trier les pages Web sélectionnées selon leurs degrés de pertinences possibilistes (les tâches des ces modules seront détaillées dans la suite).

Figure 5.2 : Architecture interne de module de construction du RPMH de dictionnaire

En utilisant le graphe de dictionnaire comme source de données au format XML, ce module génère la liste des acceptions d’un mot donné. Il commence, en fait, par étudier certaines

Dictionnaire « Le Grand Robert »

sous format XML

Java Language Binding

Document Arborescent (XML Object)

Liste des acceptions Graphe de dictionnaire (RPMH)

Transformation

Recherche des composantes de sens

JBuilder BorlandXML

propriétés des circuits collectés à partir du graphe afin de déduire les composantes de sens cherchées.

La construction du RPMH de dictionnaire est faite une fois pour toutes par ce module dès le démarrage du système SARIPOD. De plus elle est purement liée à la source de données XML dictionnaire français « Le Grand Robert ». En effet, pour chaque requête utilisateur, ce

module accède aux parties de ce RPMH, correspondantes aux mots-clés de la requête, et ce en vue de faire les groupes de sens intermédiaires ainsi que leur fusion afin d’obtenir les composantes de sens. La figure 5.3 présente une description fonctionnelle de la recherche des composantes de sens.

Figure 5.3 : Description fonctionnelle de la recherche des composantes de sens

Par ailleurs, le traitement fait par le module de construction du RPMH de dictionnaire passe par les 8 étapes suivantes afin d’arriver à la fin à la liste finale des composantes de sens :

(i) Phase préliminaire

Cette phase préliminaire consiste à nettoyer la source de données utilisée au format XML. Dans ce fichier, chaque entrée étant décrite par un ensemble de balises traduisant des informations de natures syntaxiques (voir figures 5.4 et 5.5).

Figure 5.4 : La DTD initiale du dictionnaire

Regroupement des mots

Graphe

Liste des circuits

Groupe de sens intermédiaires Matrice des circuits communs

Liste finale des sens Fusion

<!-- Premier NIVEAU de l'arbre --> <!ELEMENT DICO (DEF+)> <!-- Deuxième NIVEAU de l'arbre -->

<!ELEMENT DEF

(ENTRANT?,(STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU|AUTREFORME|PRONOMINAL)*,(CONTRAIRE|DERI VATIF|COMPARATIF|HOMONYME)*)>

<!ATTLIST DEF

mot CDATA #REQUIRED phonetique CDATA #REQUIRED cat CDATA #REQUIRED> <!ELEMENT CONTRAIRE (#PCDATA)*> <!ELEMENT DERIVATIF (#PCDATA)*> <!ELEMENT COMPARATIF (#PCDATA)*> <!ELEMENT HOMONYME (#PCDATA)*>

<!ELEMENT AUTREFORME (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ELEMENT PRONOMINAL (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ELEMENT NIVEAU (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ATTLIST NIVEAU type (1|2|3|4) #REQUIRED>

<!-- Troisième NIVEAU -->

<!ELEMENT META (STANDARD|ITALIQUE)*> <!ELEMENT MOTSLIES (STANDARD|ITALIQUE)*> <!ELEMENT STANDARD (#PCDATA)*>

Figure 5.5 : La source de données initiale de dictionnaire

En effet, nous avons commencé par un nettoyage automatique en éliminant les redondances à l’intérieur de chaque définition de mot du dictionnaire. Puis, nous avons procédé à un nettoyage manuel tout en laissant dans la définition d’un mot uniquement les balises des mots sémantiquement proches de ce dernier (voir figures 5.6 et 5.7). Cette phase de nettoyage permet de préparer le terrain aux phases suivantes dans le traitement afin d’améliorer les performances de ce module.

Figure 5.6 : la source de données finale de dictionnaire sous format XML

La DTD finale du dictionnaire sous forme de fichier XML est donnée par la figure 5.7.

<DEF mot="a" phonetique="[a, à]" cat="n. m. "> <STANDARD> <MOT>premier</MOT><TAG>ADJ:num:ord</TAG> <MOT>lettre</MOT><TAG>NOM</TAG> <MOT>et</MOT><TAG>CON:coo</TAG> <MOT>premier</MOT><TAG>ADJ:num:ord</TAG> <MOT>voyelle</MOT><TAG>NOM</TAG> <MOT>de</MOT><TAG>PRE</TAG> <MOT>le</MOT><TAG>DET:def</TAG> <MOT>alphabet</MOT><TAG>NOM</TAG> <MOT>A</MOT><TAG>PRE</TAG> </STANDARD> <ITALIQUE> <MOT>majuscule</MOT><TAG>ADJ</TAG> </ITALIQUE> <STANDARD> <MOT>avoir</MOT><TAG>VER:pres</TAG> </STANDARD> <ITALIQUE> <MOT>minuscule</MOT><TAG>ADJ</TAG> </ITALIQUE> … <?xml version="1.0" encoding="ISO8859_1" ?> <!DOCTYPE dictionnaire SYSTEM "F1.dtd"> <dictionnaire> <mot texte="abaca"> <traduction>bananier</traduction><TAG>NOM</TAG> <traduction>philippin</traduction><TAG>ADJ</TAG> <traduction>pétiole</traduction><TAG>NOM</TAG> <traduction>fournir</traduction><TAG>VER:pres</TAG> <traduction>matière</traduction><TAG>NOM</TAG> <traduction>textile</traduction><TAG>ADJ</TAG> <traduction>matière</traduction><TAG>NOM</TAG> <traduction>appeler</traduction><TAG>VER:pper</TAG> <traduction>chanvre</traduction><TAG>NOM</TAG> <traduction>manille</traduction><TAG>NOM</TAG> <traduction>tagal</traduction><TAG>NOM</TAG> <traduction>tirer</traduction><TAG>VER:pper</TAG> <traduction>bananier</traduction><TAG>NOM</TAG> <traduction>cordage</traduction><TAG>NOM</TAG> <traduction>natte</traduction><TAG>NOM</TAG> <traduction>paillasson</traduction><TAG>NOM</TAG> </mot> <mot texte="abacule"> <traduction>cube</traduction><TAG>ADJ</TAG> <traduction>élément</traduction><TAG>NOM</TAG> <traduction>mosaïque</traduction><TAG>NOM</TAG> </mot> … </dictionnaire>

Figure 5.7 : La DTD finale du dictionnaire sous format XML (ii) La première phase : transformation XML →→→→ DOM

Dans cette première phase, la source de données sous format XML sera transformée en un arbre DOM. En fait, le DOM (Document Object Model) est une interface de programmation (API) qui consiste à décomposer le contenu d'un document HTML ou XML en une arborescence de noeuds (chaque élément du document est un noeud).

D’autre part, DOM est une recommandation du W3C26 (consortium qui gère les standards liés

à Internet). Son principe consiste à représenter en mémoire le contenu d'un document HTML ou XML sous la forme d'une arborescence d'objets.

Les développeurs d'applications qui désirent manipuler le contenu d'un document HTML ou XML utilisent un parseur logiciel compatible DOM27. Ils ont alors un ensemble d'API leur

26 http://www.w3.org/

<!-- Premier NIVEAU de l'arbre -->

<!ELEMENT DICO (COMMENTAIRES,INFO_DICO,DEF+)> <!-- Deuxième NIVEAU de l'arbre -->

<!ELEMENT COMMENTAIRES (#PCDATA)> <!ELEMENT INFO_DICO (nbr_sommets?,nbr_verbes?,nbr_noms?,nbr_adjectifs?,nbr_adverbes?,nbr_prepositions?,nbr_conjonctions?,nbr_articles?,nbr_p ronoms?)> <!ELEMENT DEF (ENTRANT?,(STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU|AUTREFORME|PRONOMINAL)*,(CONTRAIRE|DE RIVATIF|COMPARATIF|HOMONYME)*)> <!ATTLIST DEF

mot CDATA #REQUIRED phonetique CDATA #REQUIRED cat CDATA #REQUIRED ishomo CDATA #IMPLIED> <!-- Troisième NIVEAU de l'arbre -->

<!ELEMENT nbr_sommets EMPTY> <!ELEMENT nbr_verbes EMPTY> <!ELEMENT nbr_noms EMPTY> <!ELEMENT nbr_adjectifs EMPTY> <!ELEMENT nbr_adverbes EMPTY> <!ELEMENT nbr_prepositions EMPTY> <!ELEMENT nbr_conjonctions EMPTY> <!ELEMENT nbr_articles EMPTY> <!ELEMENT nbr_pronoms EMPTY> <!ATTLIST nbr_sommets n CDATA #REQUIRED> <!ATTLIST nbr_verbes n CDATA #REQUIRED> <!ATTLIST nbr_noms n CDATA #REQUIRED> <!ATTLIST nbr_adjectifs n CDATA #REQUIRED> <!ATTLIST nbr_adverbes n CDATA #REQUIRED> <!ATTLIST nbr_prepositions n CDATA #REQUIRED> <!ATTLIST nbr_conjonctions n CDATA #REQUIRED> <!ATTLIST nbr_articles n CDATA #REQUIRED> <!ATTLIST nbr_pronoms n CDATA #REQUIRED> <!ELEMENT ENTRANT (#PCDATA)> <!ELEMENT CONTRAIRE (MOT,TAG?)*> <!ELEMENT DERIVATIF (MOT,TAG?)*> <!ELEMENT COMPARATIF (MOT,TAG?)*> <!ELEMENT HOMONYME (MOT,TAG?)*>

<!ELEMENT AUTREFORME (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ELEMENT PRONOMINAL (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ELEMENT NIVEAU (STANDARD|ITALIQUE|META|MOTSLIES|NIVEAU)*> <!ATTLIST NIVEAU type (1|2|3|4) #REQUIRED>

<!-- Quatrième NIVEAU -->

<!ELEMENT META (STANDARD|ITALIQUE)*> <!ELEMENT MOTSLIES (STANDARD|ITALIQUE)*> <!ELEMENT STANDARD (MOT,TAG?)*>

<!ELEMENT ITALIQUE (MOT,TAG?)*> <!ELEMENT MOT (#PCDATA)> <!ELEMENT TAG (#PCDATA)>

permettant de parcourir l'arborescence des objets afin d'affecter des opérations de lecture, ajout, modification, suppression de données.

(iii) La deuxième phase : transformation DOM →→→→ Graphe

Les services de “JAVA XML Binding” nous permettent de transformer l’arbre DOM, obtenu suite à la première phase du traitement, en un graphe. En effet, la manipulation de ce dernier est plus facile pour générer l’ensemble de circuits existants entre les nœuds de ce graphe dans la phase suivante.

(iv) La troisième phase : recherche de circuits

Cette phase est consacrée au dénombrement des circuits à partir du graphe RPMH de dictionnaire résultant de la phase précédente. Rappelons qu’un circuit correspondant à un mot donné est un enchaînement de plusieurs mots en partant de ce mot donné et en y revenant à ce dernier. De plus l’interface utilisateur permet un contrôle du paramétrage des circuits (longueur, nombre, etc.) afin que le paramétrage de ce module soit optimisé.

(v) La quatrième phase : recherche de mots sémantiquement proches

Le module de construction du RPMH de dictionnaire s’intéresse dans cette phase à la recherche des mots sémantiquement proches d’un mot donné à partir du nombre de circuits collectés pour ce dernier tout en précisant les proximités sémantiques entre ces mots. Le poids d’un mot sémantiquement proche est proportionnel au nombre de circuits le reliant au mot de départ (voir exemples en annexe 3).

(vi) La cinquième phase : construction de la matrice des circuits communs

La construction de cette matrice permet de récapituler les relations existantes entre les mots, sémantiquement proches du mot de départ, collectés dans la phase précédente. Ces relations sont comptabilisées par les nombres des circuits contenant à la fois les deux mots, entrées de chaque cellule de la matrice.

(vii) La sixième phase : construction de groupes de sens intermédiaires

En utilisant la matrice des circuits de la cinquième phase ainsi que la liste de mots proches pondérés, le module de construction du RPMH de dictionnaire construit, durant cette phase, les groupes de sens intermédiaires (possédant chacun un sens) correspondant au mot de départ. Nous obtenons en conséquence plusieurs groupes sémantiquement proches, une dernière phase de fusion de ces groupes s’avère utile afin d’obtenir les composantes (ou classes) de sens finales.

(viii) La dernière phase : fusion de groupes de sens intermédiaires  composantes de sens

C’est la dernière phase dans laquelle le module de construction du RPMH de dictionnaire fusionne les groupes de sens sémantiquement proches pour obtenir les composantes de sens correspondantes au mot de départ qui pourrait être l’un de termes de la requête utilisateur.