Td corrigé Les bots et la recherche de l'information - RERO DOC pdf

Les bots et la recherche de l'information - RERO DOC

Ce travail de diplôme est réalisé dans le cadre de l'examen final de la Haute école de ... 1.3.2.4.3 Weatherbot, un exemple de l'agrégation .... nous avons décidé d'aborder le sujet en expliquant un ensemble plus grand que celui des bots. ...... Ainsi, par exemple un bot en java, muni de multithreading répondra à ce besoin.




part of the document




Les bots
et
la recherche de l’information



Travail de diplôme réalisé en vue de l’obtention du diplôme HES
par : Iman HOSSEIN-SOLTANI

Conseiller au travail de diplôme : (Jean-Philippe TRABICHET, professeur HES et responsable de filière)

Genève, 23 octobre 2006 Haute École de Gestion de Genève (HEG-GE) Informatique de gestion
Déclaration
Ce travail de diplôme est réalisé dans le cadre de l’examen final de la Haute école de gestion de Genève, en vue de l’obtention du titre de bachelor d’informaticien de gestion HES. L’étudiant accepte, le cas échéant, la clause de confidentialité. L'utilisation des conclusions et recommandations formulées dans le travail de diplôme, sans préjuger de leur valeur, n'engage ni la responsabilité de l'auteur, ni celle du conseiller au travail de diplôme, du juré et de la HEG.

« J’atteste avoir réalisé seul le présent travail, sans avoir utilisé des sources autres que celles citées dans la bibliographie. »


Fait à Genève, le 23 octobre 2006
Iman Hossein-Soltani




Remerciements



Je tiens particulièrement à remercier vivement toutes celles et ceux qui amicalement, tout au long du chemin, m’ont apporté encouragements, aide, soutien, et conseils afin de parvenir à la rédaction de ce mémoire de Diplôme.

Je leur dédie ce travail ainsi que ma reconnaissance et mes sentiments de gratitude éternels : 

Mes chers parents : Mehri et Mohammad,

Ma chère sœur adorée Parmis et mon adorable frère Payman,

Mes professeurs : M. Trabichet ainsi que tous mes dévoués professeurs de la Haute Ecole de Gestion de Genève,

Mes ami(e)s : Bozi, Danièle, Fabien, Fabrice, Julia, Homayoon, Marie-Aude, Matthieu, Mazyar, Nada, Natacha, Payman, Pierre-André, Sina, Vlad ainsi que Me Elizabeth Ziegler.

A l’Iran et à la Suisse.

Iman Hossein-Soltani












Ne t'inquiète pas des vicissitudes de ce monde d'inconstance ; demande du vin et rapproche-toi de ta caressante maîtresse, car, vois-tu, celui que sa mère enfante aujourd'hui, demain disparaît de la terre, demain rentre dans le néant.

Poète perse Omar Khayam (1048 – 1131) Nichapour
Table des matières
 TOC \o "1-6" \h \z \u  HYPERLINK \l "_Toc149376696" Déclaration  PAGEREF _Toc149376696 \h i
 HYPERLINK \l "_Toc149376697" Remerciements  PAGEREF _Toc149376697 \h ii
 HYPERLINK \l "_Toc149376698" Table des matières  PAGEREF _Toc149376698 \h iii
 HYPERLINK \l "_Toc149376699" Liste des figures  PAGEREF _Toc149376699 \h vi
 HYPERLINK \l "_Toc149376700" Liste des tableaux  PAGEREF _Toc149376700 \h vi
 HYPERLINK \l "_Toc149376701" Liste des diagrammes  PAGEREF _Toc149376701 \h vi
 HYPERLINK \l "_Toc149376702" Avant propos  PAGEREF _Toc149376702 \h vii
 HYPERLINK \l "_Toc149376704" Partie 1 Les bots et leur environnement  PAGEREF _Toc149376704 \h 1
 HYPERLINK \l "_Toc149376705" 1.1 Introduction  PAGEREF _Toc149376705 \h 1
 HYPERLINK \l "_Toc149376706" 1.2 Agents  PAGEREF _Toc149376706 \h 1
 HYPERLINK \l "_Toc149376707" 1.2.1 Qu’est-ce qu’un agent ?  PAGEREF _Toc149376707 \h 1
 HYPERLINK \l "_Toc149376708" 1.2.1.1 Propriétés des agents  PAGEREF _Toc149376708 \h 1
 HYPERLINK \l "_Toc149376709" 1.2.1.1.1 Autonomie  PAGEREF _Toc149376709 \h 1
 HYPERLINK \l "_Toc149376710" 1.2.1.1.2 Sociabilité  PAGEREF _Toc149376710 \h 1
 HYPERLINK \l "_Toc149376711" 1.2.1.1.3 Réactivité  PAGEREF _Toc149376711 \h 1
 HYPERLINK \l "_Toc149376712" 1.2.2 Pourquoi les agents ?  PAGEREF _Toc149376712 \h 2
 HYPERLINK \l "_Toc149376713" 1.2.2.1 Les facteurs sociaux  PAGEREF _Toc149376713 \h 2
 HYPERLINK \l "_Toc149376714" 1.2.2.1.1 Les agents dans un « Framework psychologique »  PAGEREF _Toc149376714 \h 2
 HYPERLINK \l "_Toc149376715" 1.2.2.1.2 Les agents dans un « Framework filtrant »  PAGEREF _Toc149376715 \h 3
 HYPERLINK \l "_Toc149376716" 1.2.2.2 Histoire des agents  PAGEREF _Toc149376716 \h 3
 HYPERLINK \l "_Toc149376717" 1.3 Bots sur Internet  PAGEREF _Toc149376717 \h 7
 HYPERLINK \l "_Toc149376718" 1.3.1 Bots de communication  PAGEREF _Toc149376718 \h 7
 HYPERLINK \l "_Toc149376719" 1.3.1.1 Chatterbots  PAGEREF _Toc149376719 \h 7
 HYPERLINK \l "_Toc149376720" 1.3.1.2 Messagerie Instantanée  PAGEREF _Toc149376720 \h 8
 HYPERLINK \l "_Toc149376721" 1.3.1.3 Protocole IRC  PAGEREF _Toc149376721 \h 11
 HYPERLINK \l "_Toc149376722" 1.3.1.4 Sockets  PAGEREF _Toc149376722 \h 12
 HYPERLINK \l "_Toc149376723" 1.3.1.5 Exemple d’utilisation d’un bot IRC  PAGEREF _Toc149376723 \h 14
 HYPERLINK \l "_Toc149376724" 1.3.2 Bots d’information  PAGEREF _Toc149376724 \h 15
 HYPERLINK \l "_Toc149376725" 1.3.2.1 Protocole HTTP  PAGEREF _Toc149376725 \h 15
 HYPERLINK \l "_Toc149376726" 1.3.2.2 Extraction de données à partir de pages HTML  PAGEREF _Toc149376726 \h 17
 HYPERLINK \l "_Toc149376727" 1.3.2.2.1 Balises concernées par les bots  PAGEREF _Toc149376727 \h 17
 HYPERLINK \l "_Toc149376728" 1.3.2.3 Spider  PAGEREF _Toc149376728 \h 18
 HYPERLINK \l "_Toc149376729" 1.3.2.3.1 Applications du Spider  PAGEREF _Toc149376729 \h 18
 HYPERLINK \l "_Toc149376730" 1.3.2.3.2 Structure d’une page web  PAGEREF _Toc149376730 \h 19
 HYPERLINK \l "_Toc149376731" 1.3.2.3.3 Structure du Spider  PAGEREF _Toc149376731 \h 20
 HYPERLINK \l "_Toc149376732" 1.3.2.3.4 Flow chart de Spider non récursif  PAGEREF _Toc149376732 \h 22
 HYPERLINK \l "_Toc149376733" 1.3.2.4 Agrégateur  PAGEREF _Toc149376733 \h 23
 HYPERLINK \l "_Toc149376734" 1.3.2.4.1 Agrégation online  PAGEREF _Toc149376734 \h 23
 HYPERLINK \l "_Toc149376735" 1.3.2.4.2 Agrégation offline  PAGEREF _Toc149376735 \h 24
 HYPERLINK \l "_Toc149376736" 1.3.2.4.3 Weatherbot, un exemple de l’agrégation  PAGEREF _Toc149376736 \h 24
 HYPERLINK \l "_Toc149376737" 1.3.2.5 Mesures à prendre en considération  PAGEREF _Toc149376737 \h 26
 HYPERLINK \l "_Toc149376738" 1.3.2.5.1 Hummering  PAGEREF _Toc149376738 \h 26
 HYPERLINK \l "_Toc149376739" 1.3.2.5.1.1 Comment éviter le Hummering ?  PAGEREF _Toc149376739 \h 26
 HYPERLINK \l "_Toc149376740" 1.3.2.5.2 Identification des bots  PAGEREF _Toc149376740 \h 27
 HYPERLINK \l "_Toc149376741" 1.3.2.5.2.1 Utilisation des Header HTTP  PAGEREF _Toc149376741 \h 27
 HYPERLINK \l "_Toc149376742" 1.3.2.5.3 Actions du webmaster  PAGEREF _Toc149376742 \h 28
 HYPERLINK \l "_Toc149376743" 1.3.3 Vers un partage standardisé de l’information  PAGEREF _Toc149376743 \h 29
 HYPERLINK \l "_Toc149376744" 1.3.3.1 eXtensible Markup Language (XML)  PAGEREF _Toc149376744 \h 29
 HYPERLINK \l "_Toc149376745" 1.3.3.1.1 Qu’est-ce que le XML ?  PAGEREF _Toc149376745 \h 29
 HYPERLINK \l "_Toc149376746" 1.3.3.1.2 XML et les bots d’information  PAGEREF _Toc149376746 \h 30
 HYPERLINK \l "_Toc149376747" 1.3.3.2 Simple Object Access Protocol (SOAP)  PAGEREF _Toc149376747 \h 31
 HYPERLINK \l "_Toc149376748" 1.3.3.2.1 Comment le SOAP transfère les données ?  PAGEREF _Toc149376748 \h 31
 HYPERLINK \l "_Toc149376749" 1.3.3.2.2 Exemple du SOAP  PAGEREF _Toc149376749 \h 32
 HYPERLINK \l "_Toc149376750" 1.3.3.2.3 SOAP et les bots d’information  PAGEREF _Toc149376750 \h 33
 HYPERLINK \l "_Toc149376751" 1.3.4 Bots malveillants  PAGEREF _Toc149376751 \h 34
 HYPERLINK \l "_Toc149376752" 1.3.4.1 Mise en réseau de bots dans un but malveillant  PAGEREF _Toc149376752 \h 34
 HYPERLINK \l "_Toc149376753" 1.3.4.2 Utilisations des bots malveillants  PAGEREF _Toc149376753 \h 36
 HYPERLINK \l "_Toc149376754" 1.3.5 Autres bots  PAGEREF _Toc149376754 \h 38
 HYPERLINK \l "_Toc149376755" Partie 2 Web sémantique au service de Spider  PAGEREF _Toc149376755 \h 39
 HYPERLINK \l "_Toc149376756" 2.1 Concept de Spider sémantique  PAGEREF _Toc149376756 \h 39
 HYPERLINK \l "_Toc149376757" 2.2 Principales familles d’outils de recherche  PAGEREF _Toc149376757 \h 39
 HYPERLINK \l "_Toc149376758" 2.2.1 Annuaires  PAGEREF _Toc149376758 \h 39
 HYPERLINK \l "_Toc149376759" 2.2.2 Moteurs de recherches  PAGEREF _Toc149376759 \h 41
 HYPERLINK \l "_Toc149376760" 2.2.2.1 Algorithmes de classement  PAGEREF _Toc149376760 \h 43
 HYPERLINK \l "_Toc149376761" 2.2.3 Métamoteurs  PAGEREF _Toc149376761 \h 44
 HYPERLINK \l "_Toc149376762" 2.3 Web sémantique  PAGEREF _Toc149376762 \h 45
 HYPERLINK \l "_Toc149376763" 2.3.1 Processus d’indexation  PAGEREF _Toc149376763 \h 45
 HYPERLINK \l "_Toc149376764" 2.3.2 Construction de l’index  PAGEREF _Toc149376764 \h 46
 HYPERLINK \l "_Toc149376765" 2.3.3 Processus d’évaluation  PAGEREF _Toc149376765 \h 50
 HYPERLINK \l "_Toc149376766" 2.3.4 Exploitation de l’approche pour les requêtes  PAGEREF _Toc149376766 \h 51
 HYPERLINK \l "_Toc149376767" 2.4 Intégration de la web sémantique au Spider  PAGEREF _Toc149376767 \h 52
 HYPERLINK \l "_Toc149376768" 2.4.1 Démarche d’intégration  PAGEREF _Toc149376768 \h 52
 HYPERLINK \l "_Toc149376769" Partie 3 Prototype Robotina  PAGEREF _Toc149376769 \h 54
 HYPERLINK \l "_Toc149376770" 3.1 Introduction à Robotina  PAGEREF _Toc149376770 \h 54
 HYPERLINK \l "_Toc149376771" 3.1.1 But de Robotina  PAGEREF _Toc149376771 \h 54
 HYPERLINK \l "_Toc149376772" 3.1.2 Comment définissons-nous un site fiable ?  PAGEREF _Toc149376772 \h 56
 HYPERLINK \l "_Toc149376773" 3.1.3 Accès à l’information électronique  PAGEREF _Toc149376773 \h 56
 HYPERLINK \l "_Toc149376774" 3.1.4 Robotina et les familles de moteurs de recherche  PAGEREF _Toc149376774 \h 57
 HYPERLINK \l "_Toc149376775" 3.1.5 Qu’apporterait la web sémantique à Robotina ?  PAGEREF _Toc149376775 \h 58
 HYPERLINK \l "_Toc149376776" 3.2 Robotina, un moteur de recherche  PAGEREF _Toc149376776 \h 58
 HYPERLINK \l "_Toc149376777" 3.2.1 Comment Robotina alimente-elle sa base de données ?  PAGEREF _Toc149376777 \h 58
 HYPERLINK \l "_Toc149376778" 3.2.2 Fonctionnement du bot de Robotina  PAGEREF _Toc149376778 \h 60
 HYPERLINK \l "_Toc149376779" 3.2.3 Architecture du système de Robotina  PAGEREF _Toc149376779 \h 62
 HYPERLINK \l "_Toc149376780" Résumé  PAGEREF _Toc149376780 \h 64
 HYPERLINK \l "_Toc149376781" Partie 4 Bibliographie  PAGEREF _Toc149376781 \h 66
 HYPERLINK \l "_Toc149376782" 4.1 Livres  PAGEREF _Toc149376782 \h 66
 HYPERLINK \l "_Toc149376783" 4.2 Sites Internet  PAGEREF _Toc149376783 \h 66
 HYPERLINK \l "_Toc149376784" Partie 5 Annexes  PAGEREF _Toc149376784 \h 68
 HYPERLINK \l "_Toc149376785" 5.1 Manuel de mise en marche de Robotina  PAGEREF _Toc149376785 \h 68
 HYPERLINK \l "_Toc149376786" 5.2 Manuel de programmeur du bot de Robotina  PAGEREF _Toc149376786 \h 68
 HYPERLINK \l "_Toc149376787" 5.3 Codes PHP du bot Robotina  PAGEREF _Toc149376787 \h 70
 HYPERLINK \l "_Toc149376788" 5.4 Codes PHP de l’interface utilisateur de Robotina  PAGEREF _Toc149376788 \h 75
 HYPERLINK \l "_Toc149376789" 5.4.1 Fichier : functions.php  PAGEREF _Toc149376789 \h 75
 HYPERLINK \l "_Toc149376790" 5.4.2 Fichier : index.php  PAGEREF _Toc149376790 \h 83
 HYPERLINK \l "_Toc149376791" 5.4.3 Fichier : creation_compte.php  PAGEREF _Toc149376791 \h 84
 HYPERLINK \l "_Toc149376792" 5.4.4 Fichier : compte_utilisateur.php  PAGEREF _Toc149376792 \h 85
 HYPERLINK \l "_Toc149376793" 5.4.5 Fichier : affichage_resultats.php  PAGEREF _Toc149376793 \h 86
 HYPERLINK \l "_Toc149376794" 5.4.6 Fichier : contact.php  PAGEREF _Toc149376794 \h 87
 HYPERLINK \l "_Toc149376795" 5.5 Codes SQL de Robotina pour la base de données  PAGEREF _Toc149376795 \h 87
 HYPERLINK \l "_Toc149376796" 5.6 Principes de la protection juridique des œuvres de l’esprit  PAGEREF _Toc149376796 \h 88
 HYPERLINK \l "_Toc149376797" 5.6.1 Conditions de la protection  PAGEREF _Toc149376797 \h 88
 HYPERLINK \l "_Toc149376798" 5.6.1.1 Droits d’auteur  PAGEREF _Toc149376798 \h 89
 HYPERLINK \l "_Toc149376799" 5.6.1.2 Mise à la disposition d'une œuvre via Internet  PAGEREF _Toc149376799 \h 90
 HYPERLINK \l "_Toc149376800" 5.6.2 Contrats  PAGEREF _Toc149376800 \h 90
 HYPERLINK \l "_Toc149376801" 5.7 Typologie des données  PAGEREF _Toc149376801 \h 91
 HYPERLINK \l "_Toc149376802" 5.8 Difficulté d’indexation des pages dynamiques  PAGEREF _Toc149376802 \h 93
 HYPERLINK \l "_Toc149376803" 5.9 Tendances des moteurs de recherches  PAGEREF _Toc149376803 \h 94

Liste des figures
 TOC \h \z \c "Figure"  HYPERLINK \l "_Toc149359286" Figure 11: Chatterbot iEinstein  PAGEREF _Toc149359286 \h 7
 HYPERLINK \l "_Toc149359287" Figure 12: Yahoo! Messenger, la liste des contacts et des salons  PAGEREF _Toc149359287 \h 9
 HYPERLINK \l "_Toc149359288" Figure 13: Yahoo! Messenger, la boîte de dialogue et le salon de chat  PAGEREF _Toc149359288 \h 10
 HYPERLINK \l "_Toc149359289" Figure 14: Températures des villes dans le monde  PAGEREF _Toc149359289 \h 24
 HYPERLINK \l "_Toc149359290" Figure 15: Code source de la page des températures  PAGEREF _Toc149359290 \h 25
 HYPERLINK \l "_Toc149359291" Figure 16: Exemple du code d'un fichier XML  PAGEREF _Toc149359291 \h 30
 HYPERLINK \l "_Toc149359292" Figure 17: Exemple d'une requête SOAP  PAGEREF _Toc149359292 \h 32
 HYPERLINK \l "_Toc149359293" Figure 18: Exemple d'une réponse du serveur SOAP  PAGEREF _Toc149359293 \h 32
 HYPERLINK \l "_Toc149359294" Figure 21: Page d'accueil de culture.fr  PAGEREF _Toc149359294 \h 40
 HYPERLINK \l "_Toc149359295" Figure 22: Spider Simulator à la découverte de google.com  PAGEREF _Toc149359295 \h 42
 HYPERLINK \l "_Toc149359296" Figure 23: Métamoteur Copernic  PAGEREF _Toc149359296 \h 44
 HYPERLINK \l "_Toc149359297" Figure 24: Donnée de l'exercice sur la web sémantique  PAGEREF _Toc149359297 \h 48
 HYPERLINK \l "_Toc149359298" Figure 25: Calcul de la similarité pour Doctor et Nurse  PAGEREF _Toc149359298 \h 49
 HYPERLINK \l "_Toc149359299" Figure 31: Démarche d'inscription sur le site Robotina  PAGEREF _Toc149359299 \h 54
 HYPERLINK \l "_Toc149359300" Figure 32: Utilisation de Robotina pour une recherche d'article  PAGEREF _Toc149359300 \h 55
 HYPERLINK \l "_Toc149359301" Figure 33: Résultat de recherche de Robotina  PAGEREF _Toc149359301 \h 55
 HYPERLINK \l "_Toc149359302" Figure 34: Comparaison des flux RSS du Temps et du Courrier  PAGEREF _Toc149359302 \h 59
 HYPERLINK \l "_Toc149359303" Figure 35: Illustration du fichier log de Robotina  PAGEREF _Toc149359303 \h 63
 HYPERLINK \l "_Toc149359304" Figure 51: Page d'accueil de google.ch  PAGEREF _Toc149359304 \h 94
 HYPERLINK \l "_Toc149359305" Figure 52: Sommaire proposé par Yahoo! Actualité  PAGEREF _Toc149359305 \h 95
 HYPERLINK \l "_Toc149359306" Figure 53: Résultat de recherche du mot clé "heg" sur Vivisimo  PAGEREF _Toc149359306 \h 96
 HYPERLINK \l "_Toc149359307" Figure 54: Résultat de recherche du mot clé "heg" sur Kartoo  PAGEREF _Toc149359307 \h 97
 HYPERLINK \l "_Toc149359308" Figure 55. Ecran de présentation de "Google AdWords"  PAGEREF _Toc149359308 \h 98
 HYPERLINK \l "_Toc149359309" Figure 56: "Mirago France" propose des recherches par région géographique  PAGEREF _Toc149359309 \h 99
Liste des tableaux
 TOC \h \z \c "Tableau"  HYPERLINK \l "_Toc149359310" Tableau 11: Les sockets et le modèle OSI  PAGEREF _Toc149359310 \h 13
 HYPERLINK \l "_Toc149359311" Tableau 21: Résultat de l'exercice sur la web sémantique  PAGEREF _Toc149359311 \h 48
 HYPERLINK \l "_Toc149359312" Tableau 51: Typologie de données sur l’Internet  PAGEREF _Toc149359312 \h 92
 Liste des diagrammes
 TOC \h \z \c "Diag."  HYPERLINK \l "_Toc149359313" Diag. 11: Diagramme d’activité d’un bot IRC  PAGEREF _Toc149359313 \h 14
 HYPERLINK \l "_Toc149359314" Diag. 12: Diagramme d'activité de l'agrégateur  PAGEREF _Toc149359314 \h 25
 HYPERLINK \l "_Toc149359315" Diag. 21: Diagramme d'activité de Spider Sémantique  PAGEREF _Toc149359315 \h 53
 HYPERLINK \l "_Toc149359316" Diag. 31: Diagramme d'activité du fonctionnement de Robotina  PAGEREF _Toc149359316 \h 61
 HYPERLINK \l "_Toc149359317" Diag. 32: Schéma de la base de données de Robotina  PAGEREF _Toc149359317 \h 62
 HYPERLINK \l "_Toc149359318" Diag. 33: Hiérarchie des bots  PAGEREF _Toc149359318 \h 65
 Avant propos
Ce travail est composé de cinq parties. Dans la première partie, nous définirons la notion de bot et nous répondrons à la question : « Qu’est ce qu’un bot ? »

Etant donnée l’application de cet outil informatique dans des domaines très divers, nous avons décidé d’aborder le sujet en expliquant un ensemble plus grand que celui des bots. Ainsi, nous allons développer la notion d’agent qui généralise le concept de bot afin d’en illustrer les propriétés.

Ensuite, nous classerons les bots dans des catégories qui démontreront leurs applications pour différents usages. Pour chaque catégorie nous approfondirons le cas d’utilisation et son mécanisme avec des exemples.

Dans la deuxième partie du travail, nous examinerons une méthode pour l’amélioration des recherches d’information. Nous l’étudierons en détail et nous verrons comment et à quels outils de recherche cette méthode pourrait être appliquée.

Dans la troisième partie du travail, nous proposerons une idée d’application pour la mise en œuvre d’un outil de recherche d’information utilisant un bot au sein du système. Nous examinerons, par la suite, les différents aspects de la mise en application de l’idée. Ainsi, nous suivrons une démarche technique pour vérifier sa concordance avec les objectifs.

Cette démarche pourrait inspirer le processus de la mise en œuvre de nouveaux outils informatiques. Ce processus consiste à développer une problématique de laquelle découleront une ou plusieurs solutions.

Nous verrons également comment nous mettons en marche cet outil de façon concrète, tout en lui incluant les compétences et les propriétés nécessaires d’un bot. Le code du programme est en annexe.

La quatrième partie est consacrée à la bibliographie qui sera suivie par des annexes dans la dernière partie.
Les bots et leur environnement
Introduction
Cette partie du travail est consacrée aux bots. Dans le but de les définir et d’avoir une vue globale de ceux-ci, nous parlerons des agents et de leurs propriétés. Ensuite, nous développerons la notion de bot dans sa diversité usuelle. Ainsi, nous parlerons de leurs différents domaines d’application dont nous illustrerons l’application par des exemples.

Pour chaque exemple nous présenterons les divers aspects techniques et utilitaires et nous remarquerons qu’un bot n’est qu’un type particulier d’agent qui fonctionne avec un mécanisme propre qui lui a valu le nom de « bot ».
Agents
Afin de définir la notion de bot, nous sommes contraints de comprendre la notion d’agent. Par conséquent, nous allons nous intéresser à leurs propriétés ainsi qu’à leur nécessité et à leur développement historique.
Qu’est-ce qu’un agent ?
Un agent est un système informatique de type hardware ou software composé d’éléments qui ont une relation particulière entre eux et de l’environnement dans lequel le système est conçu. Les agents peuvent ainsi être instanciés comme un robot physique ou, plus communément, comme des programmes sur un ordinateur. Indépendamment de leur conception, les agents doivent avoir des propriétés et des compétences spécifiques pour êtres reconnus en tant que tels.
Propriétés des agents
D’une manière générale les agents sont définis par leurs compétences ou leurs capacités. Dans le cadre de ce travail, nous verrons celles-ci.
Autonomie
La première propriété qu’un agent doit avoir est l’autonomie. Par là, on entend la capacité à agir sans l’intervention directe de l’homme ou l’interférence d’autres agents.
Sociabilité
La sociabilité est la deuxième propriété nécessaire pour un agent. Il doit être capable d’interagir automatiquement avec son environnement et également avec d’autres agents, humains ou pas, qui, avec l’intermédiaire d’un outil, communiquent.
Réactivité
L’agent doit être réactif dans le sens où il doit être capable de détecter des changements dans son environnement et y répondre de manière adéquate. Cela signifie que l’agent possède une série de méthodes et qu’il est capable de prendre l’initiative d’effectuer une action dans son environnement.
Pourquoi les agents ?
Naturellement l’apparition des inventions a pour but de répondre à un besoin particulier. Ce besoin est étroitement lié à son contexte historique. Afin de répondre à la question « Pourquoi les agents ? », nous ferons attention aux facteurs sociaux de l’être humain et nous survolerons l’histoire des agents.
Les facteurs sociaux
Sans doute, l’être humain est la créature la plus sociable. L’interactivité et la sociabilité entre les hommes ont influencé nos visions et nos valeurs au cours de l’histoire. La communication par le moyen des langues naturelles n’aurait pas été possible sans interactions.

Ainsi l’apparition des outils au cours de l’histoire témoigne d’un niveau donné d’activités de l’homme et d’une forme d’interaction entre les membres des sociétés. Nous inventons de nouveaux outils et instruments pour satisfaire nos désirs et, par conséquent, nous influençons notre histoire.

La compréhension de la pensée d’autrui demande une interaction entre les individus. Nous avons besoin de systèmes de signes pour échanger nos pensées et s’interposer dans les processus sociaux. Les langues naturelles sont des exemples parfaits de ces systèmes de signes. Elles se développent conformément à notre propre évolution et nos progrès technologiques. Par notre désir de décrire des événements techniques, elles ont été influencées de sorte que tout le monde les comprennent.

De cette façon nous nous retrouvons au sein d’un système dynamique où ont été produit la culture, l’histoire et la société. De la même manière ces derniers facteurs influencent notre façon de vivre. Ainsi nous utilisons des outils pour changer notre mode de vie, et, à travers ce processus, nos comportements et nos pensées changent.
Les agents dans un « Framework psychologique »
Les hommes utilisent beaucoup d’outils et de gadgets pour maîtriser leur processus mental. Ces créations artificielles sont définies par Vygotsky comme des « outils psychologiques ». Par leur nature, ils sont sociaux, non organiques et non individuels. Ils permettent de maîtriser et contrôler le processus comportemental d’un individu de la même manière que les moyens techniques permettent le contrôle du processus dit naturel.

Un langage naturel est un bon exemple de ces instruments psychologiques. Les hommes utilisent un langage particulier pour parler entre eux, exprimer leurs pensées et leurs sentiments. L’art, la musique, la fiction et la poésie en sont quelques exemples.

L’utilisation de ces outils nous apporte un nouveau type d’activité humaine et un nouveau processus comportemental. En tenant compte de cela, nous distinguons deux formes de comportements : un naturel et l’autre artificiel ou instrumental.

Les comportements artificiels trouvent leurs racines dans le comportement naturel des êtres humains et, à partir de cela, ces mêmes humains les reproduisent de façon artificielle.
Les agents dans un « Framework filtrant »
Imaginons le flux d’informations au sein d’une entreprise de grande taille. Pour prendre de bonnes décisions, le directeur de l’entreprise doit être en possession d’informations exactes. Cependant leur volume est tel qu’il lui est impossible de les connaître toutes.

Ainsi, l’existence d’entités spécialisées, nommées « états majeurs », au sein des entreprises n’est pas innocente. En effet, ils filtrent et vérifient l’exactitude des informations. Ensuite, celles jugées exactes et décisives sont conservées et transmises au supérieur.

L’Internet est un autre exemple qui illustre le flux des énormes volumes d’informations. Dans ce genre d’environnement les agents intelligents peuvent jouer un rôle important. Un agent autonome peut être capable de chercher les informations, les comparer, prendre une décision et présenter un résultat.
Histoire des agents
La quête pour des contrôles intelligents dans les systèmes artificiels est bien ancienne. Bien avant l’arrivée des ordinateurs, l’ingénieur James Watt a vulgarisé l’utilisation des outils mécaniques d’une manière automatique. En effet, il est désormais possible de réguler la vitesse de rotation dans les moteurs à vapeur par le contrôle de la consommation d’énergie.

Deux siècles plus tard, ce concept s’avère fondamental, notamment avec l’apparition des cybernétiques dans les années 1940. L’utilisation des contrôles intelligents dans les ordinateurs électriques analogues s’est intensifiée pendant la deuxième guerre mondiale. Par contrôle de la quantité de voltages, ces machines simulaient des systèmes physiques qui permettaient la navigation des avions ou l’assignation de cibles de bombardements. La similarité entre les opérations internes de ces ordinateurs analogues et le fonctionnement de la régulation des êtres vivants (par exemple le contrôle de la température chez un être humain) a inspiré les développeurs à concevoir des machines qui peuvent appendre, penser et agir rationnellement comme si elles étaient vivantes.

Dans les mêmes années, à l’Institut des Technologies du Massachusetts, deux champs de recherches sont nés. Le premier concernait l’étude de l’automate cellulaire qui est la conception d’une machine biologique très complexe capable de s’auto-reproduire. Selon la définition donnée par Steven Levy, un automate est une machine qui génère de l’information, qui procède logiquement, et qui exécutera inexorablement ses prochaines actions après avoir reçu de l’extérieur une série d’instructions qu’elle aura programmée elle-même. La complexité du projet oblige John Von Neumann à l’abandonner avant sa complétion.

Le deuxième champ de recherche englobait les relations entre la biologie et le calcul artificiel. L’idée était de programmer un réseau de neurones artificiels dans lequel ils seraient capables de travailler ensemble afin de reproduire des comportements complexes. Ainsi quelques années plus tard, John Holland inventa l’algorithme génétique.

En 1987, la création de la programmation génétique inventée par John Koza a permis la naissance d’un nombre d’applications dans des domaines différents tels que la manipulation robotique.

Au fur et à mesure, la puissance des ordinateurs augmenta si bien que l’Intelligence Artificielle (IA) prit une place importante dans la construction d’entités munies d’une vie artificielle. Le concept d’intelligence artificielle désigne le projet de créer une machine capable, non seulement de simuler un comportement intelligent, mais d’éprouver une impression d'une réelle conscience de soi.

En 1950, Alan Turing explora le problème de l'intelligence artificielle et suggéra deux manières pour atteindre le but de création de machines intelligentes. La première consistait à se concentrer sur la programmation des activités intellectuelles comme pour jouer aux échecs. La deuxième était une approche nommée « animale artificielle ». Cette approche se concentre sur des systèmes complets qui comme les animaux existent dans des environnements réalistes et doivent faire face à certains problèmes qu’ils rencontrent.

Ainsi, beaucoup de projets ont vu le jour pour la construction de systèmes d’intelligence artificielle qu’on nomme les agents. Désormais, les robots mécaniques, tels que les robots mobiles, ou les softwares, tels que les Chatterbots qui permettent d’avoir un dialogue, évoluent séparément. On peut donc en conclure que la création d’un être artificiel intelligent, à l’image de l’Homme, est le résultat de la conjonction des deux propositions de Turing.

En effet la concurrence fonctionnelle et la distribution des calculs dans l’intelligence artificielle ont causé l’apparition d’une nouvelle branche nommée Intelligence Artificielle Distribuée (IAD). Cette discipline se concentre sur les systèmes appelés Multi-Agents (MA) qui coordonnent le comportement au sein d’un ensemble d’agents autonomes intelligents. Dans ces systèmes, la coordination permet la résolution des problèmes au niveau le plus adéquat. Les premiers travaux concernant ce domaine montrent que les agents opéraient et effectuaient des tâches dans des environnements hautement structurés, dans lesquels des Inter-Agents procédaient à la résolution des conflits parmi les composants du système.

Par la suite, des recherches plus réalistes ont vu le jour dans des environnements moins structurés. Ainsi, des groupes décentralisés d’agents autonomes, contraints par des ressources et des capacités limitées, ont été mis en œuvre. Désormais ces agents sont capables d’effectuer des tâches particulières dans un environnement illimité tel que l’Internet.

En 1993, les recherches dans le domaine des agents intelligents déclenchent un débat concernant la légitimité du rôle des softwares du « Monde Réel » par opposition aux environnements physiques.

D’après Etzioni les deux idées pour la construction des agents complets de nature software ou physique dans les environnements du « Monde Réel » sont acceptables. Par contre, on ne peut construire des « Softbots », agents AI complets, uniquement s’ils interagissent avec un monde de softwares réels tel que l’Internet.

Une année plus tard Etzioni met en place un agent software courant sur l’Internet, appelé Softbot (Software Robotic). Cet agent est une implémentation complète de l’intelligence artificielle. Le Softbot est conçu dans un environnement de ressources différentes de l’Internet. Cet agent interagit avec son environnement à travers UNIX ainsi que le World Wide Web et permet un nombre de commandes de manipulation de fichiers tels que FTP, Telnet et l’e-mail. Le Softbot est capable de chercher sur l’Internet des services sitôt qu’ils sont disponibles et de les utiliser quand il en a besoin. Il possède une interface expressive qui donne à ses interactions avec l’utilisateur un caractère social.

Le Softbot peut choisir dynamiquement et automatiquement quel service utiliser et dans quelle situation. Par exemple s’il veut trouver une adresse e-mail, il peut utiliser le service de Netfind. Il sait que pour se faire, il a besoin d’un nom et d’une adresse postale. Ainsi, il va chercher, dans les bases de données auxquelles il a accès, un article contenant le nom et l’adresse désirée.

Etzioni propose que les agents softwares soient une alternative dans le domaine de la robotique pour les machines munies de la représentation AI, du raisonnement automatisé, de la planification et de l’apprentissage. Etzioni présente quelques raisons qui mettent en avant les avantages de la construction de Softbots :

Ils peuvent effectuer un grand nombre de tâches telles que la récupération et le filtrage, le network management, les business desktop applications (Organisation des e-mails, planification d’agenda) et l’interface d’assistance pour l’utilisateur.

Les Softbots peuvent être construits à partir d’outils existants pour interagir avec des softwares environnants (les systèmes d’exploitation et les réseaux de communications).

La nature structurée de la plupart des outils softwares rend facile la perception des Softbots. Les utilisateurs peuvent faire des Softbots un outil expressif de langage. Cette utilisation s’est souvent avérée lourde lors de son application aux robots.

Les propositions d’Etzioni servent de ralliement symbolique pour tous ceux qui s’intéressent aux recherches et aux développements des agents intelligents dans les environnements de softwares du « Monde Réel ».

Depuis l’expansion rapide de l’intérêt pour les domaines tels que l’Internet ou le World Wide Web, un véritable boom s’est produit dans la recherche, le développement et le déploiement des agents softwares intelligents. Les web robots, les Spiders, les Softbots, les Knowbots et les Chatterbots ont trouvé une place importante dans notre vie quotidienne. Ces agents softwares sont utilisés pour des tâches différentes telles que l’indexation et la récupération des ressources du web, l’obtention ainsi que la vente automatisée, le filtrage électronique des informations et le traçage du lieu des utilisateurs de réseaux.

Ainsi aujourd’hui, la technologie des agents softwares a ouvert la porte à de nouvelles opportunités pour l’exploration et l’exploitation du cyberspace.

Bots sur Internet
Un bot est un agent, il en possède les mêmes compétences ainsi que les mêmes propriétés et il peut être muni d’intelligence ou non. Le terme « bot » dérive du mot robot qui reflète son caractère automatique. Ainsi un bot est un agent virtuel qui interagit avec un réseau tel que l’Internet pour effectuer des tâches répétitives.

Les bots sont utilisés pour des activités très diverses, telles que l’information ou la communication. Dans ce chapitre, nous présentons l’utilisation des bots dans ces deux domaines.
Bots de communication
Un bot peut être utilisé par un outil de communication. Ici, nous présenterons les types les plus répandus : les Chatterbots et la Messagerie Instantanée.
Chatterbots
Ces bots sont appelés des Chatterbots ou Chatbots. Ils simulent une conversation auditive ou textuelle avec un ou plusieurs utilisateurs humains. Le Chatterbot est programmé pour répondre à son interlocuteur d’une manière intelligente. Il utilise des mots clés, ou mots similaires, qui se trouvent dans les phrases de son interlocuteur, pour préparer des réponses sans vraiment les comprendre. Les réponses sont calculées d’avance avec des patterns stockés dans une base de données.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 1: Chatterbot iEinstein

Les Chatterbots sont programmés sur la base du langage naturel qui est un des champs de l’intelligence artificielle (IA). Nous pouvons distinguer deux formes de l’IA :
IA forte :
Elle prend en compte l’ensemble des capacités cognitives et des fonctions psychologiques de l’être humain telles que l’intelligence, la mémoire, le langage, le raisonnement et la perception. L’IA forte suppose qu’il serait possible de construire une machine, à l’image de l’être humain, qui serait capable de raisonner et de résoudre des problèmes ; la machine serait ainsi capable de discernement.
IA faible :
Elle propose d’utiliser des programmes pour résoudre des problèmes spécifiques et accomplir des tâches liées au raisonnement. Ainsi, contrairement à l’IA forte, l’IA faible ne prend pas en compte la totalité des capacités cognitives.

Beaucoup de concepteurs de l’IA faible se sont spécialisés dans le langage naturel pour développer des programmes capables de le traiter automatiquement. Ce processus se trouve à la frontière de la linguistique et de l’informatique, il concerne l'application des techniques informatiques à tous les aspects du langage humain tels que la génération automatique de la parole sous forme du texte ou du son.

Les Chatterbots fonctionnent sur la base de ce processus. Cependant ils se différencient au niveau de l’application de l’IA. Par exemple, « Jabberwacky » a plutôt une approche de l’IA forte puisqu’il est conçu pour apprendre le langage, comme un enfant, par l’interaction avec les être humains et a pour but de simuler le langage naturel d’une manière intéressante, amusante et pleine d’humour. Malgré les objectifs fixés, le résultat est encore assez pauvre.

Ainsi nous pouvons dire qu’il n’existe pas encore réellement d’intelligence artificielle conversationnelle. C’est pour cette raison que d’autres développeurs de Chatterbots se sont concentrés sur une approche plus pratique de l’AI faible. Par exemple, « A.L.I.C.E. », un des Chatterbots dont le langage est le plus humainement naturel utilise son propre programme du langage « AIML ». Les bots qui utilisent ce programme sont appelés des Alicebots.

Messagerie Instantanée
La Messagerie Instantanée (MI) est une forme de bot de communication. Ces bots permettent une communication textuelle en temps réel entre deux ou plusieurs interlocuteurs distants. Cela s’effectue par l'intermédiaire des ordinateurs reliés à un réseau informatique tel que l'Internet.

La transmission des messages instantanés requiert l'emploi d'un logiciel client qui utilise un bot pour se connecter à un serveur de messagerie instantanée. Notons que ce bot, contrairement aux Chatterbots, n’est pas un agent muni de l’IA et ce qui le caractérise, est son aptitude à relier des interlocuteurs sur le réseau par l’intermédiaire du serveur. Ainsi, ce qui le différencie des clients réguliers c’est sa capacité de gestion automatique des « canaux » de communication, sa prise en charge de la connexion et son identification auprès du serveur.

Les logiciels de messagerie instantanée ont beaucoup évolué avec le temps et ils intègrent d’autres fonctionnalités supplémentaires pour enrichir la communication.

Par exemple « Yahoo! Messenger » permet, en plus du chat, d’échanger des fichiers et des images, de jouer avec un interlocuteur et d’écouter la radio. Il est également muni des fonctionnalités vocales et vidéo. Ainsi, il permet grâce à la technologie VoIP (Voice on IP), de parler avec un interlocuteur et de le voir avec une webcam.

Dans l’exemple suivant, nous pouvons constater que « Yahoo! Messenger » donne la possibilité de constituer une liste de contacts. Ainsi, grâce aux dispositifs supplémentaires nous pouvons savoir si un contact est présent sur le net.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 2: Yahoo! Messenger, la liste des contacts et des salons

Nous avons également la possibilité de rejoindre un salon de discussion, dans la catégorie désirée, où nous pouvons « chatter » ou parler avec les interlocuteurs présents dans le salon.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 3: Yahoo! Messenger, la boîte de dialogue et le salon de chat

Notons que les messageries instantanées rendent possible la communication grâce à des protocoles différents. On peut distinguer deux types de protocole :

Protocoles ouverts
Deux grands membres de cette famille sont l’ HYPERLINK "http://fr.wikipedia.org/wiki/Internet_Relay_Chat" \o "Internet Relay Chat" Internet Relay Chat (IRC) et le protocole Jabber.

Parmi les premiers protocoles, l’ HYPERLINK "http://fr.wikipedia.org/wiki/Internet_Relay_Chat" \o "Internet Relay Chat" Internet Relay Chat (IRC) fournit depuis  HYPERLINK "http://fr.wikipedia.org/wiki/1988" \o "1988" 1988, des fonctionnalités de messagerie instantanée avancée très orientée discussion de groupe.

En 1998, le protocole Jabber voit le jour. C’est un système standard de la messagerie instantanée, fondé sur le langage XML et constitué d’un ensemble de protocoles. En 2005, Jabber étend sa capacité dans le domaine multimédia et intègre la voix sur IP (VoIP).

Protocoles propriétaires
Les protocoles de messagerie instantanée tels que « MSN Messenger », « Yahoo! Messenger » ou « Skype » sont développés par des utilisateurs de réseaux propriétaires et sont des protocoles fermés. Cela signifie que les utilisateurs de ces réseaux sont dans l'incapacité de communiquer avec d’autres réseaux ou protocoles, et sont donc enfermés.

Avant de présenter un exemple du mécanisme d’un bot IRC, nous survolerons le protocole IRC et présenterons quelques commandes de celui-ci. En effet, la connaissance de ce protocole est nécessaire à la compréhension des bots IRC.

Ensuite, nous présenterons la notion de socket, qui est un autre élément important pour la mise en œuvre des bots en général.
Protocole IRC
Le protocole IRC est le protocole de communication le plus utilisé pour ces bots, car il fournit un moyen de communiquer en temps réel et est conçu pour l’usage de téléconférence en mode textuel. Grâce à l'utilisation d'un modèle clientserveur, l'IRC se prête à une exécution sur de nombreuses machines, de façon distribuée. Le protocole IRC a été développé sur des systèmes utilisant le protocole réseau TCP/IP.

Une configuration type comprend un serveur unique qui fournit un point d'accès pour les clients. Il traite l'acheminement et le multiplexage requis de messages, ainsi que d'autres fonctions.

Ainsi, le serveur est la colonne vertébrale de l'IRC. Il fournit un point auquel les clients peuvent se connecter pour parler entre eux, et un point auquel les autres serveurs peuvent se connecter, formant un réseau IRC. Les plus grands réseaux sont EFnet, Undernet, IRCnet, DALnet, et NewNet.

Un programme client, muni d’un pseudonyme unique, est exécuté par un utilisateur pour se connecter à un serveur. Pour cela, ce dernier doit connaître les informations suivantes :

Le vrai nom de l'hôte sur lequel le client est exécuté ;
Le nom de l'utilisateur du client sur cet hôte ;
Le serveur auquel le client est connecté.

Il existe trois types de communication.

Les clients peuvent se communiquer sur une base un à un ;
La communication peut être effectuée sous la forme d’un à plusieurs, ainsi il est possible d’avoir une conférence avec une liste d’utilisateurs ;
Les messages un à tous peuvent être décrits comme des messages de type diffusion, envoyés à tous les clients, les serveurs, ou les deux.

Pour établir une connexion avec un serveur IRC, le client doit exécuter, dans l’ordre, les commandes suivantes :

Commande PASS : permet de définir le mot de passe de la connexion ;
Commande NICK : donne un pseudonyme à un utilisateur ;
Commande USER : est utilisée au début d'une connexion pour spécifier le nom d'utilisateur, le nom d'hôte, le nom du serveur, et le véritable nom d'un nouvel utilisateur.

Pour finir, la session du client se termine par un message QUIT.

Une fois la connexion établie, les utilisateurs peuvent former un ou plusieurs canaux de transmission à l’aide desquels ils recevront tous les messages adressés à ces canaux. Ce groupe d’utilisateurs peut effectuer des manipulations de canaux grâce aux commandes suivantes :

Commande JOIN : permet à un client de rejoindre un canal spécifique ;
Commande TOPIC : est utilisée pour modifier ou voir le sujet d'un canal ;
Commande NAMES : permet à un utilisateur d’obtenir la liste des pseudonymes visibles sur n'importe quel canal qu'il peut voir ;
Commande LIST : est utilisée pour lister les canaux et leurs sujets ;
Commande: INVITE : est utilisée pour inviter des utilisateurs sur un canal ;
Commande KICK : est utilisée pour bannir un utilisateur d'un canal ;
Commande KILL : permet au serveur de fermer une connexion.
Commande PING : est utilisée pour vérifier si un client est actif à l'autre bout de la connexion ;
Commande PONG ; est la réponse à un message PING ;
Commande ERROR ; est utilisée par les serveurs pour rapporter une erreur.

Généralement, le nom des canaux commence par un #, par exemple #nomCanal. Ainsi, les mêmes canaux sont partagés entre tous les serveurs IRC du même réseau.

Il existe aussi des canaux dont le nom commence par un & au lieu d’un #. Ces canaux ne sont pas partagés par tous les serveurs du réseau mais ils existent, seulement, localement sur un serveur.

Les canaux sont conçus par des opérateurs, qui sont une catégorie de clients spéciaux autorisés à exécuter des fonctions de maintenance générale sur le réseau. Ceux-ci ont le contrôle complet du canal et donnent l’autorisation de fréquenter ou non le canal.
Sockets
L’internet est construit de beaucoup de protocoles apparentés. Les protocoles les plus complexes sont au plus haut niveau du système de protocoles. Ainsi, le HyperText Transfer Protocol (HTTP) ou le protocole IRC sont construits sur le Transmission Control Protocol/Internet Protocol (TCP/IP) qui est aussi connu sous le nom de « Sockets Protocol ».

Un socket est un modèle qui permet une communication de type Inter Process Communication (IPC). Celle-ci permet aux divers processus de communiquer aussi bien sur une même machine qu'à travers un réseau TCP/IP.

Les bots sont des programmes qui parcourent l’Internet. Ainsi, pour pouvoir programmer des bots, il faut connaître comment une application informatique parcourt l’Internet.

Lorsque les sockets sont utilisés pour la connexion aux réseaux TCP/IP, ils deviennent la fondation de l’internet. Les sockets sont souvent le plus bas niveau du réseau. Ils ne sont pas concernés par le format des données. Les sockets et sous-couches du protocole TCP/IP doivent simplement s’assurer que ces données atteignent la bonne destination. Ainsi, les sockets fonctionnent comme le service postal et ils sont utilisés pour expédier des messages aux systèmes informatiques dans le monde entier.

Les couches de haut niveau, telles que les protocoles HTTP et IRC, sont utilisées pour donner une signification aux données transportées. Si un système accepte les messages de type IRC, il saura que le message adhère au protocole IRC et non pas à d’autres protocoles.

Le tableau suivant montre la position des sockets dans le modèle OSI (Open Systems Interconnection).

Tableau  STYLEREF 1 \s 1 SEQ Tableau \* ARABIC \s 1 1: Les sockets et le modèle OSI
Modèle des socketsOSIApplication utilisant les socketsApplicationPrésentationSessionUDP/TCPTransportIP/ARPRéseauEthernet, X25, …LiaisonPhysique
Exemple d’utilisation d’un bot IRC
Pour mieux comprendre le fonctionnement d’un bot IRC, en voici un exemple type.

Le bot se connecte au serveur IRC grâce à un socket. Pour se faire, il a besoin de connaître l'adresse du serveur ainsi que le port de communication qu'il utilise.

Le socket établit une connexion unique et s’identifie auprès du serveur par un pseudonyme et un nom d'utilisateur. Ainsi, un dialogue s'instaure entre le bot et le serveur. Nous lui envoyons une commande et le serveur nous répond.

Le diagramme suivant illustre le comportement d’un bot IRC.


Diag.  STYLEREF 1 \s 1 SEQ Diag. \* ARABIC \s 1 1: Diagramme d’activité d’un bot IRC

Notons que le serveur vérifie périodiquement que le bot est encore connecté. Il lui envoie un signal de test « PING » et le bot répond par le « PONG » adéquat. Ce processus s'appelle le « PING-PONG ».
Bots d’information
Les bots d’information sont des outils qui sont utilisés pour collecter des données sur le World Wide Web et nous les présenter.

Ces bots diffèrent des bots de communication par leur type de protocole et par leur utilisation. En effet, la plupart des bots d’information utilisent le protocole HTTP que nous présenterons dans ce chapitre.

Puisque les bots d’information interagissent avec les sites web pour collecter les informations, ils doivent être également munis d’un système d’extraction de données qui sera présenté. Ensuite, nous verrons le fonctionnement des bots : Spider et Agrégateur.
Protocole HTTP
Le HyperText Transfer Protocol (HTTP) est un protocole de communication développé pour le World Wide Web et il est le protocole le plus utilisé sur l’Internet. Il permet de transférer des données sur l’Internet, essentiellement au format HTML. Les données sont localisées grâce à l’adresse  HYPERLINK "http://www.commentcamarche.net/internet/url.php3" URL (Uniform Resource Locator) entre un client et un serveur. Le protocole HTTP fonctionne sur le protocole TCP.

La communication entre le programme client et le serveur se réalise en deux temps :

Le programme client effectue une requête HTTP ;
Le serveur traite la requête puis envoie une réponse HTTP.

La liaison entre le programme client et le serveur n'est pas toujours directe, il peut exister des machines intermédiaires telles que Proxy, Gateway ou Tunnel qui servent de relai.

Une requête HTTP est composée de plusieurs éléments :
Ligne de commande
Celle-ci est composée de trois éléments :
La commande,
L’URL,
La version du protocole.
En-tête de la requête
C’est un ensemble de lignes facultatives qui permettent de donner des informations supplémentaires sur la requête et/ou le programme client (navigateur, système d'exploitation, …).
Corps de la requête
Il s’agit d’un ensemble de lignes optionnelles qui permettent par exemple un envoi de données d’un formulaire par une commande POST au serveur.

Voici donc un exemple de requête HTTP :

GET http://www.hesge.ch HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 20-September-2006 12:30:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Les commandes HTTP permettent de demander au serveur d'effectuer une action. Voici les commandes HTTP :

GET : permet de demander une ressource à l’URL spécifiée ;
HEAD : permet de demander l'en-tête de la ressource située à l'URL spécifiée ;
POST : permet d’envoyer des données au programme situé à l'URL spécifiée ;
OPTIONS : permet d'obtenir les options de communication d'une ressource ou du serveur en général ;
CONNECT : permet d'utiliser un proxy comme un tunnel de communication ;
TRACE : demande au serveur de retourner ce qu'il a reçu, dans le but de tester et d’effectuer un diagnostic sur la connexion ;
PUT : permet d'ajouter une ressource sur le serveur ;
DELETE : permet de supprimer une ressource du serveur.

Ces deux dernières méthodes nécessitent généralement un accès privilégié.
Extraction de données à partir de pages HTML
L’extraction des données à partir des sources web a suscité un intérêt particulier ces dernières années. Cependant il n'existe aucun standard, car les sources d'information restent très hétérogènes. Néanmoins, il y a un point commun entre celles-ci. Elles sont en grande partie disponibles au format HTML (HyperText Markup Language).

HTML est un langage à balises et ne porte pas d’information sur les données contenues dans la page, mais s’applique seulement à leur mise en forme.

Un document HTML possède cinq parties bien définies :

Texte : comprend les mots que l’on peut voir sur une page HTML.
Commentaires : ce sont, en général, les notes du programmeur HTML et ils ne sont pas affichés sur la page.
Balises de début et de fin : ce sont des balises qui marquent l’ouverture et la fermeture d’une séquence. Les codes suivants illustrent ces balises.
Hello World
Balises simples : elles sont représentées par une seule balise. et font partie de cet ensemble et n’ont pas besoin de leurs balises de fermeture.
Balises concernées par les bots
Le HTML inclut beaucoup de différents types de balises. Cependant, toutes les balises ne sont pas concernées par un bot d’information. Un bot scanne les pages HTML et ne prend en considération que les balises qui l’intéresse.

Les balises contenues dans une page HTML peuvent être fondamentalement regroupées en deux catégories. La première désignerait les balises qui communiquent les données. Ce sont les tableaux et les paragraphes qui affichent l’information. Par exemple la balise fait partie de cette catégorie. L’exemple suivant illustre l’affichage des données contenues dans un tableau.



La deuxième désignerait, quant à elle, les balises d’infrastructure. Ce sont les balises qui permettent au navigateur de passer d’une page à l’autre. Les liens hypertextes appartiennent à cette catégorie. Les différents types de navigation seront présentés dans la suite de ce travail.

Les bots que nous allons présenter doivent posséder des méthodes qui leur permettraient d’interpréter les différentes catégories de balises et en extraire les données. Ainsi, nous pouvons conclure que le « parsing » est un élément nécessaire pour qu’un bot puisse procéder et interagir avec les pages web.

Spider
Le Spider est un bot qui est capable de parcourir la toile pour rechercher des pages web. Il démarre grâce à l’URL fournie par son utilisateur. Ensuite, il scanne la page se trouvant à cette adresse pour découvrir l’ensemble des autres pages auxquelles elle est liée. Puis, il répertorie chaque URL de la page dans une « queue ». Une fois que la première page accédée par l’utilisateur a été examinée, il poursuit de manière similaire avec chaque URL restant dans la queue, jusqu’à ce que cette dernière soit vide. Notons que le Spider pourrait aussi parcourir des pages liées à la page initiale, mais se trouvant sur un autre site.

Le Spider gère quatre types de lien :

Lien interne :
Les liens internes relient la page courante à une autre page située sur le même site.
Lien externe :
Les liens externes relient la page courante à une page située sur un autre site.
Lien mort (Dead link) :
Il s’agit d’un lien vers une page qui n’existe plus ou ne se trouve plus au même emplacement.
Autres :
Par exemple le lien email :

Applications du Spider
Le Spider peut être utilisé principalement dans les cas suivants :

Fonction d’indexation pour le moteur de recherche :
Le Spider va parcourir un maximum de pages web de manière automatique afin d’alimenter les bases de données du moteur de recherche et permettre ainsi une indexation plus complète du web.

Répertorier les liens morts (Dead links) d’un site :
Dans l’Internet, le nombre des liens existants est tellement élevé qu’il serait utopique de penser qu’un être humain puisse filtrer tous les liens morts.

Télécharger la totalité du contenu d’un site sur notre disque dur :
Etant donné que le Spider va suivre tous les liens présents dans les pages d’un site, il disposera de la liste de ces pages ainsi que de la possibilité de connaître tout leur contenu (texte, images, feuille de style, …).

Créer une représentation visuelle (une carte) d’un site :
Grâce au parcours exhaustif des pages d’un site, le spider connaîtra le ou les liens entre chacune d’entre elles.
Structure d’une page web
Pour les spiders, la partie intéressante des pages web est constituée des attributs href. Ceux-ci indiquent une adresse vers une page web.

Exemple : avec a, la balise anchor et href est son attribut.

D’une manière générale, on peut répertorier quatre formes de navigation :

Le lien « a href »
Il se divise en deux sous catégories :

lien absolu :
C’est un lien qui spécifie la position exacte et non ambigüe d’une ressource sur l’Internet. Il contient le nom de l’hôte suivi du nom du fichier.


lien relatif :
C’est le sous ensemble de l’URL dans sa forme absolue. Souvent une URL relative comprend simplement un nom de fichier.


Image Map
Il s’agit d’une zone cliquable au sein d’une image ou d’un dessin.
Exemple :





Formulaire
Il est utilisé dans les pages dynamiques. Il permet à l’utilisateur de saisir des informations comme par exemple son login et son mot de passe.







Autres
On regroupe dans cette catégorie toutes les façons de signifier une redirection vers une autre page web. On citera entre autre le Java Script.
Exemple :

Structure du Spider
Il existe deux architectures principales :

Spider récursif :
Cette méthode se base sur le traitement d’une unique URL « TraiterRécursivementUneURL() ». La partie récursive vient de la manière de traiter chaque nouveau lien trouvé. Celui-ci sera donc traité pareillement au lien initial, c'est-à-dire, par un appel récursif à la méthode « TraiterRécursivementUneURL() »

Exemple de méthode récursive :

Void TraiterRécursivementUneURL(String url)
{
Télécharge l’URL
Parse la page de l’URL
Pour chaque URL trouvée
Appel la méthode « TraiterRécursivementUneURL(URL trouvée) »
Fin de pour chaque
Traite la page dernièrement téléchargée (Par exemple indexation des termes)
}

Nous constatons quelques limitations quant à l’utilisabilité de la version récursive :

Taille du stack :
Bien que naturelle cette solution est limitée à de petites quantités de pages à visiter. En effet, la récursivité nécessite l’utilisation du stack sur lequel chaque itération sera empilée. Ainsi, puisque la taille du stack est limitée, le nombre de page à parcourir doit aussi l’être.

Multithreading :
Dans le multithreading, chaque tâche (thread) doit utiliser son propre stack et dans le cas de la récursivité, le fait de s’appeler soi-même va toujours entraîner l’utilisation du même stack.

Spider non récursif :

Cette méthode utilise une structure de données en queue. Dans cette structure, chaque URL nouvellement découverte y sera stockée en attendant d’être traitée.

Dans la méthode récursive, pour chaque nouveau lien trouvé, une méthode de traitement est aussitôt appelée.

Dans la méthode non récursive, chaque lien trouvé est mis dans une file d’attente. On parcourt donc d’abord complètement l’URL initiale avant de traiter les liens qui y sont trouvés. Quatre queues sont réellement nécessaires :

La « Waiting queue » :
Celle-ci comprend les URL en attente de traitement. Chaque URL nouvellement découverte, sera ajoutée ici.

La « Runnig queue » :
Une fois que le spider commence à traiter une URL, celle-ci sera déplacée dans la Running queue.

L’« Error queue » :
Si une erreur apparaît durant le téléchargement d’une page, alors son URL sera déplacée définitivement dans l’Error queue.

La « Complete queue » :
Si aucune erreur ne survient, une fois que le téléchargement est terminé, l’URL est déplacée définitivement dans la Complete queue.
Flow chart de Spider non récursif
Ici, nous allons illustrer un exemple de traitement de pages par la méthode non-récursive (version sans erreur possible).

Le spider commence avec une unique URL :
Cette URL est placée dans la Waiting queue.

Tant qu’il y a une URL dans la Waiting queue :
Le Spider lance le téléchargement de cette page et déplace son URL dans la Running queue.

Tant que cette page contient des liens
Vérifie pour chaque lien s’il est lié à une page web,
Si c’est un lien vers une page web,
Si c’est une page externe et qu’on tient compte que des pages internes,
Le Spider répertorie ce lien comme lien externe et le spider passe au lien suivant.
Si c’est une page interne,
Le Spider répertorie cette URL comme « page interne » et ajoute cette URL dans la Waiting queue.
Si ce n’est pas un lien vers une page web,
Le Spider le rapporte comme « lien autre » et passe au lien suivant dans le Waiting queue.
Quand la page ne contient plus de liens,
Le Spider se déplace dans la Complete queue et va chercher une autre URL dans la Waiting queue
S’il n’y a plus d’URL dans la Waiting queue,
Le travail du Spider est terminé.

Dans la deuxième partie de ce travail, nous présenterons un type particulier de Spider qui sera muni de la web sémantique. Alors, nous verrons plus en détail les différentes familles d’outils de recherche, et nous examinerons comment intégrer un mécanisme sémantique à un spider classique, dans le but d’optimiser un moteur de recherche.

Agrégateur
L’agrégation est un processus de création d’un objet à partir d’autres plus petits. Nous retrouvons ce concept dans la littérature informatique.

Les usagers de l’Internet ont souvent plusieurs comptes. Par exemple, un usager peut avoir un compte bancaire et un compte postal. Ces comptes sont tenus par des institutions différentes et sont sécurisés, chacun par un nom d’utilisateur et un mot de passe. L’agrégateur visite chaque compte, récupère les données et présente à l’utilisateur une vue de ces informations sur un seul relevé concis.

Un agrégateur est un bot ou un ensemble de bots qui est conçu pour collecter des données de plusieurs sites web similaires et présenter les données dans un format consolidé.

Ces bots sont également utilisés pour des services tels que la météo, les informations sportives, les devises ou d'autres unités financières.

Il existe deux manières communes d’effectuer le processus d’agrégation : online et offline.
Agrégation online
L’agrégation online ne demande aucune application software pour la machine de l’utilisateur. Ce dernier peut simplement s’inscrire sur un site qui contient un agrégateur. D’abord, l’utilisateur donne à l’agrégateur tous les noms d’utilisateur et les mots de passe nécessaires pour accéder à ses comptes. Ces données sont enregistrées sur un serveur central. Finalement, l’agrégateur va sur les sites spécifiés par l’utilisateur et collecte les informations.

Les avantages de l’agrégation online sont multiples. L’utilisateur n’a pas besoin d’installer une application spécifique sur son ordinateur et il peut accéder à l’agrégateur online à l’aide d’un simple browser.

L’inconvénient majeur de cette approche est que l’utilisateur doit laisser ses noms d’utilisateur et ses mots de passe aux sociétés exploitantes du site d’agrégation et cela peut poser un risque de sécurité.

Un autre inconvénient de ce système intervient lorsque la société d’agrégation fait faillite, car il ne sera plus possible d’accéder à son agrégateur, puisqu’il aura été retiré du serveur.

Un exemple d’agrégation online est « Yodlee ». Beaucoup de sociétés utilisent cet agrégateur online qui stocke les informations d’accès aux comptes de ses clients pour diverses entreprises de services financiers et présente un résumé de l’état de ces comptes.
Agrégation offline
L’agrégation offline fonctionne avec un programme d’agrégation qui doit être installé sur l’ordinateur de l’utilisateur et qui fonctionne comme une application clientserveur conventionnelle.
L’avantage de cette approche est le contrôle du processus par l’utilisateur, car il est le seul à posséder ses mots de passe. De plus, il ne dépendra pas d’une société tierce.

Le désavantage de ce processus est que l’utilisateur doit installer le programme sur son ordinateur et qu’il ne pourra donc pas accéder à l’agrégateur simplement par le net.

Quicken est un exemple d’agrégation offline. Après l’avoir installé, il collecte les données des comptes de l’utilisateur et les stocke sur son ordinateur.
Weatherbot, un exemple de l’agrégation
Par cet exemple nous présenterons le mécanisme général d’un agrégateur.

Imaginons que pour une étude météorologique, nous ayons besoin de connaître la température journalière de la ville de New Delhi, le but étant de présenter sa courbe d’évolution sur un mois.

La première étape serait de trouver l’information sur un site météorologique tel que MétéoSuisse ( HYPERLINK "http://www.meteoswiss.ch" www.meteoswiss.ch). Une fois arrivé sur ce site, il suffit de se rendre sur la page « le_temps_outre_mer.html », située à l’URL ( HYPERLINK "http://www.meteoswiss.ch/web/fr/meteo/temps_actuel/le_temps_outre_mer.html" http://www.meteoswiss.ch/web/fr/meteo/temps_actuel/le_temps_outre_mer.html), qui fournit la température quotidienne de certains lieux des pays membres de l'OMM (Organisation Mondiale de Météorologie) dont la ville de New Delhi.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 4: Températures des villes dans le monde
Après avoir trouvé la page web contenant les données, nous pouvons planifier la programmation de l’agrégateur.

Pour que l’agrégateur atteigne cette page, nous avons besoin d’instancier un socket HTTP qui trouvera l’URL de la page. Une fois que la page est téléchargée, elle doit être parsée pour trouver, dans le corps du socket HTTP, la température désirée. Ainsi, grâce à une recherche de « New Delhi », nous pourrons trouver sa température.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 5: Code source de la page des températures

Les données du jour seront inscrites dans un fichier ou enregistrées dans une base de données. L’agrégateur répétera ce processus 24 heures plus tard et cela pendant 30 jours. Nous retrouvons ici le mécanisme automatisé du bot. Le diagramme suivant illustre ce processus.

Diag.  STYLEREF 1 \s 1 SEQ Diag. \* ARABIC \s 1 2: Diagramme d'activité de l'agrégateur

Dans la troisième partie de ce travail, nous présenterons un type particulier d’agrégateur (agrégateur de presse) que nous avons développé. Nous verrons également comment celui-ci peut être utilisé au sein d’un moteur de recherche personnalisé.
Mesures à prendre en considération
Dans ce chapitre, nous nous pencherons sur quelques éléments qu’il faut prendre en considération lors de l’utilisation des bots d’information. En effet, les bots agissant sur l’internet peuvent facilement causer des problèmes involontaires que nous détaillerons plus-bas.
Hummering
Lorsqu’un bot effectue un nombre conséquent de requêtes auprès d’un site source, il pourrait surcharger dramatiquement le serveur web. Ainsi, le serveur serait très occupé à répondre aux requêtes et pourrait être mis intentionnellement hors service. Ceci est nommé « Hummering ».

Notons que ce fait peut être réalisé d’une manière calculée. Dans ce cas ceci est considéré comme une attaque nommée « Denial of Service ». Ainsi, nous pouvons constater que les conséquences peuvent être sévères. Il est alors important de connaître des moyens pour éviter ce genre d’événements.

Il existe deux types de Hummering : isolé et distribué
Hummering isolé
Il se produit lorsqu’un bot effectue un nombre de requêtes auprès du même site et que les données à télécharger sont de volume important. Ceci est également produit si l’intervalle de temps fixé pour la répétition de la requête est trop petit ou si simplement le bot est multithread.

Hummering distribué
Lorsque le bot est invoqué dans un programme qui sera distribué à d’autres utilisateurs, on parle du Hummering distribué. Dans ce cas plusieurs bots, par opposition à un seul, chargeront la bande passante d’une manière plus conséquente.
Comment éviter le Hummering ?
Notons que le webmaster pourrait trouver l’adresse IP de la machine qui héberge le bot en traçant les requêtes. Ainsi, il peut prendre un nombre de mesures pour bloquer l’accès du bot à son site. Afin d’éviter cela, nous devons prendre certaines précautions.

Baisse de la fréquence des requêtes
La manière la plus intelligente serait la baisse de la fréquence des requêtes que le bot doit effectuer. Ainsi, avec une observation des mises à jour et des changements apportées aux sites sources, nous pouvons régler l’intervalle de temps du bot pour la répétition de la requête.

Coopération avec les webmasters
Une autre mesure à prendre en considération est de rendre le bot coopératif avec le site qu’il exploite. Ainsi, par une entente avec le webmaster du site, nous pouvons éviter certains problèmes et même obtenir certains avantages.

Respect des droits d’auteur
Il est important de noter que les informations que nous trouverons sur les sites sont protégées par les droits d’auteurs et la propriété intellectuelle. Nous avons mis en annexe de ce travail les principes de la protection juridique en vigueur.
Identification des bots
Les bots comme les navigateurs peuvent révéler leurs identités au serveur web auquel ils accèdent. Il existe des moyens différents pour un bot de s’identifier. Nous en présenterons quelques-uns.
Utilisation des Header HTTP
Un programme se connectant par HTTP à un serveur peut être identifiée à l’aide du « Header HTTP  User-Agent ». L’exemple suivant montre une requête formulée par un navigateur « Mozilla/4.0 ».

GET /heg/ HTTP/1.1
Host:  HYPERLINK "http://www.hesge.ch" www.hesge.ch
Connection: close
Accept-Encoding: gzip
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: fr-ch
User-Agent: Mozilla/4.0

Un bot pourrait donc aussi utiliser le header « User-Agent » pour s’identifier auprès d’un site cible. Maintenant, la question qui se pose est de savoir quel nom choisir.

Il est possible de rendre le bot virtuellement non repérable dans le trafic de l’utilisateur. Ainsi, le bot sera anonyme. Pour une identification anonyme, le bot doit reporter le nom d’un navigateur populaire (tel que Microsoft Internet Explorer) dans le champ de « User-Agent ».

L’anonymat peut s’avérer important pour la compatibilité avec les sites. Beaucoup de sites ont été personnalisés sur la base du header « User-Agent ». Ainsi, si ce header n’est pas reconnu par un site, un message sera affiché pour nous demander de mettre à jour le navigateur et ceci sera fatal pour un bot. Par exemple, le site « Yahoo! » dispose d’une version Macintosh différente de la version Windows.

Comme pour beaucoup de moteurs de recherche, nous pouvons donner un nom propre unique au bot. Par exemple, le spider de « Google » est appelé « Googlebot ».

Ce mode d’identification présente quelques désavantages. Certains « firewall » n’autorise pas l’accès aux ressources pour des agents inconnus. Ainsi, toutes les requêtes provenant du bot seront rejetées.

Notons que pour pouvoir conserver un nom unique sur l’Internet, il faut se construire une réputation. Entretemps pour éviter ces désavantages, nous pouvons utiliser une identification composée d’un nom unique et d’une identification anonyme. L’exemple suivant illustre ce mode d’identification.

User-Agent: Mozilla/4.0 (compatible; NomUniqueDuBot 1.0; Windows NT 5.1)
Actions du webmaster
Un webmaster peut mettre en place des mesures différentes pour contrarier le fonctionnement d’un bot. Il est donc nécessaire, pour un concepteur de bot, de connaître ces mesures.

Le fichier « d’exclusion de bot », appelé « robots.txt », permet à un webmaster de fournir une politique d’accès standardisée lors de visites des bots. Ce fichier est comme un signe de « défense d’entrer » à certains endroits d’un site.

Le fichier « robots.txt » contient des commandes précisant aux bots les pages qui peuvent ou ne peuvent pas être accédées. Ainsi, les bots commencent l'exploration d'un site web en cherchant le fichier « robots.txt » à la racine du site.

Les commendes sont composées de deux éléments :
User-Agent: permet de préciser le bot concerné par les directives suivantes.
Disallow: permet d'indiquer les pages à exclure de l’accès du bot.

Voici des exemples de fichier « robots.txt » :
Exclusion d'un robot :
User-Agent: NomDuBot
Disallow: /
Exclusion d'une page :
User-Agent: *
Disallow: /repertoire/chemin/page.html
Exclusion de toutes les pages d'un répertoire et ses sous-dossiers :
User-Agent: *
Disallow: /repertoire/

Notons que le webmaster dispose d’autres moyens pour contrarier un bot. Il peut par exemple effectuer une filtration par IP lorsqu’il constate un trafic important provenant de la même adresse IP. Il peut également prendre des actions légales s’il constate une violation des conditions générales d’utilisation du site.
Vers un partage standardisé de l’information
L’Internet permet à ses utilisateurs d’accéder à un univers virtuel de données. Ces données sont de formes très différentes et il n’existe pas encore un moyen uniforme d’y accéder. Il existe alors deux solutions pour résoudre ce problème. La première est donc la mise en fonction de bots tels que les agrégateurs pour traiter toutes les données conformément à un seul standard. La seconde solution est de standardiser toutes les données.

Dans un but de créer un standard pour l’énorme quantité d’information disponible sur l’Internet, certaines technologies telles que le SOAP (Simple Object Access Protocol) et le XML (Extensible Markup Language) ont vu le jour.

Ce standard permettrait aux webmasters de contrôler l’accès aux données par des programmes conçus en SOAP. Cela créerait un environnement plus coopératif que celui des bots.

Afin de clarifier le fonctionnement de ces technologies, nous examinerons, dans ce chapitre, le XML et nous verrons comment le SOAP utilise ce langage pour partager l’information d’une manière standardisée.
eXtensible Markup Language (XML)
Le SOAP se base sur le XML. Ainsi, pour comprendre le SOAP, il est nécessaire de comprendre le XML.
Qu’est-ce que le XML ?
Contrairement à un fichier dit « plat », un fichier XML possède une structure permettant de stocker les données d’une manière hiérarchique.

Les formes hiérarchiques de données peuvent être étendues sur plusieurs niveaux. L’unité basique d’un fichier XML est un « nœud ». Chaque nœud a ses propriétés telles qu’un nom et une valeur. Un nœud peut avoir plusieurs enfants ou ne pas en avoir du tout. Le nom permet simplement d’extraire le nœud et sa valeur qui est la donnée lui étant associée.

La valeur

Valeur 1
Valeur 2


Le code suivant illustre un exemple de fichier XML.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 6: Exemple du code d'un fichier XML

Souvent, les programmes qui stockent des données sont au format binaire. Ces données ne sont alors accessibles que par d’autres programmes qui comprennent le format dans lequel elles sont stockées.

Le XML est un standard ouvert qui peut être utilisé librement. Il a été développé de sorte qu’il englobe un ensemble de règles de formatage universel. Ainsi, les fichiers XML sont toujours des fichiers de texte et donc lisibles par les êtres humains. Cela a été rendu possible car le fichier XML est seulement composé de caractères ASCII.

Puisque les fichiers XML sont des fichiers de textes, les programmeurs peuvent utiliser un simple éditeur de texte pour les ouvrir et donc débugger plus facilement les applications utilisant ce langage.

A première vue, un fichier XML est très similaire à un fichier HTML. Les deux langages utilisent des balises et des attributs. Cependant, contrairement au HTML, les balises utilisées par le XML ne sont pas prédéfinies. Le programmeur peut donc définir à sa guise le nom des balises. Ainsi, leur interprétation est entièrement déléguée aux programmes qui les lisent.
XML et les bots d’information
Pour les programmeurs de bots, le XML est une technologie appropriée. En effet, la tâche la plus difficile est de collecter les données désirées depuis les pages HTML d’un site. Le XML apporte un standard aux données ce qui rend plus facile le travail de « parsing » du bot. Bien sûr, pour profiter des avantages du XML, le site doit supporter ce langage.
Notons que le XML est uniquement une forme de données encodée. Il ne spécifie donc pas comment les données peuvent être transférées. Un message XML a besoin d’autres technologies qui l’expédient de sa source à sa destination.

Pour démontrer un de ces cas, nous avons développé un agrégateur qui sera décrit dans la troisième partie de ce travail. Ici, nous présenterons le SOAP qui est le système prédominant de transmission de messages XML.
Simple Object Access Protocol (SOAP)
Le SOAP est un protocole léger basé sur le XML. Il est utilisé pour l’échange d’informations. Ce protocole est conçu pour les environnements décentralisés et distribués. Le fournisseur d’un service SOAP et le programme client peuvent être sur deux machines différentes. Le SOAP est dit « distribué » puisque plusieurs machines peuvent fournir le même service. Cela permet à ces machines de maximiser la performance en apportant l’équilibre dans le chargement des requêtes.

Un message SOAP est composé de trois parties principales :

Enveloppe de SOAP (SOAP-ENV : Envelope)
Il contient une adresse qui spécifie le serveur cible du message. Il contient également une adresse de retour qui spécifie où le serveur doit envoyer ses réponses.

Règles encodées (SOAP-ENV : encodingStyle)
Les règles spécifient la version du SOAP et définissent comment les différents composants du message sont présentés.

Méthodes d’appel (SOAP-ENV : Body XML tag)
Elles déterminent les méthodes que le serveur doit exécuter.
Comment le SOAP transfère les données ?
Les messages SOAP sont de nature unidirectionnelle d’un expéditeur à un récepteur. La requête est envoyée d’un client à un serveur. La réponse du serveur est asynchrone et peut prendre un temps considérable avant d’être envoyée.

Le SOAP peut être utilisé avec différents protocoles. Les messages SOAP utilisent souvent le HTTP mais ils peuvent être aussi transférés avec le SMTP (Simple Mail Transfer Protocol). En utilisant ce protocole, les messages SOAP seront « mailés » au serveur et la réponse du serveur sera, à son tour, mailée au programme client.

Le SOAP spécifie la structure des messages XML et permet d’appeler des méthodes qui devront être exécutées par le serveur. Mais comment peut-on connaître le nom de ces méthodes ? Pour appeler la bonne méthode, on aura besoin d’un fichier définissant les services qui sont fournis par un web service. Web Service Definition Language (WSDL) répond à ce besoin. Tous les services SOAP doivent avoir un fichier WSDL qui défini la structure protocolaire du modèle de communication.
Exemple du SOAP
Ici, nous examinons le corps d’un simple exemple du SOAP en passant par HTTP. Cet exemple transmet une requête SOAP « GetCurrentTemperature » à un service fournissant des températures courantes pour des lieux différents.

Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 7: Exemple d'une requête SOAP

La partie SOAP-ENV:Body contient la méthode d’appel de GetCurrentTemperature qui est suivie par son paramètre contenu dans la balise City déterminant le lieu désiré. Notons que l’adresse de retour est représentée par "Some-URI". L’URI (Uniform Resource Identifier) correspond à une URL lorsque le HTTP est utilisé. Dans le cas de SMTP, l’URI spécifie une adresse e-mail.

Le serveur exécute la méthode GetCurrentTemperature et renvoie la température du lieu.


Figure  STYLEREF 1 \s 1 SEQ Figure \* ARABIC \s 1 8: Exemple d'une réponse du serveur SOAP

Ainsi, nous pouvons voir que pour effectuer une requête, nous avons besoin de connaître l’adresse du serveur SOAP, le nom de la méthode et ses paramètres ainsi que le type de données qui sera renvoyé par le serveur.

SOAP et les bots d’information
Les bots d’information et le SOAP sont très proches puisque les deux sont conçus pour extraire l’information en utilisant le HTTP. La différence entre un bot d’information et une application SOAP est que cette dernière reçoit les données d’une manière propre et d’une forme bien définie. Le bot doit, en revanche, extraire les données dans des formats variés. Si tous les sites de l’Internet supportaient le SOAP, les bots d’information que nous avons présentés dans ce travail, pourraient être remplacés par des applications SOAP.

Malgré le fait que le SOAP représente un moyen facile d’échange d’information, on est loin du jour où tous les sites supporteront cette technologie. Et cela parce qu’il existe, d’une part, d’énormes quantités d’informations informelles sur l’Internet, et d’autre part, le coût de standardisation de ces données s’avèrerait élevé pour ces sites.

Le passage des sites sous forme traditionnelle HTML au SOAP demande une restructuration complète par des programmeurs compétents. De ce fait, nous pouvons envisager, pour un futur proche, des applications qui utiliseraient, au sein du même système, la technologie des bots et celle du SOAP. Ainsi, dans le cas où un site ne supporterait pas le SAOP, les bots feraient leur travail de recherche d’information.

Bots malveillants
De nos jours, les bots sont également devenus des outils de malfaisance très répandus sur la toile. Ces outils sont utilisés par certaines personnes, dites attaquants ou crackers, dans des domaines variés. Pour cela ils ont différents moyens d’action principalement basés sur l’infection des ordinateurs privés.

Dans ce chapitre nous allons prendre connaissance des vulnérabilités dues à la nature des systèmes d’exploitation et nous verrons comment les bots peuvent être nuisibles aux usagers de l’Internet.
Mise en réseau de bots dans un but malveillant
Les bots malveillants les plus communs sont ceux qui s'installent discrètement sur les ordinateurs personnels et servent d’outils d’attaque à distance.

Un botnet est un réseau de machines infectées par des bots qui peuvent être commandés à distance par leur maître qui pourra avoir des attentions malveillantes. Dans ce cas il s’appellera un « attaquant ».

En raison du nombre de machines infectées pouvant être mises en réseau (des dizaines de milliers de systèmes peuvent être liées ensemble), les botnets constituent une menace grave à la communauté des internautes.

Les PC (Personal Computers) sont la cible préférée des attaquants. La majeure partie de ces machines utilise Microsoft Windows comme système d’exploitation. Les attaques se produisent principalement dans le cas où ce dernier n’est pas correctement mis à jour et protégé par un pare-feu (firewall) et reste, ainsi, vulnérable à l'attaque.

En plus de ces attaques directes, d’autres se font indirectement. Celles-ci visent à agir de façon néfaste sur les programmes utilisés par la victime. Les exemples de ces attaques indirectes incluent des fichiers HTML qui exploitent des vulnérabilités d’Internet Explorer de Microsoft ou des attaques par utilisation des programmes malveillants sur des réseaux de point à point (Peer-to-Peer). Les machines qui bénéficient d’une large bande passante et qui sont connectées en permanence constituent une cible préférable pour des attaquants. Ainsi, au fur et à mesure que les bandes passantes augmentent, le nombre de victimes potentielles augmente aussi.

Avec des techniques automatisées, les crackers scannent les catégories spécifiques de réseau sur l’Internet, cherchant les systèmes vulnérables avec des faiblesses connues. Les attaquants ciblent souvent des réseaux dont la classe d’adresse est de catégorie B ou des réseaux de plus petites plages d’adresses.

Une fois que ces attaquants ont compromis une machine, ils y installent un prétendu bot IRC. Le bot joint un canal spécifique sur un serveur IRC et attend d'autres commandes. Ceci permet à un attaquant de commander à distance le bot et de l'employer pour en tirer divers profits ou un moyen de divertissement.

Le protocole IRC n'est pas la meilleure solution puisque la communication entre les bots et leurs contrôleurs est plutôt lourde et un protocole de transmission plus simple suffirait. Mais l'IRC offre plusieurs avantages : les serveurs sont librement disponibles et sont faciles à installer, et beaucoup d'attaquants ont des années d'expérience de communication IRC.
Les botnets sont souvent utilisés pour le vol d'informations ou d'identité. Ainsi, ces bots seront à la recherche de quelques milliers de mots de passe ou d’autres informations bénéfiques à l’attaquant.

Le mécanisme de propagation s’appuie sur la vulnérabilité de certains ports de système d’exploitation de Windows de Microsoft. Les ports les plus attaqués sont les ports utilisés pour le partage de ressources. Ainsi le flux sur les quatre ports décrits ci-dessous correspond à 80 % des flux recensés.

Le port 445/TCP (Microsoft-D Service) est employé pour partager des ressources sur des machines qui utilisent les plateformes Windows 2000, XP ou 2003.

Le port 139/TCP (NetBIOS Session Service) est employé pour partager des ressources sur des machines qui utilisent les plateformes Windows 9x, MOI et NT.

Le port 137/UDP (NetBIOS Name Service) est employé par des ordinateurs qui utilisent les plateformes Windows afin de trouver des informations concernant les capacités de réseaux par un autre ordinateur, informations telles que le nom du système et le nombre de dossiers partagés.

Le port 135/TCP est employé par Microsoft pour mettre en application des services du Remote Procedure Call (RPC). Un tel service de RPC est un protocole qui permet à un programme d’une machine d’être exécuté sur un autre ordinateur.
Utilisations des bots malveillants
Le projet « Honeynet » classifie les bots malveillants en 10 catégories :

Distributed Denial-of-Service Attacks
Très souvent, les botnets sont employés pour des attaques Distributed Denial-of-Service (DDoS). Il s’agit d’une attaque de réseau qui cause principalement une perte du service aux utilisateurs, typiquement la perte de la connexion au réseau. Ces attaques peuvent également surcharger la bande passante. L’implémentation la plus courante et leurs utilisations consistent à des attaques de masse de TCP, SYN et UDP.

Par exemple, un botnet relativement petit utilisant seulement 1000 bots, peut occuper beaucoup de bande passante. Ces 1000 bots ont une bande passante combinée (1000 PCS avec une moyenne de flux montant de 128KBit/s peuvent offrir plus que 100MBit/s). Ce qui est probablement plus haut que le raccordement à l’Internet de la plupart des systèmes en entreprise. En outre, la distribution d'IP des bots rend difficiles le filtrage, la maintenance et le déploiement.

Les DDoS sont aussi employés à des fins commerciales et utilisées contre des entreprises concurrentes.

Un autre exemple d’utilisation des DDoS sont les HTTP-Flood récursifs. À partir d'un lien donné HTTP, le bot déclenche automatiquement l’ouverture de nouveaux liens sur le site de manière récursive. Ceci s'appelle le « Spidering ».

Spamming
Quelques bots offrent la possibilité d’ouvrir SOCKS v4/v5 proxy qui est un protocole générique de proxy pour les applications de gestion de réseau basé sur TCP/IP. Une fois la machine infectée, elle peut être utilisée comme source de spamming.

Ainsi avec l'aide d'un botnet un attaquant peut envoyer des quantités massives d'email en vrac (Spam) en utilisant les adresses email des machines infectées.

Sniffing Traffic
Les bots peuvent être utilisés pour observer des données de texte via une machine infectée, principalement des noms d’utilisateur et des mots de passe.

Keylogging
Le keylogging repose sur la mémorisation des touches utilisées. Le bot permet de transmettre la valeur des touches à l’attaquant. Avec l'aide d'un keylogger il est donc très facile pour un attaquant de rechercher l'information sensible. Un mécanisme de filtrage mis en application, aide aussi à extraire les données secrètes volées.

Spreading New Malware
Les botnets peuvent être utilisés pour la propagation de nouveaux bots. Ils mettent en marche des mécanismes qui permettent le téléchargement et l’exécution d’un fichier via HTTP ou FTP.

Installing Advertisement Addons
Les bots peuvent également être employés pour saisir des opportunités financières. Cela serait possible grâce à un faux site web. Le créateur du site négocie avec des entreprises intéressées par des bandes publicitaires de sorte que pour chaque click sur la bande, il touchera une certaine somme.

Les bots permettent d’automatiser ces clics et d’augmenter le bénéfice.

Google AdSense abuse
Google Adsense permet aux entreprises de mettre des publicités Google sur leur propre site et ainsi de gagner de l’argent. Pour chaque clic sur ces publicités Google paie une certaine somme à ces entreprises.

Les bots permettent d’automatiser les clics et de ce fait d’augmenter le nombre de clics artificiellement.

Attacking IRC Chat Networks
Les botnets sont également employés pour des attaques contre des réseaux IRC. L’attaquant donne l’ordre aux milliers de bots de se connecter au réseau IRC et demande des services différents. Ainsi, les bots augmentent le flux d’informations et saturent le réseau.

Manipulating online polls/games
Polls/Games se retrouve principalement sur des sites de jeu. La manipulation se produit ainsi : une question est posée au joueur. Par exemple : « Voulez-vous continuer la partie ? ». En répondant « Oui » le joueur répond en fait à une autre question et est reconduit sur d’autres liens.

Mass Identity Theft
Souvent, la combinaison des différentes fonctionnalités décrites ci-dessus peut être employée pour le vol d'identité à grande échelle, un évènement qui prend de l’ampleur aujourd’hui.

Les faux emails, qui se font passer pour des organismes légitimes, demandent à leurs victimes de soumettre leurs identités personnelles et bancaires. Ces faux emails sont produits et envoyés par des bots via leur mécanisme de Spamming.

Autres bots
Dans les chapitres précédents, nous avons montré des exemples divers de bots. Nous avons vu également qu’ils sont des outils efficaces pour la communication et la recherche d’information, certains agissant à la frontière entre les deux.

Malgré l’utilisation de cet agent, parfois dans un but malveillant, son champ d’application s’élargit de plus en plus avec l’évolution de la technologie. Nous fermons ce chapitre en présentant un ensemble de ces bots.

Data Mining
Data Mining s’emploie en marketing dans le but d’analyser les données collectées sur les habitudes des consommateurs.

Ces dernières années, le bot est devenu un outil efficace dans ce domaine. Beaucoup d’entreprises les utilisent pour mieux cibler leurs clients sur le net. Le bot collecte des données sur le client, lors de sa visite sur le site de l’entreprise. Ce dernier prend connaissance des besoins de l’utilisateur. Ainsi, l’entreprise utilise ces informations pour mieux répondre aux besoins de ses clients.

Par exemple, lorsqu’un client d’Amazon effectue des recherches sur son site, les données relatives à cette recherche seront enregistrées dans une base de données. Ainsi lors de la future visite de ce même client, il sera surpris de voir sur le site un ensemble de produits qui pourrait l’intéresser sans qu’il l’ait demandé.

Agents financiers
Un autre exemple d’utilisation, employer les bots pour interagir dynamiquement avec un site d'une manière particulière en exploitant ou en localisant des opportunités financières comme sur les cours de la bourse.

Il y a eu beaucoup de polémique au sujet de l'utilisation des bots dans une fonction marchande automatisée par eBay qui souhaitait supprimer un tiers des employés spécialisés dans la recherche d’opportunités financières au profit des bots.

Synthèse vocale
Les bots peuvent être utilisés pour le synthétiseur vocal. C’est une technique de synthèse sonore qui vise à créer des paroles artificiellement par un système de traitement du signal. Ainsi, il sera, par exemple, possible de concevoir des moteurs de recherche pour les non voyants.

Artificial Life
Les bots sont aussi utilisés dans ce qu’on appelle « le monde virtuel ». Dans ce monde nous côtoyons d’autres personnes la plupart du temps provenant des mondes de « rencontre » et de jeux en ligne.

Le monde virtuel est hébergé sur un serveur et, grâce au bot, les changements qu’il subit lui seront appliqués au fur et à mesure. Ainsi, le monde virtuel serait constant et persistant. Cela signifie qu’il continue à évoluer indépendamment du fait que des « personnes » y soient présentes ou non.
Web sémantique au service de Spider
Concept de Spider sémantique
Comme nous avons vu précédemment, le Spider peut servir à l’indexation de moteurs de recherche. Dans cette partie, nous allons définir une nouvelle architecture du Spider pour tenter d’améliorer les recherches. Pour se faire, nous allons appliquer le mécanisme d’une des méthodes de la web sémantique au fonctionnement du Spider.

Pour commencer, nous présenterons les principales familles des outils de recherche actuels. Nous pourrons ainsi savoir à quel niveau et pour quel outil cette amélioration serait possible. Ensuite, nous examinerons une des méthodes de la web sémantique. Pour finir, nous exposerons la nouvelle architecture du « Spider semantic ».
Principales familles d’outils de recherche
On peut classer ces outils de recherche en trois familles : Annuaires, Moteurs de recherche et Métamoteurs.
Annuaires
Les annuaires sont les premiers outils de recherche sur l’Internet. Un annuaire est une collection généraliste ou spécialisée de sites web. Cette collection est organisée hiérarchiquement selon différentes catégories.

Contrairement aux moteurs de recherche et aux métamoteurs dont le fonctionnement est entièrement automatisé, pour les annuaires, la validation et l’indexation se fait par des hommes. Ainsi, ils offrent un niveau de précision plus élevé et une meilleure qualité.

Cependant, on constate que l’utilisation des annuaires par des internautes est de moins en moins fréquente. Pour expliquer cela, on peut avancer deux raisons. La première raison résiderait dans le changement des préférences des internautes pour un accès direct à l’information. La seconde s’expliquerait par le coût très élevé de la maintenance des annuaires dû au manque d’un mécanisme automatisé. Ainsi de nombreux annuaires ont disparu ou, comme Yahoo!, ont préféré devenir un moteur de recherche.

D’autres encore s’orientent vers la constitution de « chaines thématiques ». Ainsi, on renvoie à du contenu (actualités, articles, pages web) et non à des sites pour répondre aux requêtes les plus fréquentes des internautes. Suivant cette orientation, on peut nommer des portails thématiques comme « la porte du droit » pour le droit ou comme « culture » pour les rubriques culturelles.

Les répertoires spécialisés ont également suivi cette orientation pour mettre à disposition des utilisateurs des sites d’un secteur ou d’un domaine particulier. Par exemple, dans le domaine des statistiques, le site « statistics » met à disposition de l’usager des liens vers des sites dans le monde entier et propose une collection d’outils pour les étudiants et les enseignants.


Figure  STYLEREF 1 \s 2 SEQ Figure \* ARABIC \s 1 1: Page d'accueil de culture.fr
Moteurs de recherches
Par opposition aux annuaires qui recensent des sites, les moteurs de recherche sont des outils automatiques qui collectent et indexent un grand nombre de pages web. Un moteur de recherche se constitue de plusieurs éléments :

Robot d’exploitation
Celui-ci est connu sous le nom de Spider. Ce dernier est chargé de collecter le contenu d’un grand nombre de pages web et de les stocker dans une base de données. Cette base est constituée de champs qui contiennent le texte de la page, son titre, son adresse URL ainsi que d’autres données collectées.

Indexation automatique
Au fur et à mesure que le Spider explore les pages, celui-ci construit un index à partir des mots significatifs de leur texte et l’insère dans la base de données. Selon comment ces mots significatifs sont définis, l’indexation varie d’un moteur de recherche à l’autre. D’une manière générale, tous les mots du texte de la page web sont indexés et ceci sans un traitement de leur sens.

Interrogation de l’index
La requête de l’utilisateur est formulée par un ou plusieurs mots clés et lancée sur l’index du moteur de recherche. Ce dernier répond par l’affichage des liens hypertextes vers les pages contenant les mots.

Le Spider commence par explorer la page d’accueil des sites dont l’adresse URL leur a été soumise au préalable. Ensuite, il suit les liens internes et externes à partir de la page d’accueil. Ainsi, il collecte un nombre important de pages. C’est de cette manière que le Spider peut découvrir de nouvelles pages web.

L’illustration suivante montre comment un Spider d’un moteur de recherche classique voit le site de «  HYPERLINK "http://www.google.com" www.google.com ».


Figure  STYLEREF 1 \s 2 SEQ Figure \* ARABIC \s 1 2: Spider Simulator à la découverte de google.com
Le temps nécessaire pour la mise à jour de l’index dépend du volume des pages indexées et peut varier allant d’un jour à plusieurs semaines. Ainsi, il est possible que certaines pages ne soient plus disponibles sur le net dans l’intervalle de la mise à jour de l’index. C’est pour cette raison que parfois nous verrons le message d’erreur « Error 404, not found ».

Afin de diminuer ce genre d’erreurs, les moteurs de recherche s’orientent de plus en plus vers une mise à jour en deux temps. Dans un premier temps, sur la base des statistiques collectées par le moteur, on privilégie la mise à jour des sites les plus populaires. Dans un deuxième temps, les sites restants seront mis à jour.
Algorithmes de classement
Les moteurs de recherche classiques utilisent différents algorithmes pour classer leurs résultats de recherche. L’ordre d’affichage des résultats est lié directement aux algorithmes utilisés par les moteurs de recherche. Ainsi, ils sont conçus de manière à obtenir le meilleur score pour afficher les pages les plus susceptibles de répondre à la requête.

Les algorithmes varient, d’une part, en fonction de la position de chaque mot dans la requête et, de l’autre, en fonction d’autres termes orthographiquement et phonétiquement similaires à ceux présents dans la requête.

De plus, le comportement des moteurs de recherche va aussi dépendre de la pondération affectée aux critères suivants :
Le nombre d’occurrences d’un mot au sein d’une page pour une requête ;
La présence dans le titre de la page ;
L’exergue du texte (gras, souligné, etc.) ;
La présence dans les méta-tags tels que les « keywords » ou la « description » ;
La présence dans l’URL de la page ;
La ressemblance aux mots clés dans la page ;

Enfin, les mots rares dans une requête ont une pondération plus importante que les mots communs et les pages les plus cliquées pour une même requête sont privilégiées dans l’ordre d’affichage du résultat.
Métamoteurs
Les métamoteurs interrogent simultanément la base de données de plusieurs moteurs de recherche. Ainsi, ils ne maintiennent pas de base de données. Les résultats de la recherche seront présentés parfois en calculant un nouveau tri de pertinence ainsi qu’en éliminant les éventuels doublons. Notons que les métamoteurs ne traduisent pas toujours les langages d’interrogation (par exemple les caractères + et - sont laissés tels quels) et se contentent de déléguer ce travail aux moteurs de recherche qu’ils interrogent.

Les métamoteurs s’évaluent selon des critères différents, tels que : les sources d’interrogation, les options de paramétrage et la manière de présenter les résultats ainsi que les algorithmes de pondération.

Les métamoteurs sont divisés en deux grandes familles :
Les métamoteurs « on line »
Ce sont des métamoteurs directement accessibles sur le web. « Polymeta » qui fait partie de cette famille affiche les résultats de recherche sous forme de clusters.

Les métamoteurs « clients » basés sur le même principe de fonctionnement, sont des logiciels enrichis de plus de fonctionnalités dont le regroupement des catégories de recherche, le filtrage des résultats, l’intégration d’un agent d’alerte et l’automatisation des requêtes récurrentes.

Le métamoteur « Copernic Agent » est un exemple de cette famille et est illustré ci-dessous.


Figure  STYLEREF 1 \s 2 SEQ Figure \* ARABIC \s 1 3: Métamoteur Copernic

Web sémantique
La recherche d’information sur l’Internet signifie l’accès à des ressources multiples, hétérogènes et fragmentées. De plus, les données existantes sont susceptibles d’être modifiées ou supprimées et d’autres sources d’information peuvent apparaître sur le net. Dans ce contexte, une question se pose : comment trouver l’information d’une manière plus efficiente ?

Il est évident que les moteurs de recherche classiques facilitent beaucoup la tâche. Cependant, la précision et la pertinence des résultats sont relativement faibles. Ainsi, un agent intelligent du web peut grandement améliorer le système de recherche.
Processus d’indexation
Dans ce chapitre nous allons examiner le processus d’indexation des pages web dans une optique d’ontologie orientée terminologie. L’objectif principal est donc, de construire un index structuré des pages web qui serait en concordance avec une ontologie. Notons que ce processus est basé sur une idée des chercheurs du domaine de la web sémantique E. Desmontils et C. Jacquin.

L’ontologie est un terme philosophique qui est défini comme « les explications systématiques de l’existence ». Cette définition varie selon son application. Ainsi, dans notre contexte, l’ontologie fournit le vocabulaire commun d’un domaine spécifique et définit, plus ou moins formellement, la signification des termes et leurs relations entre eux.

Notons que le mot « concept » est désigné dans ce chapitre pour définir le sens qui découle du contenu de l’information analysée et l’expression « concept candidat » définit un des sens possible que peut avoir la page.

Dans ce cas, l’ontologie est un ensemble de concepts dont chacun est représenté par un terme et un ensemble de synonymes de ce terme ainsi qu’un ensemble de relations spécifiques qui relient ces concepts. Nous assistons ainsi à une hiérarchie des concepts.

Ce processus d’indexation peut être divisé en quatre étapes :

Pour chaque page, un index est construit. Chaque terme de cet index est associé à sa « valeur de fréquence ». Ce coefficient dépend de chaque balise HTML qui décrit chaque occurrence du terme.

Un « thésaurus » sera utilisé pour déterminer tous les concepts candidats qui peuvent être étiquetés par un terme (situé dans l’index).

Chaque concept candidat d’une page sera étudié afin de déterminer la représentativité du contenu de cette page. Cette évaluation est basée sur sa valeur de fréquence ainsi que sur les relations avec les autres concepts. Le but est de choisir le meilleur sens ou concept d’un terme en relation avec le contexte. Notons que plus la relation d’un concept avec d’autres au sein de la même page est forte, plus il est significatif dans cette page. Donc la relation contextuelle minimise le rôle de la valeur de fréquence, même si cette dernière est très élevée.

Un filtrage des concepts candidats sera produit. Ce filtrage est basé sur leur représentativité, ainsi que sur l’ontologie. Un concept sélectionné serait un candidat qui appartient à cette dernière et qui a une représentativité élevée. Les pages qui contiennent un tel concept seront liées par l’ontologie.

Ce processus permet à l’utilisateur d’avoir une vue globale d’un site web sans qu’il soit nécessairement son propriétaire. Ce processus étant semi-automatique, il demande des ajustements par l’utilisateur pour obtenir des résultats encore plus précis. Comparé à une approche d’annotation, ce processus d’indexation améliore le système de recherche. Ainsi, il permet un accès direct aux pages web d’un concept, par opposition à une approche d’annotation qui demande le parcours de toutes les pages d’un site web pour trouver la même information.
Construction de l’index
C’est une étape importante du processus d’indexation et de l’évaluation d’un concept dans une page HTML. La construction d’index peut être divisée en deux activités essentielles : (i) l’extraction des termes de pages web et les calculs de la valeur de fréquence puis (ii) la détermination des concepts candidats par le calcul de leur représentativité.
L’extraction des termes
L’extraction des termes bien formulés est elle-même divisée en trois activités :
Suppression des balises HTML
Division du texte par des phrases indépendantes
Regroupement des mots liés de la page sous un mot-souche

Les mots de chaque phrase seront inscrits dans leur catégorie grammaticale correspondante (nom, adjectif) et la structure des phrases sera analysée selon des patterns de terme (nom, nom + nom, nom + adjectif) afin de fournir des termes bien formulés.

Pour chaque terme sélectionné, nous calculons sa valeur de fréquence. Cette dernière comprend la fréquence de chaque terme et en particulier les balises HTML qui sont liées à chacune de ses occurrences. Ainsi chaque type de balise influence différemment la valeur de fréquence. Par exemple la balise « TITLE » donne une importance considérable au terme.

Le tableau suivant illustre les coefficients attribués à certaines balises.

Description des balises HTMLBalises HTMLCoefficientTitre du document10Mots clés9Lien hypertexte8La taille de la police 75La taille de la police 64La taille de la police 53L'entête niveau 13L'entête niveau 23Le titre de l'image2Souligné2Italique2Gras2………Tableau  STYLEREF 1 \s 21: Coefficients des balises HTML

Dans une page qui contient n différents termes, le Ti (avec i EMBED Equation.3 ) désigne un terme donné. Soit la F(Ti) la valeur de fréquence. Celle-ci se calcule par la somme des coefficients P de balises HTML. Le résultat sera ensuite normalisé.
 EMBED Equation.3 

 EMBED Equation.3 
et  EMBED Equation.3  correspond au coefficient de la balise HTML de la jème occurrence du Ti.

Figure  STYLEREF 1 \s 2 SEQ Figure \* ARABIC \s 1 4: Donnée de l'exercice sur la web sémantique

Le tableau ci-dessous illustre le calcul de la valeur de référence à la page HTML « page_sematique.html ».

TermeOccurrencesCoefficientsSomme des coefficientsValeur de fréquenceSémantique4{10, 9, 3, 2}241Web3{10, 9, 3}220.92Définition1{3}30.125……………Tableau  STYLEREF 1 \s 2 SEQ Tableau \* ARABIC \s 1 1: Résultat de l'exercice sur la web sémantique

La détermination des concepts d’une page web
Selon G. A. Miller, pendant le processus de l’extraction, les termes bien formulés sont extraits et leurs valeurs de fréquence sont calculées. Ainsi, les termes bien formulés de formes différentes seront représentés par un concept particulier.

Afin de déterminer un ensemble de concepts, un thésaurus tel que Wordnet sera utilisé. A partir de chaque terme extrait, tous les concepts candidats (tous les sens) seront générés. Dans le thésaurus, un sens sera représenté par une liste de synonymes. Ainsi, pour chaque concept candidat, la représentativité sera calculée selon la valeur de fréquence et la similarité cumulative du concept avec les autres concepts de la page.

Le calcul de la similarité permet d’évaluer la distance entre deux concepts. Cette mesure est définie relativement à un thésaurus et les relations hyperonymes. Par exemple, le mot « église » a deux hyperonymes : « bâtiment » et « lieu sacré ». Ces deux termes n’entretiennent pas de relations hiérarchiques l’un par rapport à l’autre car par « bâtiment » on entend « maison » (qui n’est pas un lieu sacré) et « lieu sacré » inclut « cimetière » qui n’est pas un « bâtiment ».
Pour calculer la similarité entre deux concepts, nous nous basons sur la proposition de Z. Wu et M. Palmer. Cette proposition est basée sur la distance d’arrêts. En effet, ils proposent de prendre en compte le plus spécifique subsumant (nœud) qui domine les deux concepts. Rappelons que dans un thésaurus, à partir d’un sens le plus commun d’un terme, la relation d'hyperonymie définit un arbre de concepts de plus en plus généraux.

Un arbre est aussi une structure de données dans lequel les feuilles sont des éléments ne possédant pas de fils. Les nœuds sont des éléments possédant des fils (sousbranches). La racine est le nœud ne possédant pas de parent. La profondeur est le nème nœud à partir de la racine.

Ainsi, en normalisant le plus spécifique subsumant qui caractérise les éléments communs des deux concepts, leur différence sera prise en compte. Le calcul de la similarité se fait avec la formule suivante où C est le subsumant le plus spécifique de C1 et C2. La  EMBED Equation.3  est le nombre d’arrêts depuis le concept C jusqu’à la racine de la taxonomie et la  EMBED Equation.3  (avec i EMBED Equation.3 ) est le nombre d’arrêts depuis le concept Ci jusqu’à la racine de la taxonomie en passant par C.

 EMBED Equation.3 



Figure  STYLEREF 1 \s 2 SEQ Figure \* ARABIC \s 1 5: Calcul de la similarité pour Doctor et Nurse

Pour calculer l’importance relative d’un concept dans une page, nous définissons sa similarité cumulative. Celle-ci est la somme de toutes les valeurs de similarité entre ce concept et tous les autres concepts d’une même page. Dans ce calcul, un concept spécifique est unifié avec l’ensemble de ses synonymes (synset) dans WordNet.
Dans la formule suivante, la similarité cumulative est notée par  EMBED Equation.3 . lk définit les ensembles de synonymes associés à un terme Tk des m termes de la page.
Notons que  EMBED Equation.3  est normalisé.

 EMBED Equation.3 

Pour finir, la représentativité d’un concept dans un document est déterminée par le coefficient de la représentativité. Ce coefficient est une combinaison linéaire de la valeur de fréquence et de la similarité cumulative d’un concept. Ainsi, ce coefficient est l’élément principal pour qualifier la réponse à une requête.

 EMBED Equation.3 
Processus d’évaluation
A ce stade du processus, nous avons d’une part, une ontologie orientée terminologie et d’autre part, les concepts candidats avec leur représentativité. Dans l’étape suivante, les concepts candidats seront assortis avec les concepts de l’ontologie. Si un concept d’une page est une ontologie, l’URL de la page et sa représentativité seront ajoutées à l’ontologie.

Afin d’évaluer l’appropriation d’une ontologie dans un ensemble de pages HTML, cinq coefficients seront calculés :

DID (Direct Indexing Degree) : le taux des concepts directement impliqués dans la page HTML ;
IID (Indirect Indexing Degree) : le taux des concepts indirectement impliqués dans la page HTML (calculé par la relation spécifique ou générique) ;
OCD (Ontology Cover Degree) : le taux des pages concernées par les concepts d’ontologie ;
MRC (Mean of the Representativeness of candidate Concepts) : le moyen de la représentativité des concepts candidats ;
OSAD (Ontologie-Site Adequacy Degree) : ce coefficient sera la somme linéaire de chaque moyen des autres coefficients.

Ainsi, le processus d’évaluation nous permettrait de déterminer l’adéquation des pages HTML d’un site. Cette adéquation pourrait être exprimée par un flux XML ou dans une base de données. Les pages HTML liées à un concept (sens) seraient listées et cette liaison serait exprimée par la valeur de fréquence et la représentativité du concept au sein de la page.
Exploitation de l’approche pour les requêtes
La plupart des moteurs de recherche utilisent des simples mots clés pour l’indexation des pages web. Dans ce processus, les requêtes sont constituées d’une liste de mots clés reliés par des opérateurs logiques (AND, OR, XOR, …).

L’ontologie orientée terminologie et l’index structuré permettent d’améliorer le processus du traitement de la requête. Ainsi, les requêtes sont traitées à deux niveaux : terminologie et concept. Cette approche permet plusieurs améliorations :

La requête de l’utilisateur s’étend et les termes se transforment en concepts ;
Les opérateurs logiques fournissent une sémantique plus riche que de simples mots clés ;
Les réponses aux requêtes sont plus convenables

Dans cette approche, les termes sont remplacés par leurs concepts (sens) associés. En premier lieu, les concepts candidats sont sélectionnés dans l’ontologie. Les autres concepts de la requête et les opérateurs logiques seront étudiés. Finalement, si un terme est associé avec plusieurs concepts candidats, l’assistance de l’utilisateur sera demandée. Si l’ensemble des termes d’une requête n’est associé à aucun concept à la fin du processus, les termes seront déclarés non pertinents pour le site.

Enfin, par rapport aux méthodes d’indexation traditionnelles qui sont basées soit sur la recherche des mots clés, soit sur les méthodes d’annotation, ce processus présente plusieurs avantages :

Les pages sélectionnées contiennent les concepts demandés et non pas seulement les mots clés ;
Les concepts sont représentatifs des sujets traités dans la page sélectionnée ;
Les termes qui sont responsables de la sélection de la page ne sont pas toujours ceux de la requête mais ils peuvent être synonymes ;
Les pages sélectionnées contiendront les concepts demandés et les concepts plus spécifiques ;
L’importance d’un concept ne dépend pas seulement de la fréquence de ces termes mais également des balises HTML qui le décrivent et les relations avec d’autres concepts de la page.

Intégration de la web sémantique au Spider
Sur la base des trois familles d’outils de recherche que nous avons présentées dans cette partie, nous constatons que pour les annuaires, l’indexation est manuelle et en ce qui concerne les métamoteurs, ceux-ci ne maintiennent pas de base de données.

Nous avons remarqué que les moteurs de recherche utilisent des Spiders pour l’exploration des pages web et l’indexation de leur contenu. Comme précisé auparavant, la technique d’indexation utilisée consiste à répertorier les termes présents dans chaque page, ceci sans l’aspect sémantique. Ainsi, nous pouvons déduire qu’une amélioration automatique ne peut se faire qu’au sein des moteurs de recherche.

Pour cela, nous suggérons l’intégration de la web sémantique dans le processus d’indexation pratiqué par le Spider.
Démarche d’intégration
Notre démarche se base sur deux éléments. D’une part, le fonctionnement du Spider et, d’autre part, le processus d’indexation de la web sémantique qui ont été développés ci-dessus.

Le Spider dont nous présentons les caractéristiques, prend en charge le parcours des pages web d’un site. Notons que les liens externes (c'est-à-dire les liens sur le même hôte que la homepage) ne seront pas traités dans notre cas.

Pour chaque page que le Spider trouvera, un processus d’indexation automatique sera lancé pour définir le sens de la page. Ainsi, nous améliorerions le fonctionnement du spider en intégrant une méthode de la web sémantique.

Le schéma suivant illustre le processus d’indexation sémantique d’un Spider.


Diag.  STYLEREF 1 \s 2 SEQ Diag. \* ARABIC \s 1 1: Diagramme d'activité de Spider Sémantique

Prototype Robotina
Introduction à Robotina
Dans ce chapitre nous allons présenter un exemple de bot, un prototype que nous avons développé qui mettra en œuvre des fonctionnalités typiquement assignées au bot. Nous l’avons nommé « Robotina ». Ainsi, nous allons faire le lien entre l’utilisation des bots basés sur la recherche d’information et les outils de recherche.

Nous verrons également toutes les contraintes liées à la mise en œuvre de Robotina. Ainsi, nous examinerons son aspect juridique, son classement dans les outils de recherche et l’intérêt de la web sémantique dans le cadre de son utilisation.
But de Robotina
Robotina sera un moteur de recherche personnalisé qui permettra à un individu d’effectuer des recherches sur les sites "fiables" connus à l’avance pendant une durée déterminée.

En effet, Robotina mettra à disposition de son utilisateur les dernières données venant de ces sites. Imaginons une personne qui souhaite obtenir des informations sur un sujet précis dans divers sources.

Comme le montre l’illustration suivante, l’utilisateur va devoir s’enregistrer sur le site de Robotina pour ouvrir un compte.


Figure  STYLEREF 1 \s 3 SEQ Figure \* ARABIC \s 1 1: Démarche d'inscription sur le site Robotina

Ensuite il pourra faire des recherches sur l’ensemble des sources disponibles et les conserver pendant un mois.


Figure  STYLEREF 1 \s 3 SEQ Figure \* ARABIC \s 1 2: Utilisation de Robotina pour une recherche d'article

Notons que Robotina est conçue pour conserver les articles de ses sources pendant un mois. Une fois cette durée dépassée, les articles ainsi que les recherches seront supprimés pour des raisons de stockage dans la base de données.

Voici le résultat d’une recherche avec un mot clé donné :


Figure  STYLEREF 1 \s 3 SEQ Figure \* ARABIC \s 1 3: Résultat de recherche de Robotina

Nous allons définir la notion de sites « fiables » dans le chapitre suivant.
Comment définissons-nous un site fiable ?
Comme nous l’avons mentionné, Robotina ne permet d’effectuer des recherches que sur des sites « fiables ». Ici nous tentons de définir cette notion pour les sites de sources.

La fiche descriptive (nom du site, description et le public visé), le contenu proposé (pertinence, qualité, mise à jour et documentation) et la présentation globale du site (ergonomie et design) sont les catégories principales des critères pris en compte pour l’évaluation d’un site web.

De plus, dans le cas particulier de notre prototype, le site source doit générer des flux RSS pour que Robotina puisse l’interroger.
Accès à l’information électronique
Robotina rediffuse les articles de presse émis sur le net par des sociétés médiatiques. Le contenu de ces articles, des textes, des commentaires, des ouvrages, des illustrations et des images reproduits sur les sites Internet de ces sociétés ou ces organisations est protégé par la propriété intellectuelle. A ce titre, et conformément à la législation suisse et européenne en la matière, seule est permise leur utilisation pour un usage privé.

Il est interdit au client notamment de copier, reproduire, diffuser, vendre, publier, exploiter de toute autre manière ou diffuser dans un format différent ou autre les informations présentes sur les sites des sociétés respectives. En conséquence, toute utilisation qui ne résulte pas d'un usage privé ainsi que la reproduction totale ou partielle du contenu de ces sites sera considérée comme une violation des droits de la propriété intellectuelle et sanctionnée comme telle, sauf autorisation préalable de la société concernée.

L’article de Maître Valérie Sédallian qui décrit les grands principes de la protection juridique des œuvres (en annexe) nous amène à la conclusion que pour utiliser des articles de presse provenant des sites Internet, nous devons respecter les droits d’auteurs. Ainsi, la société exploitante de Robotina, ne peut utiliser le contenu des articles des sociétés médiatiques à moins que l’on lui ait donné préalablement l’autorisation.

Pour en bénéficier, la société exploitante de Robotina doit parvenir à conclure des contrats avec les propriétaires des sites sources. Leur définition est présentée en annexe.

Conformément à cette définition, nous pouvons distinguer deux cas d’utilisation pour Robotina :
Usage privé :
Dans ce cas, l’utilisateur bénéficie des avantages de Robotina à des fins strictement privées. Dans ce cadre, la loi permet, à priori, une utilisation des données si ces dernières ne font pas l’objet d’une reproduction et/ou si l’information n’est pas représentée sur le net par l’usager.
Usage public :
Pour que Robotina serve d’outil à la disposition du public, l’exploitant doit conclure un contrat avec chaque fournisseur d’information.

Cette distinction influence partiellement le fonctionnent de Robotina au niveau de l’interrogation des flux RSS du fournisseur d’information. En effet, pour un usage privé, Robotina doit récupérer les flux RSS de manière directe, via le site source.

En revanche, dans le cadre d’un contrat, comme on le mentionne dans l’annexe (voir le chapitre des contrats), le fournisseur de données doit mettre à disposition du contractant les moyens pour exécuter son obligation. Ces moyens sont relatifs à la nature du contrat et à la capacité du prestataire.

En somme, le fournisseur doit mettre à disposition de Robotina sa base de données et les mots de passe associés.
Robotina et les familles de moteurs de recherche
Sur la base de la définition des familles de moteurs de recherche et la description de l’idée de Robotina, nous allons dans ce chapitre attribuer une classification à notre prototype.

Robotina se veut être un moteur de recherche personnalisé, en l’occurrence dans le domaine de la presse. Elle interroge le flux RSS des sites médiatiques préalablement définis comme des sites de sources fiables. Elle tient également sa propre base de données.

Donc d’une part on peut dire que Robotina est un métamoteur personnalisé puisqu’elle n’effectue la recherche que sur les sites préalablement inscrits dans sa liste de sources. Elle est personnalisée car les sites interrogés appartiendront au même secteur d’activité. Dans le cadre de notre prototype, ce sont des sites de média.

D’autre part, Robotina maintient sa propre base de données. Ainsi elle fonctionne comme un moteur de recherche classique.

En somme, Robotina prétend fournir des résultats de qualité. Sa qualité se situe plutôt, au même niveau que celle des annuaires. D’ailleurs le fait de choisir manuellement les sites sources soulève deux points. Premier point : par le choix des sites fiables nous cherchons à fournir un service de qualité et des résultats de recherche les plus exacts. Second point : nous souhaitons rester dans le même secteur d’activité et conserver l’intitulé personnalisé.

Robotina propose une recherche simple et donne le choix à ses utilisateurs d’obtenir les dernières informations provenant des sites choisis par eux-mêmes et dans les langues voulues.

Robotina affiche les résultats sous forme de cluster depuis le site de provenance et conserve les résultats de recherche pour une durée déterminée. Notons que dans le cas d’une utilisation publique de Robotina, l’ouverture d’un compte est nécessaire pour la conservation de ces résultats. Autrement, Robotina peut être utilisée pour un usage privé comme un moteur de recherche personnel.

Pour finir, nous nous sommes rendu compte au cours de cette étude, qu’il existe des moteurs de recherche similaires à Robotina. Malgré cela, la mise en œuvre de l’idée pour l’ensemble des sites médiatiques Suisse serait une première.
Qu’apporterait la web sémantique à Robotina ?
Nous pouvons constater que la web sémantique impose un traitement très lourd au système pour obtenir des résultats plus ou moins fiables, néanmoins, la web sémantique est un moyen puissant d’affiner la recherche classique.

En ce qui concerne Robotina, l’application de la web sémantique pourra améliorer le système de recherche. Cependant étant donnée l’importante demande en ressources, nous n’avons pas besoin de ce procédé. Sachant que l’affinement de la recherche est en partie effectué par la limitation des sites sources.
Robotina, un moteur de recherche
Comment Robotina alimente-elle sa base de données ?
Dans ce chapitre nous allons voir comment Robotina recueille les informations et alimente sa base de données. Nous avons précédemment précisé qu’elle récupérait les flux RSS mais sans approfondir cette notion.

Qu’est ce que sont les flux RSS ? Les flux RSS (Really Simple Syndication) sont des flux de contenus gratuits en provenance de sites Internet. Ils incluent les titres des articles, des résumés et des liens vers les articles intégraux à consulter en ligne. Les dernières informations publiées sur un site source peuvent ainsi venir enrichir la base de données de Robotina.

Robotina insère les informations dans sa base de données pour deux principales raisons. D’une part, elle permettrait ainsi à ses utilisateurs non seulement d’afficher les liens vers les dernières informations apparues sur les sites sources mais aussi de leur permettre d’effectuer des recherches personnalisées. Ainsi l’usager peut choisir les articles qui l’intéressent en insérant un mot clé et le système s’occupe du filtrage des données.

D’autre part, l’utilisateur peut enregistrer sa recherche dans la base de Robotina, ainsi le bot continue à chercher les informations même en son absence.

A ces raisons, ajoutons également que l’utilisateur ne devra s’inscrire qu’une seule fois sur le site de Robotina et il aura l’accès à plusieurs sites sources. Ainsi, plutôt que de devoir s’inscrire sur plusieurs sites et se connecter régulièrement à des sites Internet de référence, l’utilisateur pourrait consulter à tout moment les derniers titres mis à jour. Dès qu'un titre l’intéresse, il suffirait de cliquer sur celui-ci, pour accéder directement à l'article correspondant.

Rappelons que les flux RSS sont réunis dans un fichier au format XML. Nous avons comparé le fil RSS de plusieurs sites sources que le prototype Robotina propose à ses clients. Nous nous sommes rendus compte que les flux RSS ne sont pas normalisés. Chaque journal génère ses flux à sa guise. Ainsi le contenu des articles (la balise ) n’est pas toujours renseigné. L’illustration suivante illustre ce fait par la comparaison de deux de nos sites sources : le courrier et le temps.


Figure  STYLEREF 1 \s 3 SEQ Figure \* ARABIC \s 1 4: Comparaison des flux RSS du Temps et du Courrier

D’une manière générale, un fil RSS contient le titre de l'information, la description et le lien vers une page décrivant plus en détail l'information.

Faute de normalisation des flux RSS, le contenu ne sera pas toujours récupérable par le simple téléchargement du fichier. Ainsi, pour se faire il faudrait personnaliser ce processus pour chaque site source. Par exemple pour pouvoir insérer un article du temps, le bot de Robotina, pour chaque lien, doit aller sur la page web référencée et la télécharger et ensuite parser les balises HTML de la page pour enfin insérer le contenu de l’article dans la base de données.

Cela est possible et peut se faire de deux manières. La première serait un parcours séquentiel de chaque article d’un site source après l’autre. Cela évidement prendra beaucoup de temps et en particulier de ressources puisque le bot doit connaître pour chaque site source la méthode de parsing qu’il doit appliquer.

La deuxième solution consisterait à mettre en œuvre un système de processus parallèles. Dans ce cas chaque processus sera chargé de parser un des sites sources dont il connaît la méthode de parsing. Ainsi, par exemple un bot en java, muni de multithreading répondra à ce besoin.

Dans le cas du prototype Robotina, nous nous sommes contentés d’insérer dans la base uniquement des informations englobées dans les balises de « Title », « Link » et « Description » qui décrivent respectivement le titre de l’article, le lien vers la page web contenant l’article et la description de l’article.

Nous pensons que ces balises contiennent suffisamment de données et sont assez pertinentes pour permettre d’effectuer des recherches sur le contenu des articles.
Fonctionnement du bot de Robotina
Le bot tourne grâce à une boucle infinie qui constitue, en effet, son cœur. Cette boucle permet au bot d’exécuter les méthodes de manière synchronisée et automatisée.

Le bot doit connaître où il doit aller chercher l’information. C’est pour cette raison qu’avant d’entrer dans la boucle infinie, il va se connecter et interroger la base de données et charger l’URL des sites sources. Ces URL définissent l’emplacement des fichiers XML contenant les flux RSS.

Ainsi, pour chaque site source, le bot va lire le fichier au format XML, extraire le flux RSS et récupérer les données. Une fois cette partie terminée, la boucle infinie sera déclenchée.

Par convention, à un intervalle de temps régulier, le bot recommence le même processus. Cela permettrait de mettre à jour la base de données dans le cas où les nouveaux articles sont ajoutés aux flux RSS. Il insère dans la base ces articles tout en évitant les doublons. Dans ce processus le bot tiendra compte également des sites sources qui auront pu ajoutés à la liste.

Nous avons fixé l’intervalle de temps à douze heures. Ceci est un élément paramétrable qui pourrait être modifié par les concepteurs du bot.

Le diagramme suivant illustre le processus d’acquisition de l’information à partir des sites sources jusqu’à la mise à jour de la base de données.


Diag.  STYLEREF 1 \s 3 SEQ Diag. \* ARABIC \s 1 1: Diagramme d'activité du fonctionnement de Robotina

Architecture du système de Robotina
Nous terminerons cette partie en revenant aux notions développées au début de la première partie de ce travail. Ici, nous examinerons les qualités que le bot de Robotina, étant un agent, doit posséder (hériter).

Nous avons vu qu’au cœur du bot, une boucle infinie assurait l’automatisme du bot. L’automatisme est le comportement particulier de cet agent. Qu’en sont les autres qualités ?

Comme le montre le schéma suivant, le système de Robotina est constitué de quatre entités. Le bot de Robotina se renseigne à l’aide de la table « Source ». Ainsi, il saurait où il peut acquérir les informations. Le bot cherche les données et les stocke dans la table de « l’Article ». De cette même table ainsi que de la table de la « Recherche », le bot supprime les données obsolètes une fois tous les trente jours.


Diag.  STYLEREF 1 \s 3 SEQ Diag. \* ARABIC \s 1 2: Schéma de la base de données de Robotina

Le bot effectue son travail indépendamment des autres éléments du système, en particulier l’entité de « l’Utilisateur ». Ce sont des éléments qui composent l’interface d’utilisateurs et qui s’occupent de la recherche, de sa conservation et notamment de la gestion des utilisateurs.

La sociabilité du bot découle du fait que le bot interagit d’une part, avec le système en l’alimentant en information et d’autre part avec son environnement, en l’occurrence, l’Internet.

Pour chaque récupération des flux RSS d’un site source, le bot fait un compte-rendu de cette activité dans un fichier « log ». Ainsi, lorsqu’une erreur se produit, par exemple si le fichier XML du site source est inaccessible, il rapporte l’erreur dans le fichier log avec l’heure et la date de l’erreur et continue à tourner. Par ce fait nous constatons que le bot est réactif.


Figure  STYLEREF 1 \s 3 SEQ Figure \* ARABIC \s 1 5: Illustration du fichier log de Robotina

Le manuel de mise en marche, le manuel de programmeur du bot, les codes PHP du bot et de l’interface utilisateur de Robotina ainsi que les codes SQL de Robotina pour la base de données sont en annexe de ce travail.

Résumé
Comme nous l’avons vu au cours de ce travail, un bot peut être un outil psychologique, le Chatterbot en est une illustration, ou un outil filtrant comme par exemple un agrégateur.

Les bots sont des agents qui sont utilisés dans le domaine de la communication ou pour la recherche d’information.

A l’instar d’un agent, un bot a besoin d’un environnement dans lequel il peut agir pour atteindre ses objectifs. Cet environnement correspond à un réseau, tel que l’Internet. Pour pouvoir communiquer dans ce réseau, les bots ont besoin d’un langage commun, à savoir un protocole.

L’autonomie, la sociabilité, la réactivité et l’automatisme sont les propriétés primordiales d’un bot. Cependant, ce dernier doit être muni d’autres compétences pour pouvoir effectuer une tâche spécifique qui lui sera confiée.

Nous avons vu que pour une indexation sémantique le Spider doit être équipé d’un parseur sémantique. De la même manière, un agrégateur de presse doit être capable d’extraire les données dans un fichier XML.

Dans la mesure où le bot agit dans un environnement, il doit pouvoir également répondre adéquatement aux exigences de cet environnement. Au sein de ce dernier, il existe des enjeux et des règles à titres juridique, économique et technologique que le concepteur de bot doit prendre en considération.

Nous pouvons constater que le monde des bots a des points communs avec notre monde dans le sens où chaque bot est attaché à une activité particulière et doit remplir certaines tâches spécifiques.

Sur la base de ce que nous avons présenté dans ce travail, le diagramme suivant illustre la hiérarchie qui règne dans ce monde.



Diag.  STYLEREF 1 \s 3 SEQ Diag. \* ARABIC \s 1 3: Hiérarchie des bots

Bibliographie
Livres
AUZENAT, Jérôme, CRUZ, Isabel, DECKER, Stefan et McGUINNESS, Deborah, The Emerging Semantic Web. Amsterdam: IOS Press, 2002.

BATTISTI, Michèle, L'accès à l'information électronique. Paris: ADBS éditions, 2004.

GLOSSBRENNER, Alfred et Emily, Search engines for the World Wide Web. Berkeley: Peachpit Press, 1999.

HEATON, Jeff, Programming Spiders, Bots and Aggregators in Java. Alameda: SYBEX, 22.

LAMB, Monica, Army of web bots. Bloomington: Authorhouse, 2003.

MESGUICH, Véronique et THOMAS, Armelle, Net recherche. Paris: ADBS éditions, 2006.

WILLIAMS, Joseph, Bots and other Internet Beaties. Indianapolis: Sams.net Publishing, 1996.
Sites Internet
 HYPERLINK "http://classes.scriptsphp.net" http://classes.scriptsphp.net
Ce site se compose d'un ensemble d'articles et de classes écrites en PHP ainsi que de leur documentation respective.

 HYPERLINK "http://classes.scriptsphp.org/article.Un-bot-IRC" http://classes.scriptsphp.org/article.Un-bot-IRC
Un article sur la création d’un bot IRC.

 HYPERLINK "http://wikipedia.org" http://wikipedia.org
Encyclopédie libre online.

 HYPERLINK "http://www.alicebot.org/" www.alicebot.org/
Le site du Chatterbot axé sur l’intelligence artificielle faible et qui donne son nom aux Alicebots.

 HYPERLINK "http://www.cnts.ua.ac.be/conll2004/pdf/08188tsa.pdf#search=%22verb%20semantic%20edge%20distance%22" www.cnts.ua.ac.be/conll2004/pdf/08188tsa.pdf#search=%22verb%20semantic%20edge%20distance%22
Il s’agit d’un document sur le calcul sémantique de la distance entre deux concepts.

 HYPERLINK "http://www.commentcamarche.net" www.commentcamarche.net
Ce site est composé d’un ensemble de notions informatiques telles que la définition de différents types de réseau et des sockets.

 HYPERLINK "http://www.cs.cmu.edu/afs/cs/project/jair/pub/volume11/resnik99a.pdf#search=%22verb%20semantic%20edge%20distance%22" www.cs.cmu.edu/afs/cs/project/jair/pub/volume11/resnik99a.pdf#search=%22verb%20semantic%20edge%20distance%22
Un article concernant la similarité sémantique dans une taxonomie.


 HYPERLINK "http://www.csadmin.net/aidebot.php" www.csadmin.net/aidebot.php
Un article traitant de la création d’un bot sous mIRC.

 HYPERLINK "http://www.damas.ift.ulaval.ca/~pasquier/Bonom/ElementsTheoriques.html" www.damas.ift.ulaval.ca/~pasquier/Bonom/ElementsTheoriques.html
Des éléments théoriques sur les systèmes multi-agents.

 HYPERLINK "http://www.developer.com" www.developer.com
Ce site présente des articles et des exemples pour la programmation et l’architecture des différents outils informatiques dont Spider et l’agrégateur.

 HYPERLINK "http://www.developpez.com" www.developpez.com
Il s’agit d’un forum des développeurs professionnels actifs dans les domaines différents de l’informatique, notamment la programmation des bots.

 HYPERLINK "http://www.fse.ulaval.ca/fac/href/grille/grille.gif" www.fse.ulaval.ca/fac/href/grille/grille.gif
La grille d’analyse des sites Internet de l’université de Laval.

 HYPERLINK "http://www.hiersay.net" www.hiersay.net
Un site consacré au protocole IRC et au dialogue en direct sur l’Internet

 HYPERLINK "http://www.honeynet.org/papers/bots/" www.honeynet.org/papers/bots/
Un article sur les botnets et leur utilisation malveillante

 HYPERLINK "http://www.internet-juridique.net" www.internet-juridique.net
L'Internet Juridique présente les activités du cabinet d'avocat de Valérie Sédallian, spécialisée dans le droit de l'informatique, des réseaux et des nouvelles technologies.

 HYPERLINK "http://www.jabber.org" www.jabber.org
Le site officiel du protocole jabber.

 HYPERLINK "http://www.lri.fr" www.lri.fr
Laboratoire de recherche en intelligence artificielle de l’université de Paris-sud 11.

 HYPERLINK "http://www.mirc.com" www.mirc.com
Ce site fournit des informations générales au sujet de mIRC.

 HYPERLINK "http://www.php.net" www.php.net
Ce site met à disposition du programmeur un manuel de php décrivant les méthodes de ce langage.

 HYPERLINK "http://www.zdnet.fr" www.zdnet.fr
Ce site réunit des articles présentant l’actualité des systèmes d’information.
Annexes
Manuel de mise en marche de Robotina
Cette partie va décrire la marche à suivre pour la mise en production du bot Robotina.

Pré requis :
PHP4
MySQL

Mise en place de l’interface du site.

Création de la base de données.

Sélection des sites sources et inclusion dans le programme (pour le prototype fourni, ce travail à déjà été effectué).

Mise en place du bot sur le serveur.

Lancement du bot (boucle fondamentale).

Mise en ligne du site.

Manuel de programmeur du bot de Robotina

connexion

Permet de se connecter à la base de données

@param -

deconnexion

Permet de se déconnecter de la base de données

@param -

lit_xml

Lit un flux XML

@param -

lecteurRSS

Lit un flux RSS et récupère les titres, liens et descriptions

@param $fileRSS


linkExist

Vérifie si le lien passé en paramètre existe dans la base de donnée, renvoi un boolean

@param $currentLink

insertionContenu

Insère dans la table article les articles reçus en paramètres

@param $contenu, $src_id

killSearch

Supprime les recherches obsolètes

@param

killArticle

Supprime les articles obsolètes

@param

killOld

Appel de la suppression des recherches et des articles obsolètes

@param

MaJContenu

Met à jour les articles provenant de la source passée en paramètre

@param $srcRSS, $srcID

linkExist

Vérifie si le lien passé en paramètre existe dans la base de donnée, renvoi un boolean

@param $currentLink

ouvertureFichierLog

Ouverture du fichier log

@param $nomFichierLog

ecritureFichierLog

Ecriture dans le fichier log

@param $msg

fermetureFichierLog

Fermeture du fichier log

@param $fichierLog

url_exists

Vérifier si l'URL est atteignable

@param $url_a_tester
Codes PHP du bot Robotina
Code :