• Aucun résultat trouvé

Conception et mise en œuvre de l’analyse de document Web

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

2. Conception du système SARIPOD

2.3 Conception et mise en œuvre de l’analyse de document Web

La conception UML du module d’analyse de document Web est faite via un package Java composé de plusieurs sous-packages dont les classes coopèrent tout au long du processus d’analyse. Pour illustrer l’architecture de ce module, nous présentons le diagramme de classes général (voir figure 5.18). Le fonctionnement de ce module est illustré par le diagramme des séquences de la figure 5.23.

Figure 5.18 : Diagramme de classes général du module d’analyse de document Web

: Index : Filtre : DocumentParser : Resultat : Adjacence

URL,Mots clés getLinks(URL)

Liste documents

getResultat()

Liste liens dans URL

getLinks(URLi) Parse(LIENi) Parse(URL) document valide MesureMatch(mots clés,URLi) GetMatrix(liste doc) Matrice Adjacence Structures + Bloc + Document + ListBlocs + ListStyles + Style Utilities + ContentAnalyser + Label + TagsAnalyser + TitleLabeller Modules + DocumentAnalyser + Segmenter + TitlesIdentifier + TreeCreator

2.3.1 Diagramme de classes du processus de segmentation

Dans une première itération, nous avons examiné la structure de l’arbre DOM. En se basant sur ce résultat, nous avons développé la classe "Segmenter" qui correspond au processus de segmentation. La méthode "getSegments" de cette classe permet d’engendrer la liste des blocs et la liste des styles du document dans un seul parcours de l’arbre DOM. Nous avons aussi créé les classes du sous-package "Structures" et la classe "TagsAnalyser" du sous-package "Utilities" qui permettent d’analyser les balises et les attributs HTML.

Figure 5.19 : Digramme de classes du processus de segmentation

Lors de la segmentation, les méta-données et le contenu de la balise "title" sont extraits. Nous avons analysé les résultats obtenus en effectuant des statistiques sur le contenu des balises "meta" et "title".

La figure 4.19 schématise le diagramme de classes de ce processus. La méthode "parse" parcourt récursivement l’arbre DOM en identifiant le type de chaque bloc et son style (il s’agit de l’étape d’étiquetage présentée dans la spécification de ce processus). Pour ce faire, elle fait appel aux méthodes "getNodeStyle" et "getPoidsElement" de la classe "TagsAalyser". La première permet de calculer le style d’un noeud et la deuxième identifie le poids du séparateur vertical engendré par une balise.

La classe "Document" est une structure de données qui contient la liste des blocs, la liste des styles, les méta-données et le contenu de la balise "title" du document. Toutes ces informations sont récupérées dans un seul parcours de l’arbre DOM.

2.3.2 Diagramme de classes du calcul des niveaux des styles

Nous nous sommes focalisés, dans la deuxième itération, sur le calcul des niveaux des styles puisqu’il s’agit d’un traitement essentiel pour l’identification des titres. L’idée de départ consistait à attribuer à chacun des attributs de style un poids et de calculer pour chaque style la somme pondérée des valeurs de ses attributs. Ayant testé plusieurs combinaisons de poids, nous avons découvert qu’il faut tenir compte de la régularité des titres et la fréquence des styles. Enfin, nous avons abouti à la solution présentée dans la spécification ci-dessus.

Dans cette itération, la méthode "sort" de la classe "ListStyles" permet d’attribuer des niveaux aux styles. Nous avons aussi créé la classe "ContentsAnalyser" dont la méthode "canBeTitle" permet d’attribuer l’étiquette "PeutEtreTitre" aux blocs en analysant leurs contenus. La figure 5.20 illustre le diagramme partiel de classes de cette itération.

Figure 5.20 : Diagramme de classes du calcul des niveaux des styles 2.3.3 Diagramme de classes de l’étiquetage sémantique des blocs

L’objectif de cette itération est d’identifier les titres des sections "non corps" et les légendes. En effet, des étiquettes sont attribuées à ces blocs en se basant sur des expressions régulières. Pour chaque étiquette, nous avons défini une expression régulière apprise à partir des exemples de documents.

Ayant un bloc B et la liste des expressions régulières, nous calculons le taux de correspondance entre B et chaque étiquette. L’étiquette ayant le taux de correspondance le plus élevé sera sélectionnée. Nous attribuons cette étiquette à B si le taux de correspondance est supérieur à un seuil donné. Le taux de correspondance est calculé en identifiant la sous-chaîne du texte du bloc qui correspond à l’expression régulière. Le taux est égal au rapport entre la longueur de cette sous-chaîne et la longueur du texte du bloc.

L’étiquetage sémantique relève de la classe "TitleLabeller" du package "Utilities" qui définit les différents labels et expressions régulières. Il implémente la méthode "mesure-Match" permettant de comparer une chaîne de caractères à une expression régulière en se basant sur la classe "RegularExpression" appartenant à l’environnement de développement. Tel que présenté par la figure 5.21, la classe "TitleLabeller" définit plusieurs instances de la classe "Label" qui ont chacune un nom et une expression régulière associée.

2.3.4 Diagramme de séquences du module d’analyse d’un document Web

Le diagramme de séquences que nous présentons dans la figure 5.22 illustre les grandes étapes du processus d’analyse d’un document Web. Il s’agit de mettre l’accent sur l’enchaînement des traitements et son partage entre les principaux modules sans présenter tous les messages échangés entre les classes.

Figure 5.22 : Diagramme de séquences du module d’analyse d’un document Web

2.4 Conception et mise en œuvre du tri de documents par pertinence