Rapport final du projet - DiUF - Universit© de Fribourg

49
UNIVERSITÉ DE FRIBOURG MyLink Aide à la recherche d’informations personnelles Pierre-Yves Donzallaz 26.08.2008 Projet réalisé sous la direction du Dr Denis Lalanne et de l’assistant Florian Evequoz. MyLink est un outil d’aide à la recherche permettant de résumer un document et d’automatiser les processus de recherche et de recoupement de l’information à partir d’un document source.

Transcript of Rapport final du projet - DiUF - Universit© de Fribourg

Page 1: Rapport final du projet - DiUF - Universit© de Fribourg

UNIVERSITÉ DE FRIBOURG

MyLink Aide à la recherche d’informations personnelles

Pierre-Yves Donzallaz

26.08.2008

Projet réalisé sous la direction du Dr Denis Lalanne et de l’assistant Florian Evequoz.

MyLink est un outil d’aide à la recherche permettant de résumer un document et d’automatiser les processus de recherche et de recoupement de l’information à partir d’un document source.

Page 2: Rapport final du projet - DiUF - Universit© de Fribourg

Table des matières Table des références............................................................................................................................ 3

1 Introduction ....................................................................................................................................... 5

2 Objectifs ............................................................................................................................................. 5

2.1 Profil de recherche ...................................................................................................................... 6

2.2 Visionneuse de documents ......................................................................................................... 6

2.3 Résumé graphique ...................................................................................................................... 7

2.4 Automatisation de la recherche .................................................................................................. 8

3 État de l’art ........................................................................................................................................ 9

3.1 TileBars ....................................................................................................................................... 9

3.2 SeeSoft ....................................................................................................................................... 9

4 Fonctionnalités ................................................................................................................................. 11

4.1 Visionneuse de documents ....................................................................................................... 11

4.1.1 Champs de recherches ......................................................................................................... 13

4.2 Résumé global du document ..................................................................................................... 13

4.3 Résumé personnel du document ............................................................................................... 15

4.4 Gestion des thèmes favoris ....................................................................................................... 16

5 Implémentation ................................................................................................................................ 18

5.1 Architecture .............................................................................................................................. 18

5.2 GUIManager ............................................................................................................................. 19

5.3 ThemeDocumentManager ........................................................................................................ 20

5.4 Stemmer ................................................................................................................................... 20

5.5 DocumentManager ................................................................................................................... 22

5.6 ThemeManager......................................................................................................................... 26

5.6.1 Theme et ThemeList ............................................................................................................. 27

5.6.2 ThemeXMLManager ............................................................................................................. 29

5.6.3 ThemeTableManager ........................................................................................................... 30

5.6.4 ThemeDialogManager .......................................................................................................... 31

5.6.5 Word, Paragraph et Document ............................................................................................. 34

5.6.6 ThemeGlobalSummaryManager ........................................................................................... 35

5.6.7 ThemeDetailedSummaryManager ........................................................................................ 38

5.6.8 ThemeWDSManager ............................................................................................................ 41

Page 3: Rapport final du projet - DiUF - Universit© de Fribourg

5.7 WDSInterface ............................................................................................................................ 44

6 Évaluation et améliorations .............................................................................................................. 45

6.1 Visionneuse de documents ....................................................................................................... 45

6.2 Gestion des thèmes .................................................................................................................. 45

6.3 Résumé graphique .................................................................................................................... 46

6.4 Multithreading .......................................................................................................................... 46

6.5 Bugs connus .............................................................................................................................. 47

6.5.1 Ouverture de documents ..................................................................................................... 47

6.5.2 Saturation de l’interface Windows Desktop Search .............................................................. 47

7 Conclusion ........................................................................................................................................ 48

8 Annexe ............................................................................................................................................. 49

8.1 Configuration minimale ............................................................................................................. 49

8.2 Installation ................................................................................................................................ 49

Table des références Figure 1 : Extraction des documents de l'utilisateur à partir d'un document externe ............................... 5

Figure 2 : Shéma de TileBars .................................................................................................................... 9

Figure 3 : Shéma de SeeSoft .................................................................................................................. 10

Figure 4 : Fenêtre principale de MyLink ................................................................................................. 11

Figure 5 : Boîte de dialogue d'ouverture d'une URL ............................................................................... 12

Figure 6 : Boîte de dialogue d'ajout de thème ........................................................................................ 12

Figure 7 : Champ de recherche et mise en évidence d’un pattern .......................................................... 13

Figure 8 : Mot introuvable dans le document ........................................................................................ 13

Figure 9 : Résumé global du document .................................................................................................. 14

Figure 10 : Résumé personnel du document .......................................................................................... 15

Figure 11 : Boîte de dialogue de confirmation de suppression de thèmes .............................................. 16

Figure 12 : Gestion des thèmes favoris .................................................................................................. 17

Figure 13 : Architecture globale du programme ..................................................................................... 18

Figure 14 : Éditeur graphique de formulaires intégré à NetBeans........................................................... 19

Figure 15 : Diagramme de classe du ThemeDocumentManager ............................................................. 20

Figure 16 : Diagramme de classe du Stemmer ........................................................................................ 21

Figure 17 : Diagramme de classe du DocumentManager ........................................................................ 22

Figure 18 : Interface graphique du DocumentManager .......................................................................... 24

Figure 19 : Architecture globale du gestionnaire de thèmes ................................................................... 26

Figure 20 : Diagramme de classe de Theme et ThemeList ...................................................................... 28

Figure 21 : Diagramme de classe du ThemeXMLManager ...................................................................... 30

Page 4: Rapport final du projet - DiUF - Universit© de Fribourg

Figure 22 : Diagramme de classe du ThemeTableManager..................................................................... 30

Figure 23 : Interface graphique du ThemeDialogManager ...................................................................... 31

Figure 24 : Diagramme de classe du ThemeDialogManager ................................................................... 33

Figure 25 : Diagramme de classe de Word, Paragraph et Document ...................................................... 35

Figure 26 : Diagramme de classe du ThemeGlobalSummaryManager .................................................... 36

Figure 27 : Interface graphique du ThemeDetailedSummaryManager .................................................... 39

Figure 28 : Diagramme de classe du ThemeDetailedSummaryManager ................................................. 41

Figure 29 : Diagramme de classe du ThemeWDSManager...................................................................... 42

Figure 30 : Interface graphique du ThemeWDSManager ........................................................................ 43

Figure 31 : Diagramme de classe de WDSInterface ................................................................................ 44

Figure 32 : Page d'accueil de Last.fm ..................................................................................................... 46

Figure 33 : Saturation de l'interface Windows Desktop Search ............................................................... 47

Extrait de code 1 : Préparation de la visionneuse de documents lors de l’ouverture d’un fichier ............ 23

Extrait de code 2 : Méthode repaintHighlights ....................................................................................... 25

Extrait de code 3 : Extrait du fichier XML ............................................................................................... 29

Extrait de code 4 : Méthode saveXMLFile .............................................................................................. 29

Extrait de code 5 : Méthode setActiveMode .......................................................................................... 31

Extrait de code 6 : Méthode getWord .................................................................................................... 32

Extrait de code 7 : Méthode updateWordHighLight ............................................................................... 33

Extrait de code 8 : Méthode computeTFIDF ........................................................................................... 34

Extrait de code 9 : Méthode getScore .................................................................................................... 37

Extrait de code 10 : Calcul de la couleur du ParagraphButton ................................................................ 37

Extrait de code 11 : Normalisation des tailles de police .......................................................................... 38

Extrait de code 12 : Méthode paintVisibleRectangle .............................................................................. 39

Extrait de code 13 : Normalisation de la largeur des barres de thèmes .................................................. 40

Extrait de code 14 : Rotation du panneau pour l'écriture du label des thèmes ....................................... 40

Extrait de code 15 : Méthode googleSearch ........................................................................................... 43

Table 1 : Comparaison entre visionneuses de documents HTML .............................................................. 7

Page 5: Rapport final du projet - DiUF - Universit© de Fribourg

5 Introduction

1 Introduction Depuis la fin des années 90, avec l’explosion du marché de l’informatique grand publique et

l’abaissement notable du coût des périphériques de stockage, la quantité d’informations n’a cessé

d’augmenter sur nos ordinateurs personnels et stations de travail. En raison de ce bouleversement, la

recherche de documents personnels au sein de nos fichiers devient une tâche ardue. En effet, il est

souvent rébarbatif d’effectuer un grand nombre de recherches au sein d’un document afin d’en trouver

des fichiers annexes. De plus, il est généralement difficile d’obtenir un résumé global d’un document,

notamment sous forme graphique.

Le logiciel MyLink a été conçu dans l’optique d’aider l’utilisateur à pallier ces manquements. MyLink est

un outil d’aide à la recherche qui permet de résumer graphiquement un document, en mettant en

évidence ses thèmes principaux et ses parties les plus importantes. Après la création de son profil de

recherche basé sur une compilation de mots-clés, l’utilisateur peut facilement savoir si un document est

proche de ses intérêts et peut en un tour de main connaître la position exacte de ses thèmes préférés

dans le document visionné. Aussi, le programme permet de créer un lien entre les centres d’intérêt de

l’utilisateur et l’information personnelle de celui-ci disséminée sur son disque dur grâce à l’intégration

de Microsoft Windows Desktop Search. MyLink évite ainsi les fastidieuses recherches nécessaires au

recoupement d’informations et permet ainsi d’augmenter la productivité lors du visionnage de longs

documents.

2 Objectifs Le but principal de ce projet est de mettre en relation un document externe avec l’information

personnelle de l’utilisateur. Le programme MyLink permet ainsi d’ouvrir un document source, d’extraire

les thèmes du document en relation avec l’utilisateur et d’afficher les fichiers locaux ayant un rapport

avec ses intérêts. Leur recensement s’effectue manuellement. Une interaction forte doit alors exister

entre le document externe et l’usager. En effet, celui-ci doit être en mesure d’ajouter aisément un mot

du document à sa liste de mots-clés favoris. Ceci nécessite donc l’intégration d’une visionneuse de

documents évoluée. Aussi, les thèmes préférés doivent être stockés dans une base de données afin

qu’ils soient accessibles en tout temps.

Figure 1 : Extraction des documents de l'utilisateur à partir d'un document externe

Document

externe

Documents

utilisateurs

Page 6: Rapport final du projet - DiUF - Universit© de Fribourg

6 MyLink

De plus, un résumé global du document externe doit être généré afin de mettre en évidence ses thèmes

importants. Un sommaire détaillé, basé sur les mots-clés favoris de l’utilisateur, doit également être

affiché, afin de connaître leur position exacte dans la visionneuse de documents. Finalement, le

recoupement des différents thèmes doit être facilité par une interface dédiée permettant l’ajout et le

retrait rapide des mots-clés servant de requête à la recherche de documents annexes.

2.1 Profil de recherche Au fur et à mesure de l’utilisation du logiciel, l’utilisateur ajoute dans une base de données des mots-

clés qui caractérisent ses intérêts. Un document XML sert d’espace de sauvegarde : le XML est une

technologie particulièrement adaptée au stockage d’éléments structurés tels que des thèmes,

puisqu’elle permet la création de balises personnalisées adaptées aux besoins du programme. De plus,

l’API JDOM1 propose la navigation et la création rapide d’une arborescence XML. Ainsi, il n’a pas été jugé

nécessaire d’utiliser une base de donnée relationnelle telle que MySQL pour un projet de cette

envergure, car le type et la quantité de données stockés restent fortement limités.

2.2 Visionneuse de documents Une visionneuse de documents est nécessaire pour l’affichage des documents externes au sein du

programme. Lors de la sélection de la visionneuse, l’accent a été mis sur le support du HTML et

l’interactivité offerte. Pour se faire, une comparaison de nombreuses technologies concurrentes a été

réalisée.

Tout d’abord, deux navigateurs Web payants ont été analysés. Le premier, IceBrowser, utilise un moteur

propriétaire basé sur Java Swing pour afficher les éléments HTML. Malgré une licence au prix élevé, le

support des CSS et du JavaScript est encore embryonnaire. Son concurrent principal se nomme

WebRenderer. Le moteur de rendu de ce dernier s’appuie au choix sur celui d’Internet Explorer ou de

Firefox. La qualité du rendu HTML est donc parfaite et le support des CSS, du JavaScript, des cookies et

même des applets Java et du plug-in Flash est excellent. Malheureusement, ce navigateur n’offre

aucune méthode permettant de connaître la position exacte d’une chaîne de caractère dans le

document.

Les pendants libres et gratuits des deux précédents navigateurs sont Cobra ToolKit et JRex. Le premier

est doté d’un support approximatif des CSS ainsi que d’une interaction limitée, alors que le second offre

une bonne qualité de rendu puisque basé sur Firefox. Cependant, l’interaction proposée est très faible.

En effet, il est impossible de connaître la position exacte de la barre de défilement ainsi celle d’un mot

spécifique.

Grâce aux interfaces COM de Windows, Eclipse SWT et DJ Project permettent l’utilisation du moteur

d’Internet Explorer dans une application Java. Cependant, l’interaction est à nouveau fortement limitée,

voire totalement inexistante.

1 JDOM : Java Document Object Model. JDOM est une implémentation du modèle DOM pour Java. L’arborescence

du document est stockée en mémoire vive, ce qui permet un accès rapide aux différents éléments du document. Projet JDOM : http://www.jdom.org

Page 7: Rapport final du projet - DiUF - Universit© de Fribourg

7 Objectifs

Il subsiste deux visionneuses développées par Sun. La première est un éditeur de texte standard fournie

par Java Swing, le JEditorPane. Il s’agit d’une zone de texte prenant en compte l’affichage de fichiers

HTML, RTF et plain text. Malheureusement, le support du HTML est anecdotique puisque les feuilles de

styles CSS et le JavaScript ne sont pas pris en charge. Bien que le rendu ne soit pas fidèle sur des pages

Web au design complexe, le JEditorPane offre néanmoins de nombreuses méthodes permettant de

connaître le statut du document, tel que sa longueur totale ou la position en pixel de chaque caractère

composant la page HTML. La seconde visionneuse, le JWebPane, est développée au sein du projet

JavaFX, un concurrent d’Adobe Flex permettant de créer des applications internet riches. Cependant, ce

projet-là a été retardé à de nombreuses reprises et cette nouvelle visionneuse basée sur WebKit, le

moteur utilisé par le navigateur Apple Safari, n’est pas attendue avant l’automne 2008. Néanmoins, si le

JWebPane fournit des méthodes similaires au JEditorPane, alors la qualité de l’interaction pourrait être

au rendez-vous, d’autant plus que WebKit promet un excellent support du HTML et des feuilles de style.

Moteur

de rendu Support

HTML, CSS, JS Détection ScrollBar

Scroll to position

Position mot

Interaction Note

IceBrowser Java faible Oui Non Non Mauvais Mauvais WebRenderer Mozilla Excellent Oui Oui Non Bon Bon Cobra ToolKit Java moyen Oui Oui Non Bon Moyen

JRex Mozilla Bon Non ? Non Faible Mauvais Eclipse SWT

Browser Internet Explorer

Bon Oui Non Non Faible Moyen

DJ Project Internet Explorer

Bon Non Oui Non Faible Bon

Java Swing JEditorPane

Java (Swing)

faible Oui Oui Oui Excellente Bon

Java JavaFX JWebPane

WebKit (Safari)

Bon Oui Oui Oui ? Excellent ? Excellent ?

Table 1 : Comparaison entre visionneuses de documents HTML

Finalement, la visionneuse sélectionnée est le JEditorPane, qui malgré son faible support pour les pages

HTML évoluées, fournit un grand nombre d’informations indispensables à la création d’un résumé

graphique détaillé, indiquant la position exacte des thèmes dans le document. Toutefois, si le JWebPane

tient toutes ses promesses en matière de rendu et d’interactivité, son intégration deviendra alors

incontournable dans toute application Java nécessitant une visionneuse de documents Web, tel que

MyLink.

2.3 Résumé graphique Deux résumés graphiques sont générés. Le premier est un récapitulatif global du document qui indique

les principaux thèmes rencontrés ainsi que les paragraphes importants. Le second affiche précisément

quels mots-clés de l’utilisateur sont présents dans le document tout en y indiquant leur position exacte.

Dans les deux cas, la technologie utilisée est Java2D, une API standard de Java permettant entre autres

de dessiner des formes géométriques à l’intérieure de composants Swing.

Page 8: Rapport final du projet - DiUF - Universit© de Fribourg

8 MyLink

2.4 Automatisation de la recherche Afin de récupérer les fichiers ayant un rapport avec le document visionné, un système de recherche doit

être intégré au programme. Plusieurs produits permettant de rechercher des fichiers sur les espaces de

stockages locaux, les deux principaux étant Microsoft Windows Desktop Search1 et Google Desktop

Search2. Tous deux indexent le contenu des disques durs de l’utilisateur ou certains dossiers en

particulier. Lors de requêtes de l’utilisateur, le programme consulte son index et retourne les différents

fichiers correspondant aux critères de l’utilisateur.

Après comparatif, il est apparu que Windows Desktop Search offrait de résultats de meilleure qualité,

dans la mesure où le programme se comporte de façon déterministe et offre un plus grand nombre de

paramètres relatifs à la sélection des fichiers. De plus, grâce à un pont JAVA-COM tel que JACOB3, qui

autorise la communication entre une application JAVA et les objets Windows COM et les librairies

Win32, l’intégration de Windows Desktop Search dans un programme Java est relativement aisée. Enfin,

la syntaxe utilisée pour les requêtes est SQL, ce qui facilite grandement la découverte et l’utilisation de

ce module.

1 Microsoft Windows Desktop Search: http://www.microsoft.com/windows/products/winfamily/desktopsearch

2 Google Desktop Search : http://desktop.google.com 3 Projet JACOB : http://sourceforge.net/projects/jacob-project

Page 9: Rapport final du projet - DiUF - Universit© de Fribourg

9 État de l’art

3 État de l’art

3.1 TileBars TileBars est un projet mené par Marti A. Hearst à l’éminent centre de recherche Xerox de Palo Alto aux

États-Unis, dans le cadre de recherches en rapport avec la visualisation d’informations au sein de

documents. Il s’agit d’un outil graphique permettant d’indiquer la fréquence et la distribution de termes

spécifiques dans un document ainsi que sa longueur.

Une TileBar se présente sous la forme d’un parallélépipède représentant un document. Ce rectangle est

lui-même découpé en une multitude de barres verticales correspondant aux diverses parties

thématiques d’un document. Le découpage est obtenu grâce à un algorithme de TextTiling. Une section

peut accueillir plusieurs mots-clés représentés sous la forme de carrés. Chaque carré est coloré suivant

la fréquence d’apparition du mot-clé dans la section correspondante. Plus une section regorge des mots-

clés spécifiés par l’utilisateur lorsqu’une recherche, plus ceux-ci apparaissent dans une couleur sombre.

Figure 2 : Shéma de TileBars

Ce système permet donc d’afficher un résumé graphique du document en fonction des mots-clés

spécifiés lors de la requête initiale. Grâce aux différents niveaux de gris correspondant aux fréquences et

à la densité des mots-clés apparaissant dans les sections du document, l’on peut rapidement connaître

le degré d’intérêt du document et de ses parties les plus importantes.

3.2 SeeSoft SeeSoft est un outil de suivi et de maintenance de code source développé au début des années 90 par

S.G. Eick, J.L. Steffen et E.E. Sumner Jr. L’application analyse les différents fichiers d’un projet

informatique et consigne au fil du temps les modifications qui y sont effectuées.Chaque fichier est

Page 10: Rapport final du projet - DiUF - Universit© de Fribourg

10 MyLink

représenté par une colonne dans laquelle des barres colorées symbolisant les lignes du code source sont

dessinées. Les barres possédant une couleur chaude sont celles ayant été éditées à de nombreuses

reprises. Grâce à cet outil, il devient aisé de repérer les lignes de codes ayant bénéficié d’une attention

particulière de la part des programmeurs. Une indication de la longueur relative des documents sources

est également présente.

Figure 3 : Shéma de SeeSoft

Un grand nombre de variantes ont vu le jour depuis la publication originelle de 1992. Par exemple, au

lieu de mettre en évidence le nombre de modifications qu’a subies une ligne, la coloration peut être

basée sur le nom du programmeur ayant édité un bloc de code. Ainsi, une couleur prédéfinie est dédiée

à chaque programmeur et il devient facile de découvrir l’impact de chaque employé sur le code source

d’un programme. De la même façon, en attribuant une couleur à chaque personnage d’un livre, l’on

peut connaître les chapitres dans lesquels ils apparaissent.

Page 11: Rapport final du projet - DiUF - Universit© de Fribourg

11 Fonctionnalités

4 Fonctionnalités La fenêtre principale du programme est divisée verticalement en deux parties. Celle de gauche contient

la visionneuse de document et celle de droite,les résumés et le gestionnaire de thèmes. Elles peuvent

être redimensionnées rapidement en effectuant un cliquer-déplacer de la barre de séparation ou

totalement masquée en cliquant sur les triangles dédiés. En outre, une barre d’outils contenant les

boutons les plus fréquemment utilisés se trouve dans la partie supérieure gauche de la fenêtre. De plus,

le menu « View » permet de naviguer entre les trois onglets principaux du gestionnaire de thèmes.

Figure 4 : Fenêtre principale de MyLink

4.1 Visionneuse de documents La visionneuse de documents accepte 3 types de fichiers : les pages HTML, les documents RTF et le texte

brut sans formatage spécifique. Grâce à la barre de menu ou à la barre d’outils, il est possible de créer

un nouveau document vierge, d’ouvrir un fichier situé sur le disque dur ou encore d’ouvrir une page

Web. Si une chaîne de caractère se trouve dans le presse-papiers de Windows lors de l’ouverture de la

boîte de dialogue d’ouverture d’une page Web, alors le contenu de celui est placé automatiquement en

surbrillance dans le champ de texte.

Page 12: Rapport final du projet - DiUF - Universit© de Fribourg

12 MyLink

Figure 5 : Boîte de dialogue d'ouverture d'une URL

En cliquant sur n’importe quel mot du document, la chaîne de caractères correspondante est surlignée

dans tous les documents. Si la touche contrôle est enfoncée lors de cette opération, il est possible

d’ajouter un mot-clé à la liste de thèmes favoris. Une boîte de dialogue d’ajout de thème s’affiche alors

avec le mot-clé sélectionné. Une couleur est choisie aléatoirement pour celui-ci. Celle-ci peut être

facilement modifiée en déplaçant le slider placé à droite du rectangle de prévisualisation de la couleur.

Le score du thème peut être modifié en sélectionnant l’une des valeurs de la liste déroulante des scores.

Si la case à cocher « Active » est activée, alors le thème sera mis en évidence dans le document avec la

couleur spécifiée dès l’enregistrement du thème. La case à cocher « Auto stemming » permet de

stemmer le mot que l’on souhaite ajouter. La partie utile du mot est mise en évidence avec la couleur

choisie et le titre de la barre de dialogue est modifié en conséquence. Lorsque la checkbox nommée

« Keep open » est cochée, la fenêtre ne sera pas masquée après l’enregistrement du mot-clé courant.

Ceci permet l’ajouter de plusieurs thèmes successifs sans avoir à repasser par la barre d’outils ou la

barre de menu.

Figure 6 : Boîte de dialogue d'ajout de thème

En cliquant à nouveau sur le même mot dans la visionneuse, il est possible d’éditer ses caractéristiques

avec une boîte de dialogue similaire. Si le label du thème se trouve dans une forme stemmée, alors la

case à cocher d’auto stemming est activée par défaut, sinon elle reste désactivée afin d’éviter la

stemmatisation involontaire d’un thème déjà enregistré.

Page 13: Rapport final du projet - DiUF - Universit© de Fribourg

13 Fonctionnalités

4.1.1 Champs de recherches

Le champ de recherches placé sous la visionneuse permet de chercher et de mettre en évidence une

chaîne de caractères dans le document. Naturellement, la casse n’est pas prise en compte lors de la

recherche. La chaîne de caractère est surlignée en gris clair, tandis que l’occurrence active apparaît en

gris foncé. Grâce au bouton « Next », il est possible de naviguer entre les occurrences du mot-clé dans le

document. Le calcul de prochaine occurrence tient compte de la position du chariot.

Figure 7 : Champ de recherche et mise en évidence d’un pattern

Lorsque le mot recherché ne se trouve pas dans le document, le champ de recherche est

immédiatement coloré en rouge et le bouton « Next » reste désactivé tant que le pattern n’est pas

détecté dans le document.

Figure 8 : Mot introuvable dans le document

4.2 Résumé global du document Le résumé global du document se décompose en plusieurs parties, deux listes de mots et un résumé

graphique des paragraphes importants. La première liste contient les mots possédant le plus grand

nombre d’occurrences. Il s’agit ainsi des thèmes qui caractérisent le mieux le document. La seconde liste

recense les mots les plus originaux, c’est-à-dire ceux ayant le TF-IDF le plus élevé. En clair, ce sont des

thèmes apparaissant avec une fréquence élevée dans une section du document spécifique. Grâce à

cette liste, il est donc possible de détecter certains mots thématiquement très différents du reste du

document. Dans les deux listes, la taille de la police utilisée dépend du nombre d’occurrences et de

l’originalité du mot. En outre, le nombre de mots-clés affichés dans chaque liste peut être facilement

modifié en déplaçant les sliders en regard des listes. À nouveau, il est possible d’ajouter ou d’éditer un

Page 14: Rapport final du projet - DiUF - Universit© de Fribourg

14 MyLink

thème en contrôle-cliquant sur un mot-clé du résumé global. De plus, cliquer sur un mot permet de le

surligne dans la visionneuse de document et de scroller vers sa prochaine occurrence.

Figure 9 : Résumé global du document

Le résumé graphique situé à gauche affiche les paragraphes sous forme de blocs. La couleur du

paragraphe dépend des thèmes affichés dans le résumé des thèmes ayant la plus forte redondance. Plus

un paragraphe est sombre, plus la concentration de thèmes y est élevée. Lorsque le slider associé à la

première liste de thèmes est déplacé, le résumé graphique des paragraphes est automatiquement mise

à jour. Ainsi, si un seul thème apparaît dans le résumé graphique des thèmes ayant le taux de

redondance le plus élevé, alors les blocs représentants les paragraphes seront soit blancs (ne contient

pas le thème), soit noirs (contient le thème). Si tous les mots-clés du document sont affichés, alors la

plupart des paragraphes seront légèrement grisés.

Un clic sur l’un des blocs met en évidence le paragraphe correspondant et affiche la partie souhaitée

dans la visionneuse de document. Il est à noter qu’en déplaçant la barre de défilement de la

Page 15: Rapport final du projet - DiUF - Universit© de Fribourg

15 Fonctionnalités

visionneuse, il est facile d’observer le rectangle de visibilité qui renseigne l’utilisateur quant à la portion

du document affiché.Enfin, lorsque la case à coche « My Themes only » est activé, seuls les thèmes

favoris apparaissent

4.3 Résumé personnel du document Le résumé personnel du document met en évidence la présence des mots-clés favoris de l’utilisateur

dans le document. Ceux-ci sont affichés dans la partie supérieure du panneau et prennent la forme

d’une barre colorée. Les portions sombres de la barre correspondent aux occurrences du mot-clé dans le

document. Il est ainsi aisé de connaître la position exacte d’un thème dans le document, d’autant plus

que ces occurrences sont cliquables, ce qui permet de mettre en évidence la partie désirée du document

dans la visionneuse. Pour éditer un thème à partir de cette vue, il suffit de double cliquer dans la liste

centrale et de contrôle-cliquer ou cliquer avec le bouton central de la souris sur la barre de thèmes

souhaitée.

Figure 10 : Résumé personnel du document

Page 16: Rapport final du projet - DiUF - Universit© de Fribourg

16 MyLink

Les thèmes favoris de l’utilisateur peuvent être classés par score, nombre d’occurrences ou importance.

L’importance dépend proportionnellement et du score et du nombre d’apparitions. Aussi, plus un thème

est important, plus sa barre est large. En outre, la case à cocher « Document themes only » permet de

n’afficher que les thèmes présents dans le document. Finalement, un slider de tolérance a pour rôle de

filtrer le nombre de mots-clés affichés dans le résumé graphique. Son déplacement provoque également

la mise à jour de la table de fichiers relatifs.

Si une barre de thème est grisé, cela signifique que le mot-clé correspondant n’est pas pris en compte

pour la recherche de fichiers annexes. En effet, la liste de thèmes sélectionnés au centre du panneau

sert de champ de requêtes pour Windows Search dont les résultats sont affichés dans la table du bas. Le

bouton « Open » dans le coin inférieur droit permet d’ouvrir les fichiers désirés.

Pour ajouter ou supprimer un thème dans la liste des thèmes sélectionnés, il suffit de cliquer sur la barre

de thème désiré. Aussi, il est possible d’utiliser les boutons « Remove » ou « Remove All » pour

supprimer un ou plusieurs thèmes spécifiques.La checkbox « Auto Refresh » permet d’avoir une liste de

thèmes sélectionnée en concordance permanente avec les thèmes affichés dans le résumé graphique.

Toute suppression de thème désactive cette case à cocher. Ainsi, pour réactualiser la liste, il suffit de

cliquer sur le bouton « Refresh ». Enfin, le bouton Google permet de lancer une recherche Web grâce à

ce même moteur avec la liste des thèmes sélectionnés.

4.4 Gestion des thèmes favoris Le gestionnaire de thèmes personnels, intitulé « My Themes », affiche les différents mots clés

sauvegardés par l’utilisateur dans une table. Les principales caractéristiques des thèmes y sont exposés,

tels que le label, le score et statut d’activité du thème. En doublecliquant sur un thème ou en pressant le

bouton « Edit », l’on peut modifier les différents paramètres du thème. Néanmoins, il n’est possible

d’éditer qu’un seul thème à la fois.

De plus, il est facile d’activer ou désactiver un thème par le biais de la case à cocher de la colonne

« Active ». Ceci permet par exemple de retirer temporairement un mot des résumés graphiques sans

pour autant le supprimer totalement. Enfin, lors de la suppression de thèmes, une confirmation est

demandée à l’utilisateur afin d’éviter toute mauvaise manipulation de sa part.

Figure 11 : Boîte de dialogue de confirmation de suppression de thèmes

Page 17: Rapport final du projet - DiUF - Universit© de Fribourg

17 Fonctionnalités

Figure 12 : Gestion des thèmes favoris

Page 18: Rapport final du projet - DiUF - Universit© de Fribourg

18 MyLink

5 Implémentation

5.1 Architecture Le programme se décompose en 3 modules principaux, à savoir le gestionnaire d’interface graphique, de

thèmes et de document. Le gestionnaire de thème, le ThemeManager, comporte un grand nombre de

sous-modules responsables de l’affichage des thèmes, du résumé du document ou encore de la gestion

des fichiers XML servant au stockage des thèmes de l’utilisateur.

Le gestionnaire de documents offre un grand nombre de fonctionnalités relatives à la visionneuse de

documents. En effet, le DocumentManager est responsable de la création et de l’ouverture de

documents HTML, RTF ou plain text, ainsi que de la mise en évidence des thèmes et des chaînes de

caractères recherchés par l’utilisateur.

En outre, divers modules outils fournissent des fonctionnalités secondaires. C’est notamment le cas du

Stemmer et du WDSInterface qui offrent respectivement des méthodes permettant la stemmatisation

de chaînes de caractères et l’envoi de requêtes vers Windows Desktop Search.

Figure 13 : Architecture globale du programme

DocumentManager ThemeManager

ThemeDetailedSummaryManager

ThemeTableManager

ThemeWDSManager

ThemeDialogManager

WDSInterface

GUIManager ThemeDocumentManager

Stemmer

ThemeXMLManager

ThemeGlobalSummaryManager

WordTools

Page 19: Rapport final du projet - DiUF - Universit© de Fribourg

19 Implémentation

5.2 GUIManager Tous les composants graphiques sont déclarés au sein du gestionnaire d’interface, le GUIManager.

Celle-ci est générée grâce à l’outil GUI Builder intégré à l’environnement de développement open source

NetBeans1, connu avant tout pour être l’un des principaux éditeurs d’applications Java, au même titre

qu’Eclipse2. L’utilisation d’un tel outil permet de sensiblement réduire le temps de travail nécessaire à la

mise en place des composants Swing, puisqu’il est en général fastidieux de créer manuellement des

designs complexes dotés de tous les raffinements en matière de positionnement et de

redimensionnement.

Figure 14 : Éditeur graphique de formulaires intégré à NetBeans

La gestion des différents événements relatifs aux composants de l’interface est réalisée, non pas

directement par le GUIManager, mais par les différents modules gérant une fonctionnalité ou un

panneau spécifique. Par exemple, la gestion de la liste déroulante, du slider et de la case à cocher dédiés

au résumé graphique détaillé est effectuée dans le module responsable de cette fonction, le

ThemeDetailedSummaryManager. Cette technique permet une gestion localisée des éléments

graphiques au sein de leur module respectif. L’utilisation des composants graphiques dans n’importe

quel module du programme est rendue possible grâce à leur déclaration de type public static final.

1 NetBeans : environnement de développement open source, http://www.netbeans.org 2 Eclipse : logiciel concurrent de NetBeans, http://www.eclipse.org

Page 20: Rapport final du projet - DiUF - Universit© de Fribourg

20 MyLink

5.3 ThemeDocumentManager Le module de gestion des thèmes et des documents est l’un des modules maîtres du programme. Il

permet la bonne synchronisation de ses deux modules fils, le ThemeManager et le DocumentManager.

Figure 15 : Diagramme de classe du ThemeDocumentManager

Le ThemeManager et le DocumentManager sont ainsi instanciés avec le ThemeDocumentManager lui-

même, afin de permettre une parfaite communication entre ses deux sous-modules. En pratique, cela

permet par exemple au gestionnaire de documents d’accéder directement à des fonctionnalités du

ThemeManager en passant par le ThemeDocumentManager, grâce à sa méthode getThemeManager. Cette

technique facilite énormément la synchronisation des informations entre les différents modules du

programme, sans nécessiter l’intégration de méthodes statistiques dans un module particulier.

5.4 Stemmer Le Stemmer est une classe outil qui permet d’isoler l’unité lexicale d’un mot et dans une moindre

mesure, son radical ou sa racine, par le biais de la méthode stem. Le stemmer utilisé dans MyLink est

basé sur l’algorithme de Porter, doté de 5 étapes de stemmatisation et précédé d’une étape de

dépréfixation qui consiste à retirer le préfixe du mot à traiter.

Le code utilisé a été traduit du langage C vers Java par Fotis Lazarinis, puis entièrement remanié afin de

prendre en charge les stop words3. La procédure de stemming a été modifiée afin d’être effectuée deux

fois, afin d’éviter la création de stems dotés d’une terminaison pouvant pourtant être à nouveau retirée.

Aussi, certaines étapes ont été légèrement modifiées afin de ne pas obtenir de stem ayant une

composition orthographique différente du mot d’origine. Par exemple, avec l’algorithme original, le mot

« business » est stemmé en « busy ». Il est cependant important de garder une orthographe similaire,

car Windows Desktop Search n’est pas capable de transformer le terme « busy » en « busi », ce qui peut

grandement nuire aux résultats d’une recherche de fichiers.

3 Stop word ou mot vide : mot lexicalement pauvre, généralement doté d’un très haut taux de redondance dans un

langage spécifique et d’un faible nombre de lettres. Par défaut, le Stemmer interprète tout mot de moins de 3 lettres en temps que stop word.

Page 21: Rapport final du projet - DiUF - Universit© de Fribourg

21 Implémentation

Figure 16 : Diagramme de classe du Stemmer

Enfin, le Stemmer est implémenté selon le pattern du singleton par le biais d’une méthode d’accès

statique getInstance. Ceci permet l’utilisation du Stemmer dans n’importe quel autre module sans

nécessiter d’instanciation localisée.

Page 22: Rapport final du projet - DiUF - Universit© de Fribourg

22 MyLink

5.5 DocumentManager Le gestionnaire de documents est responsable de l’ouverture et de l’affichage de documents au sein de

la visionneuse de documents. Le composant Java dédié à cette fonctionnalité est le JEditorPane, une

zone de texte évoluée prenant en compte divers styles de documents, tels que le HTML, le RTF et le

texte brut. Malheureusement, le support du HTML est encore embryonnaire puisque les feuilles de

styles CSS et le JavaScript ne sont pas pris en charge.

Figure 17 : Diagramme de classe du DocumentManager

Page 23: Rapport final du projet - DiUF - Universit© de Fribourg

23 Implémentation

L’ouverture d’un document à l’aide de la méthode openFile est précédée d’une tâche d’analyse de

l’extension du fichier afin de préparer la visionneuse pour un style de document prédéfini. Ainsi, pour un

document RTF, le kit éditeur de document sera un RTFEditorKit, pour un document HTML un

HTMLEditorKit et pour un simple document texte un StyleEditorKit.

//Retrieves the extension of the file

String filename = file.getName();

String extension = new String();

int pointPosition = filename.lastIndexOf(".");

if (pointPosition != -1) {

extension = filename.substring(pointPosition + 1, filename.length());

}

//Sets the document editor for an rtf/doc file

if (extension.equals("rtf") || extension.equals("doc")) {

GUIManager.documentEditor.setContentType("text/rtf");

GUIManager.documentEditor.setEditorKit(new RTFEditorKit());

GUIManager.documentEditableCheckbox.setEnabled(false);

this.setEditionMode(false);

//Sets the document editor for an html file

} else if (extension.equals("htm") || extension.equals("html")) {

GUIManager.documentEditor.setContentType("text/html");

GUIManager.documentEditor.setEditorKit(new HTMLEditorKit());

GUIManager.documentEditableCheckbox.setEnabled(false);

this.setEditionMode(false);

//Sets the document editor for a plain text file

} else {

GUIManager.documentEditor.setContentType("text");

GUIManager.documentEditor.setEditorKit(new StyledEditorKit());

GUIManager.documentEditableCheckbox.setEnabled(true);

this.setEditionMode(true);

}

Extrait de code 1 : Préparation de la visionneuse de documents lors de l’ouverture d’un fichier

De plus, seuls les documents de type texte brut peuvent être édités. En effet, bien que les documents

RTF ou HTML soient éditables dans le JEditorPane, il subsiste des bugs dans l’implémentation de ces

différents kits qui rendent quelques fois problématique l’édition de documents à la mise en page

Page 24: Rapport final du projet - DiUF - Universit© de Fribourg

24 MyLink

complexes. La modification de tels documents par l’utilisateur est donc rendue impossible grâce à

l’instruction setEditable(false).

Figure 18 : Interface graphique du DocumentManager

En outre, le DocumentManager fournit des méthodes relatives au statut du document ouvert : sa

longueur totale en pixel, la position exacte affichée ainsi que la longueur de la portion visible du

document. getPixelPosition permet de connaître précisément la position en pixel d’un mot en fonction

de sa position dans la chaîne de caractères qui composent le document source. Ces diverses fonctions

sont utilisées en particulier par le module responsable du résumé graphique détaillé, car il requiert des

informations précises quant à la position des mots à l’intérieure du document afin de dessiner

correctement les différentes barres de thèmes.

Page 25: Rapport final du projet - DiUF - Universit© de Fribourg

25 Implémentation

Outre les opérations de création et d’ouverture de documents, le DocumentManager a également pour

tâche de mettre en évidence les différents thèmes et mots clés recherchés dans la visionneuse de

documents. Il existe 3 types de surlignage : le highlight de thème, de sélection et de recherche. Le

surlignage de sélection est utilisé pour mettre en évidence un pattern particulier et celui de recherche

permet de surligner toutes les occurrences d’une chaîne de caractères à l’intérieur du document. La

couleur du surlignage de thèmes dépend de la couleur même du thème, tandis les surlignages de

sélection et de recherche utilisent des noirs semi-transparents. Afin d’éviter une mauvaise superposition

des surlignements et une impossibilité de distinguer des highlights se chevauchant, ceux-ci doivent être

repeints dans un ordre spécifique après chaque ajout d’un surlignage. Ainsi, la méthode

repaintHighLights se charge de redessiner dans un ordre précis les différentes instances de surlignage.

private void repaintHighLights() {

//Retrieves all highlights

Highlighter.Highlight[] hilites = documentEditor.getHighlighter().getHighlights();

removeAllHighLights();

//Repaints selection highlights

for (int i = 0; i < hilites.length; i++) {

if (hilites[i].getPainter() instanceof SelectionHighLighter) {

repaint(hilites[i]);

}

}

//Repaints search highlights

for (int i = 0; i < hilites.length; i++) {

if (hilites[i].getPainter() instanceof SearchHighLighter) {

repaint(hilites[i]);

}

}

//Repaints theme highlights

for (int i = 0; i < hilites.length; i++) {

if (hilites[i].getPainter() instanceof ThemeHighLighter) {

repaint(hilites[i]);

}

}

}

Extrait de code 2 : Méthode repaintHighlights

Les principales méthodes publiques de surlignement sont HighLightWord, HighLightParagraph et

HighLightThemes, qui permettent respectivement de mettre en évidence un mot, un paragraphe et une

liste de thèmes.

Page 26: Rapport final du projet - DiUF - Universit© de Fribourg

26 MyLink

5.6 ThemeManager Le gestionnaire de thèmes gère l’affichage du résumé graphique du document externe, la table

regroupant les différents thèmes de l’utilisateur, l’envoi de requêtes vers l’interface Windows Desktop

Search, ainsi que l’ajout et l’édition de thèmes via une boîte de dialogue. Ces fonctionnalités sont

assurées par 6 sous-modules dédiés : le ThemeXMLManger, le ThemeTableManager, le

ThemeDialogManager, le ThemeGlobalSummaryManager, le ThemDetailedSummaryManager et le

ThemeWDSManager. Ils sont instanciés dans le module maître ThemeManager qui assure la

synchronisation entre ses modules fils.

Figure 19 : Architecture globale du gestionnaire de thèmes

Outre les méthodes d’accès à tous les sous-modules, le ThemeManager offre la méthode repaint qui

permet de rafraîchir les modules secondaires dotés d’une interface graphique. Ainsi, cette méthode

permet la parfaite synchronisation des vues lors de la modification du document source par exemple.

De plus, le gestionnaire de thèmes met également à disposition de tous ses modules fils les listes de

thèmes wdsThemeList et displayedThemeList. La première correspond aux thèmes sélectionnés servant

Page 27: Rapport final du projet - DiUF - Universit© de Fribourg

27 Implémentation

de requêtes pour l’interface Windows Desktop Search et la seconde aux thèmes affichés dans le résumé

graphique de l’utilisateur. Leur déclaration est de type public protected, ce qui permet un accès et une

modification rapide.

5.6.1 Theme et ThemeList

L’objet de base incontournable de ce programme est le Theme. Un Theme est caractérisé par son label,

son score, sa teinte, son statut d’activité et sa liste de positions. Tout d’abord, le score s’échelonne entre

0 et 100. La teinte du thème est exprimée avec un nombre de type double ayant une valeur comprise

entre 0 et 1. Il ne s’agit pas d’une couleur de type RGB, mais HSB4. Le statut d’activité permet de

spécifier si un thème est actif ou non. Un thème non actif ne sera pas pris en compte dans les résumés

graphiques et ne sera pas mis en évidence dans la visionneuse de documents. La liste de positions

correspond aux différentes positions du label dans la chaîne de caractères composant le document

source.

Une ThemeList est une agrégation de Theme. Son implémentation est basée sur l’objet ArrayList qui

offre un large éventail de méthodes permettant de connaître le statut de la liste de thèmes : sa taille,

son contenu ou encore la position précise d’un des Themes. Naturellement, des méthodes add, remove et

removeAll sont disponible afin de respectivement ajouter un thème et supprimer un ou tous les thèmes.

La méthode sort permet de trier la liste selon une méthode particulière. La première ordonne les

thèmes par score, la seconde par nombre d’occurrences du thème dans le document. La dernière

méthode de tri classe les différents thèmes par importance : l’importance d’un thème dépend à la fois

de son score et de son nombre d’occurrences. Ainsi, un thème apparaissant à plusieurs reprises dans la

visionneuse de document et ayant un score élevé apparaîtra en tête de liste. Cette méthode est utilisée

par le ThemeDetailedSummaryManager afin d’afficher le résumé graphique détaillé du document

externe.

4 Hue, Staturation and Brightness : leurs 3 valeurs correspondantes s’échelonnent entre 0 et 1. Par défaut, le programme utiliser une saturation de 0.35 et une luminosité de 1.

Page 28: Rapport final du projet - DiUF - Universit© de Fribourg

28 MyLink

Figure 20 : Diagramme de classe de Theme et ThemeList

Page 29: Rapport final du projet - DiUF - Universit© de Fribourg

29 Implémentation

5.6.2 ThemeXMLManager

Le gestionnaire de fichiers XML permet de stocker les thèmes de l’utilisateur dans un fichier XML.

Lorsque celui-là ajoute, édite ou supprime un ou plusieurs thèmes, les modifications y sont

immédiatement répercutées.

<themes>

<theme>

<label>business</label>

<rank>50</rank>

<color>0.94</color>

<active>true</active>

</theme>

</themes>

Extrait de code 3 : Extrait du fichier XML

Les informations retenues pour le stockage d’un thème sont son label, son score, sa couleur et son

statut d’activité. Il n’est pas nécessaire de stocker sa liste de positions, puisque celle-ci varie en fonction

du document affiché dans la visionneuse de documents.

En plus des méthodes d’addition et de suppression de thème, le ThemeXMLManager permet d’extraire

la liste des thèmes du fichier XML grâce aux méthodes getThemeList et getActiveThemeList. La première

permet d’obtenir tous les thèmes contenus dans le fichier XML tandis que la seconde ne fournit que les

thèmes dont le statut d’activité est true.

Après chaque opération sur les thèmes, le fichier XML doit être sauvegardé à l’aide de la procédure

saveXMLFile. L’API utilisée pour manipuler les fichiers XML étant JDOM5, la totalité de l’arborescence

XML est donc stockée en mémoire vive. Ainsi, afin de l’enregistrer dans un fichier XML, il suffit

d’invoquer la méthode output qui se chargera d’écrire les données dans le fichier choisi.

private void saveXMLFile() {

XMLOutputter output = new XMLOutputter(Format.getPrettyFormat());

try {

output.output(this.document, new FileOutputStream(file));

} catch (IOException e) {

e.printStackTrace();

}

}

Extrait de code 4 : Méthode saveXMLFile

5 JDOM : Java Document Object Model, implémentation du modèle DOM et SAX pour la plateforme Java, http://www.jdom.org

Page 30: Rapport final du projet - DiUF - Universit© de Fribourg

30 MyLink

Figure 21 : Diagramme de classe du ThemeXMLManager

5.6.3 ThemeTableManager

Le ThemeTableManager est responsable de l’affichage des thèmes au sein de la table correspondante.

Dès lors que le fichier XML est modifié, la table doit être mise en jour afin de refléter en permanence le

contenu de ce dernier. Quatre boutons sont utilisés dans l’interface graphique, ils permettent d’ajouter

un thème, d’en éditer et de supprimer l’un ou la totalité des thèmes.

Figure 22 : Diagramme de classe du ThemeTableManager

Page 31: Rapport final du projet - DiUF - Universit© de Fribourg

31 Implémentation

La table affiche les informations principales au sujet des thèmes, à savoir son label, son score et son

statut d’activité. Celui-ci peut être modifié simplement en cochant la cache à cocher désirée dans la

colonne « Active ». À chaque clic de l’utilisateur sur une case à cocher, la méthode setActiveMode est

appelée afin de modifier le statut d’activité du thème dans le fichier XML.

private void setActiveMode() {

if (GUIManager.themeManagerTable.getSelectedRowCount() != 0) {

Theme theme = getselectedTheme();

themeManager.getThemeXMLManager().setActive(theme.getLabel(), !theme.getActive());

}

repaint();

this.themeManager.getThemeWDSManager().repaint();

}

Extrait de code 5 : Méthode setActiveMode

Après chaque clic dans la table, la procédure setButtons met à jour les différents boutons du panneau.

Ainsi, lorsque plusieurs lignes de la table ont été sélectionnées, le bouton « Edit » doit être désactivé via

la méthode setEnable(false), afin d’empêcher l’utilisateur d’éditer plus d’un thème à la fois. Aussi,

lorsque la table est vide, tous les boutons doivent être désactivés, sauf celui d’ajout de thèmes.

5.6.4 ThemeDialogManager

Le ThemeDialogManager peut être considéré comme une extension du gestionnaire de table, puisqu’il

permet d’ajouter et d’éditer des thèmes. La boîte de dialogue est ouverte lorsque l’utilisateur clique sur

le bouton « Add Theme » ou lorsqu’il clique sur le bouton « Edit » si une ligne de la table de thèmes est

sélectionnée.

Figure 23 : Interface graphique du ThemeDialogManager

Page 32: Rapport final du projet - DiUF - Universit© de Fribourg

32 MyLink

La procédure getWord permet de connaître la partie utile d’un mot. En fonction de la case à cocher

d’autostemming, elle retourne soit le mot complet, soit son stem. Cependant, si plusieurs mots sont

entrés dans le champ de texte, la méthode retourne null, car l’utilisateur ne peut entrer qu’un seul

thème à la fois. De plus, si le stem du mot entré est vide, s’il s’agit par exemple d’un simple préfixe tel

que « nano », la méthode retourne également la valeur null.

private String getWord() {

String text = GUIManager.themeDialogTextField.getText().trim();

if (text.indexOf(" ") != -1) {

return null;

} else {

if (GUIManager.themeDialogAutoStemmingCheckBox.isSelected()) {

String stem = Stemmer.getInstance().stem(text);

if(stem.isEmpty()){

return null;

}else{

return stem;

}

} else {

return text;

}

}

}

Extrait de code 6 : Méthode getWord

Une autre méthode importante du ThemeDialogManager est updateWordHighLight qui permet de mettre

en évidence le mot qui sera sauvegardé en tant que thème. Cette procédure est appelée dès que

l’observateur de type KeyListener détecte le relâchement d’une touche du clavier au sein du champ de

texte. Aussi, lorsque l’utilisateur modifie le statut de la case à cocher d’autostemming, la mise en

évidence du mot est actualisée par le biais d’un événement de type ActionEvent enregistré auprès de

celle-là.

private void updateWordHighlight() {

Highlighter highLighter = GUIManager.themeDialogTextField.getHighlighter();

String text = GUIManager.themeDialogTextField.getText();

String word = getWord();

//If there is a word to highlight...

if (word != null) {

try {

highLighter.removeAllHighlights();

Page 33: Rapport final du projet - DiUF - Universit© de Fribourg

33 Implémentation

highLighter.addHighlight(text.indexOf(word), text.indexOf(word) + word.length(),

new DefaultHighlightPainter(GUIManager.themeDialogColorPanel.

getBackground()));

} catch (BadLocationException ex) {

ex.printStackTrace();

}

//If there is no word to highlight...

} else {

highLighter.removeAllHighlights();

}

}

Extrait de code 7 : Méthode updateWordHighLight

Lorsque l’utilisateur désire ajouter un thème, la méthode add est appelée. Si un label est spécifié, la

méthode d’ajout de thème contrôle qu’il s’agisse d’un thème ne se trouvant pas déjà dans le fichier XML

servant au stockage des thèmes. Si tel est le cas, alors la boîte de dialogue passe en mode « édition ».

Sinon, une couleur aléatoire et un score par défaut de 50 sont appliqués.

Grâce à la méthode edit, l’utilisateur peut modifier un thème déjà enregistré. La boîte de dialogue

reflète alors les différentes informations au sujet du thème, son label, sa couleur, son score et son statut

d’activité. Si le label est dans une forme non-stemmée, alors la case à cocher d’autostemming n’est pas

sélectionnée.

Figure 24 : Diagramme de classe du ThemeDialogManager

Page 34: Rapport final du projet - DiUF - Universit© de Fribourg

34 MyLink

La procédure save permet de sauvegarder le thème affiché dans la boîte de dialogue. En fonction du

mode dans lequel se trouve la boîte de dialogue, « ajout » ou « édition » de thèmes, save fera appelle à

la méthode add ou edit du ThemeXMLManager afin de stocker le thème dans le fichier XML.

5.6.5 Word, Paragraph et Document

Avant de créer le résumé global du document source, il est nécessaire de l’analyser afin d’en extraire les

thèmes principaux. Tout d’abord, la classe Word est une conceptualisation d’un mot dans un extrait de

texte. Ainsi, elle possède un label, un compteur d’occurrences et un score. Par défaut, lors de la création

d’un Word, son compteur d’occurrences est initialisé à 1 et son score à 0.

A un niveau d’abstraction supérieure, l’on trouve le Paragraph. Il requiert une chaîne de caractère lors

de son initialisation, un paragraphe généralement. Par le biais de la méthode extractWords, les différents

mots composant le texte sont extraits, en ne gardant toutefois que les variantes stemmées. Les stop

words sont simplement rejetés lors de cette opération. Ensuite, la fréquence de chaque Word du

paragraphe est calculée grâce à la procédure computeTFRank.

Le Document se trouve au niveau le plus élevé. Il est chargé de tenir à jour une liste de Paragraph à

partir de laquelle l’on peut calculer le TF-IDF de chaque mot et renvoyer la liste des Words ayant le plus

grand nombre d’occurrences ou le TF-IDF le plus élevé grâce aux méthodes getWordList. Lors de sa

création, le Document utilise la chaîne de caractères composant le document externe. Le contenu de

celle-ci est analysé afin d’en extraire les paragraphes grâce à la méthode extractParagraphs. Une fois la

liste de Paragraphs créée, le TF-IDF de chaque mot est calculé via la procédure computeTFIDF. Comme le

Term Frequency du mot a déjà été calculé lors de la création du Paragraph auquel il appartient, il ne

reste plus qu’à le multiplier le score actuel par l‘IDF, Inverse Document Frequency.

private void computeTFIDF() {

for (int i = 0; i < this.paragraphList.size(); i++) {

Paragraph paragraph = this.paragraphList.get(i);

for (int j = 0; j < paragraph.size(); j++) {

Word word = paragraph.get(j);

String label = word.getLabel();

int counter = paragraphContainsCount(label);

//Sets the TF-IDF of the word

word.setRank(word.getRank() *

Math.log((double) this.paragraphList.size() /

(double) counter));

}

}

}

Extrait de code 8 : Méthode computeTFIDF

Page 35: Rapport final du projet - DiUF - Universit© de Fribourg

35 Implémentation

Figure 25 : Diagramme de classe de Word, Paragraph et Document

Finalement, une liste de Words est créée puis mise à jour avec la méthode updateWordList afin de

recenser l’ensemble des mots du document. Cette liste ne contient qu’une occurrence de chaque Word.

Le compteur d’occurrence correspond au nombre total d’occurrences du mot dans le document et le

score correspond au TF-IDF le plus élevé rencontré pour ce mot dans les différents paragraphes

analysés.

5.6.6 ThemeGlobalSummaryManager

Le ThemeGlobalSummaryManager gère l’affichage du résumé global du document. Il s’agit d’un résumé

graphique des paragraphes ainsi que d’un listage des thèmes fréquents et originaux rencontré dans le

document source.

Page 36: Rapport final du projet - DiUF - Universit© de Fribourg

36 MyLink

Figure 26 : Diagramme de classe du ThemeGlobalSummaryManager

Le résumé graphique des paragraphes est basé sur les thèmes ayant le plus grand nombre de

redondances. Chaque paragraphe est représenté par un ParagraphButton basé sur le conteneur JPanel

et dont le MouseListener permet de mettre en évidence le paragraphe correspond dans la visionneuse

de documents lorsque l’utilisateur clique à l’intérieure du bouton. Avant d’ajouter les différents

ParagraphButton, leur couleur doit être évaluée.Grâce à la méthode getScore de la classe Paragraph, le

degré de similitude entre la liste des mots importants et le paragraphe peut être quantifié entre 0 et 1.

Ainsi, plus le paragraphe contient de mots situés dans la liste fournie en paramètre, plus le score sera

proche de 1.

Page 37: Rapport final du projet - DiUF - Universit© de Fribourg

37 Implémentation

public double getScore(ArrayList<Word> wordList) {

if (!wordList.isEmpty()) {

int counter = 0;

for (int i = 0; i < wordList.size(); i++) {

String wordString = wordList.get(i).getLabel();

for (int j = 0; j < this.paragraph.size(); j++) {

Word word = this.paragraph.get(j);

//If the word is in the paragraph...

if (wordString.equals(word.getLabel())) {

//Increments the counter

counter++;

}

}

}

//Returns the score

return (double) counter / (double) wordList.size();

} else {

return 0;

}

}

Extrait de code 9 : Méthode getScore

Grâce à ce score normalisé, il ne reste plus qu’à définir la couleur du bouton. Comme un paragraphe

regorgeant d’un grand nombre de thèmes doit posséder une couleur sombre et que les scores de

similitudes sont normalisés entre 0 et 1, il suffit de soustraire 1 au score puis de multiplier le résultat

obtenu par 255. En utilisant cette même valeur pour les trois paramètres RGB de la couleur, on obtient

un niveau de gris qui permet de juger de l’importance du paragraphe. Enfin, à chaque mis à jour du

résumé graphique via la méthode repaint, le rectangle de visibilité indiquant la portion du document

visible dans la visionneuse de documents doit être repeint via la méthode paintVisibleRectangle.

//Sets the color of the paragraph button

double paragraphScore = 1 - paragraph.getScore(wordList);

int rgbValue = (int) (paragraphScore * 255);

Color color = new Color(rgbValue, rgbValue, rgbValue);

Extrait de code 10 : Calcul de la couleur du ParagraphButton

Les listes de mots-clés ayant le plus grand nombre d’occurrences et le plus haut TF-IDF peuvent être

aisément retrouvées grâce à la méthode getWordList de la classe Document, puis affichées par le biais

des méthodes getMostRedundantWords et getMostOriginalWords dans leur JEditorPane respectif. Ces deux

dernières procédures permettent de créer une chaîne de caractère de type HTML contenant les

Page 38: Rapport final du projet - DiUF - Universit© de Fribourg

38 MyLink

échantillons de mots importants. La taille de la police utilisée pour le label du mot dépend de son

compteur ou de son score. Ces deux paramètres sont normalisés et les valeurs obtenues sont converties

en taille de police HTML. Si un mot du résumé global appartient aux thèmes favoris de l’utilisateur, alors

la couleur d’arrière-plan du label correspondra à celle du thème.

//Linear normalization

double sigma = (rank - minRank) / (maxRank - minRank);

int htmlSize = 0;

if (sigma < 0.2) {

htmlSize = 2;

} else if (sigma < 0.4) {

htmlSize = 3;

} else if (sigma < 0.6) {

htmlSize = 4;

} else if (sigma < 0.8) {

htmlSize = 5;

} else if (sigma < 1) {

htmlSize = 6;

} else {

htmlSize = 7;

}

Extrait de code 11 : Normalisation des tailles de police

5.6.7 ThemeDetailedSummaryManager

Le ThemeDetailedSummaryManager génère le résumé graphique détaillé du document externe ouvert

dans la visionneuse de document. L’affichage des thèmes de l’utilisateur se déroule en deux phases.

Dans la première, le rectangle de visibilité est dessiné. Celui-ci indique la portion du document qui est

affichée dans la visionneuse de document. Les informations nécessaires sont la longueur totale du

document, la hauteur de la partie visible dans la visionneuse et la position exacte de cette portion, en

pixel. Il suffit ensuite d’effectuer une remise à l’échelle de ces différentes valeurs afin d’afficher

correctement ce rectangle dans le panneau de résumé.

private void paintVisibleRectangle(Graphics2D g) {

//Does not paint the visible rectangle when the theme list is empty

if (getThemeList().size() == 0) {

return;

} else {

//Retrieves information about the scrollbar

int documentLength = themeManager.themeDocumentManager.getDocumentManager().getTotalDocumentLength();

int documentVisibleLength = themeManager.themeDocumentManager.getDocumentManager().getVisibleDocumentLength();

Page 39: Rapport final du projet - DiUF - Universit© de Fribourg

39 Implémentation

int documentPosition = themeManager.themeDocumentManager.getDocumentManager().getDocumentPosition();

//Sets the vertical position and the height of the visible rectangle

double visibleRectY = documentPosition * graphPanelHeight / documentLength + graphPanelY;

double visibleRectHeight = documentVisibleLength * graphPanelHeight / documentLength + 5;

//Draws the visible document rectangle

g.setColor(Color.WHITE);

g.fillRect(graphPanelX, (int) visibleRectY, graphPanelWidth, (int) visibleRectHeight);

g.setColor(new Color(127, 157, 185));

g.drawRect(graphPanelX, graphPanelY, graphPanelWidth, graphPanelHeight + 4);

}

}

Extrait de code 12 : Méthode paintVisibleRectangle

Dans la seconde phase d’affichage du panneau, les ThemeBars, barres de thèmes, sont créées.

Contrairement au rectangle de visibilité qui est véritablement dessiné en utilisant des primitives Java2D

telles que drawRect ou fillRect, les barres de thèmes sont des conteneurs Swing à part entière. Ceci

permet une gestion des évènements beaucoup plus aisée, dans la mesure où il suffit par exemple

d’attribuer un MouseListener au panneau afin d’y détecter les clics de souris.

Figure 27 : Interface graphique du ThemeDetailedSummaryManager

Tout d’abord, la liste de thèmes est rapatriée depuis le gestionnaire de fichiers XML en fonction des

différents paramètres de filtrages offerts à l’utilisateur, tels que le mode de tri ou le nombre maximum

de thèmes. Durant cette opération, les thèmes se trouvant dans le document voient leur liste de

positions mise à jour. Cette liste recense toutes les occurrences du mot-clé dans la chaîne de caractères

composant le document.

La largeur de la barre de thème est définie par son importance. Celle-ci dépend à la fois du score

attribué au thème par l’utilisateur et du nombre d’occurrences du mot-clé dans le document.

L’épaisseur de la barre est ensuite normalisée en tenant compte des deux paramètres précités.

Page 40: Rapport final du projet - DiUF - Universit© de Fribourg

40 MyLink

//Normalizes the width of the theme according to its rank and its occurrences in the document

double width = theme.getRank() * theme.getPositionList().size();

double sigma = 0.125 * (1 + width / (Math.sqrt(Math.pow(width, 1.5) + 500)));

Extrait de code 13 : Normalisation de la largeur des barres de thèmes

La formule choisie diffère légèrement de la méthode de normalisation standard de type

, afin d’exagérer la largeur maximale et minimale des barres. Selon que le thème se trouve ou non

dans la liste des thèmes sélectionnés du gestionnaire Windows Desktop Search, la couleur de la barre

sera identique à celle du thème ou grisée. Aussi, afin d’écrire le label du thème en biais, il est nécessaire

d’effectuer une rotation antihoraire du panneau de 30°, soit – .

//Rotates the theme summary panel for writing the theme label

AffineTransform originalAngle = g.getTransform();

AffineTransform rotationAngle = AffineTransform.getRotateInstance(

-Math.PI / 6, (int) (themePositionX - 5), graphPanelY);

g.transform(rotationAngle);

String themeLabel = theme.getLabel();

g.drawString(themeLabel, (int) (themePositionX), graphPanelY);

Extrait de code 14 : Rotation du panneau pour l'écriture du label des thèmes

Dès son instanciation, la ThemeBar place en son sein même les ThemeButtons correspondant aux

occurrences du mot-clé dans le document. À nouveau, une opération de mise à l’échelle est nécessaire

afin d’y placer correctement ces boutons. Un observateur d’événement de souris est placé sur ceux-ci

afin qu’un clic de souris déclenche immédiatement le scroll du document source à la position même du

mot-clé.

Page 41: Rapport final du projet - DiUF - Universit© de Fribourg

41 Implémentation

Figure 28 : Diagramme de classe du ThemeDetailedSummaryManager

5.6.8 ThemeWDSManager

Le ThemeWDSManager permet la sélection de thèmes servant à l’envoi de requêtes vers l’interface

Windows Desktop Search. La sélection des thèmes s’effectue soit en cliquant sur une barre de thème du

résumé graphique, soit en appuyant sur le bouton « Refresh » afin de remplacer la liste des thèmes

sélectionnés avec celle des thèmes présents dans le résumé graphique. Lorsque la case à cocher « Auto

Refresh » est activée, la liste des thèmes sélectionnés correspond en permanence à la liste des thèmes

affichés.

Page 42: Rapport final du projet - DiUF - Universit© de Fribourg

42 MyLink

Figure 29 : Diagramme de classe du ThemeWDSManager

Ce gestionnaire propose des méthodes permettant d’ajouter et de retirer un ou la totalité des thèmes

dans la liste des thèmes sélectionnée. Une interaction forte existe avec le ThemeWDSManager et le

ThemeDetailedSummaryManager, puisque l’ajout ou la suppression de thèmes dans le premier

provoque une actualisation du second afin de colorer correctement les barres de thèmes. En effet, un

thème ne se trouvant pas dans la liste des thèmes sélectionnée du ThemeWDSManager doit être grisé

dans le résumé graphique détaillé.

La méthode googleSearch est associée au bouton Google est permet d’effectuer une recherche sur le

moteur de recherche cité avec les thèmes présents dans la liste. Cette procédure récupère tout d’abord

l’ensemble des éléments présents dans la liste afin de construire l’URL de recherche Google. Grâce à

l’instruction Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + query), le

navigateur par défaut du système se lance avec l’URL précédemment créée.

private void googleSearch() {

//Retrieves the elements in the list of selected themes

ArrayList<String> elements = new ArrayList<String>();

for (int i = 0; i < this.themeWDSListModel.getSize(); i++) {

elements.add(this.themeWDSListModel.getElementAt(i).toString());

}

if (!elements.isEmpty()) {

//Creates the google query

String query = "http://www.google.com/search?&rls=en&q=";

Page 43: Rapport final du projet - DiUF - Universit© de Fribourg

43 Implémentation

for (int i = 0; i < elements.size(); i++) {

query += elements.get(i);

query += "+";

}

//Launches the default browser with the google query

try {

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + query);

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

Extrait de code 15 : Méthode googleSearch

Afin de remplir la table de fichiers associés aux thèmes sélectionnés, la méthode searchFiles est

utilisée. Elle fait appelle à l’interface Windows Desktop Search, WDSInterface, pour construire la requête

à partir de la liste des thèmes sélectionnées et récupérer les résultats renvoyés par l’objet COM associé

à Windows Desktop Search.

Figure 30 : Interface graphique du ThemeWDSManager

Autre méthode importante, repaint permet d’actualiser la wdsThemeList, de rafraîchir la liste des thèmes

sélectionnés, de mettre en évidence ceux-ci dans la visionneuse de document et de mettre à jour la

table des fichiers annexes.

Page 44: Rapport final du projet - DiUF - Universit© de Fribourg

44 MyLink

5.7 WDSInterface Le rôle de l’interface Windows Desktop Search est de fournir un pont entre l’application Java et l’objet

Windows COM dédié à Windows Desktop Search. WDSInterface est une classe outil, c’est-à-dire qu’elle

n’est pas instanciable en raison de son constructeur privé. Ainsi, ses méthodes sont déclarées sous la

forme public static.

Figure 31 : Diagramme de classe de WDSInterface

Deux méthodes sont offertes par cette classe. La première, createQuery, permet de construire une

requête WDS à partir d’une liste de thèmes. La seconde, getResultsFromWDS, permet d’envoyer une

requête vers Windows Desktop Search et d’en obtenir les résultats. Il s’agit précisément d’une liste de

chaîne de caractères que l’on peut aisément placer dans une liste ou une table. Cette dernière méthode

utilise les différentes classes offertes par l’API JACOB qui permet de communiquer avec les objets COM

de Windows. Enfin, le code source de ce module est basé sur une version simplifiée du travail de Florian

Evequoz.

Page 45: Rapport final du projet - DiUF - Universit© de Fribourg

45 Évaluation et améliorations

6 Évaluation et améliorations MyLink est encore à l’état de prototype et un grand nombre d’améliorations seraient nécessaires à son

perfectionnement. Après avoir effectué plusieurs sessions de tests avec des utilisateurs de divers

horizons, plusieurs points essentiels ont pu être mis en évidence.

6.1 Visionneuse de documents Tout d’abord, l’intégration d’une visionneuse de documents compatibles avec des formats tels que le

PDF permettrait d’augmenter les possibilités de visualisation de MyLink. En effet, le logiciel n’accepte

actuellement que des fichiers HTML simplistes. Aussi, son support du format RTF reste anecdotique

lorsqu’il s’agit d’ouvrir de tels documents sauvegardés à partir d’un traitement de textes moderne et

intégrant une mise en page complexe. De plus, une visionneuse polyvalente permettrait l’ouverture des

documents annexes dans MyLink même, et non dans un programme externe. Néanmoins, une telle

visionneuse devra offrir un haut niveau d’interaction, afin de permettre la création d’un résumé

graphique précis.

Dans un premier temps, l’intégration du JWebPane de JavaFX permettra d’améliorer fortement la

fidélité de rendu des pages HTML visionnées. De cette manière, MyLink pourra devenir un navigateur

Web à part entière, toutefois il faudrait améliorer l’expérience utilisateur via l’intégration d’une barre

d’outil dédié à la navigation Web. Naturellement, un tel ajout ouvrirait de nouveaux horizons en matière

d’analyse du comportement de l’utilisateur lors de ces visites sur Internet. Par exemple, si l’utilisateur

passe de nombreuses minutes sur une page Web particulière, il serait intéressant d’en extraire

automatiquement les thèmes importants et de les ajouter à une liste temporaire de thèmes favoris, tout

en redirigeant l’utilisateur vers des pages Web au contenu similaire.

Aussi, les capacités d’édition de la visionneuse de documents sont extrêmement réduites. L’ajout d’un

éditeur de texte WYSIWYG HTML par exemple permettrait la création de document à la mise en page

plus évoluée et pourrait servir de traitement de texte redirigeant l’utilisateur vers les fichiers annexes en

rapport avec le document rédigé.

6.2 Gestion des thèmes Tout d’abord, la possibilité de créer plusieurs profils de recherche permettrait une utilisation

multiutilisateur du logiciel. Aussi, un profil de recherche pourrait être dédié à chaque pôle d’intérêt de

l’utilisateur. Ainsi, un profil serait dédié à un projet spécifique, tandis qu’un autre serait spécialement

conçu pour contenir des thèmes en rapport avec ses hobbys.

De plus, l’on pourrait imaginer une option de synchronisation des thèmes en ligne, à la manière de

certains navigateurs Web proposant de sauvegarder ses favoris en ligne, tels qu’Opera1 ou Avant

Browser2. À nouveau, l’intégration d’une telle option ouvrirait une nouvelle dimension et cela

1 Opera, navigateur Web respectueux des standards W3C, www.opera.com 2 Avant Browser, navigateur Web basé sur le moteur d’Internet Explorer, www.avantbrowser.com

Page 46: Rapport final du projet - DiUF - Universit© de Fribourg

46 MyLink

permettrait d’analyser les thèmes préférés des utilisateurs, de mettre en correspondance des aux

centres d’intérêt proches à la manière de certains sites d’écoutes musicales tels que Last.FM ou

Deezer.com.

Figure 32 : Page d'accueil de Last.fm

6.3 Résumé graphique Il serait intéressant de réunir le résumé graphique global et personnel dans un seul et même panneau.

Toutefois, une telle modification nécessiterait probablement une remise à jour complète des différents

concepts utilisés jusqu’alors, notamment en matière d’interface graphique. Aussi faudrait-il éviter une

concentration trop élevée d’informations qui n’aurait pour effet que d’effrayer l’utilisateur.

6.4 Multithreading Un grand nombre d’opérations est effectué lors de l’entrée de texte dans la visionneuse de document

en mode édition. Ainsi, lorsque le document comporte un grand nombre de caractères, l’analyse en

direct du document ne permet pas de garantir une expérience parfaitement fluide pour l’utilisateur. De

cette façon, une profonde modification du logiciel à base de threads permettrait d’améliorer la

réactivité du logiciel dans certaines situations.

Page 47: Rapport final du projet - DiUF - Universit© de Fribourg

47 Évaluation et améliorations

6.5 Bugs connus

6.5.1 Ouverture de documents

Pour une raison inconnue, le programme peut, dans de rares cas, freezer lors de l’ouverture de

documents HTML ou RTF à la mise en page complexe. Ce problème pourrait être dû à une mauvaise

gestion des événements relatifs à l’actualisation des panneaux en cas de modification des panneaux ou

à l’implémentation même du JEditorPane qui refuse d’afficher certains documents qu’il considère

comme malformés.

6.5.2 Saturation de l’interface Windows Desktop Search

Lors d’un très grand nombre de requêtes simultanées sur l’interface Windows Desktop Search, il arrive

parfois qu’elle refuse soudainement de renvoyer des résultats complets. Généralement, seul le score est

indiqué, les autres champs restant irrémédiablement vides.

Un redémarrage du MyLink permet dans tous les cas de régler le problème. S’agissant d’un objet

Windows COM, le diagnostic d’un tel problème peut être complexe, puisqu’aucun message d’erreur

n’est affiché par la machine virtuelle Java au runtime.

Figure 33 : Saturation de l'interface Windows Desktop Search

Page 48: Rapport final du projet - DiUF - Universit© de Fribourg

48 MyLink

7 Conclusion Grâce à MyLink, l’utilisateur peut améliorer sa productivité lors de la lecture de ses documents. En effet,

le programme affiche des résumés tant textuels que graphiques. En effet, une synthèse liste les mots-

clés les plus fréquents et originaux. Aussi, deux résumés graphiques mettent respectivement en

évidence les paragraphes importants et la position exacte des thèmes favoris de l’utilisateur. De cette

manière, MyLink peut faciliter la lecture de documents externes inconnus en résumant leurs thèmes

principaux et en mettant en évidence leurs parties importantes.

De plus, un lien est créé entre le document externe et les fichiers locaux de l’utilisateur grâce à

l’intégration de l’outil de recherche Windows Desktop Search. En associant divers mots-clés, il est facile

de retrouver des documents relatifs à des intérêts particuliers. L’utilisateur peut facilement en ajouter à

sa liste de thèmes favoris grâce à un haut niveau d’interaction avec la visionneuse de document.

Bien qu’à l’état de prototype, MyLink fournit des résultats encourageants lorsqu’il s’agit d’identifier les

passages importants du document basés sur un profil de recherche relatif à l’utilisateur. Néanmoins,

l’intégration d’une visionneuse de document autorisant l’ouverture d’un large éventail de documents

avec une qualité de rendu optimal ainsi que l’amélioration des capacités d’éditions du document est un

passage obligé en cas de prolongation de ce projet. De plus, l’unification des résumés graphiques et une

plus grande automatisation des systèmes de recherches permettraient d’extraire encore plus facilement

les fichiers associés au document source visualisé dans la visionneuse de documents.

Page 49: Rapport final du projet - DiUF - Universit© de Fribourg

49 Annexe

8 Annexe

8.1 Configuration minimale MyLink nécessite un PC Windows équipé de la machine virtuelle Java 1.5 ou supérieur. Sur un PC avec

Windows 2000 et XP, l’installation de Windows Desktop Search 3 ou supérieure est requise. Microsoft

Vista ne nécessite pas l’installation d’un tel outil de recherche, car WDS est déjà intégré dans ce système

d’exploitation en tant que système d’indexation standard. Afin d’assurer un affichage optimal nécessaire

à la visualisation du document source et de ses résumés graphiques, une résolution d’au moins

1024*768 est recommandée.

8.2 Installation Pour lancer le logiciel, il suffit de double cliquer sur l’exécutable MyLink.jar placé dans le répertoire dist.

Les sources de MyLink du dossier src peuvent être intégrées dans tout projet NetBeans ou Ecplipse. Il

suffit de veiller à ce que les librairies placées dans le dossier lib soient intégrées au classpath. De plus, la

librairie Jacob.dll doit être placé à la racine du projet afin d’assurer la bonne communication entre

MyLink et Windows Desktop Search.