• Aucun résultat trouvé

Partie 3 Annexes

6.4 Adaptabilité

6.4.1 Extraction d’une sous-carte

Les données de l’entrepôt sont volumineuses : dans le cadre de notre expérience sur Plasmodium Falciparum, l’entrepôt contient plusieurs millions de nœuds et quelques dizaines de millions d’arêtes. Dans le contexte de données génomiques sur des organismes réunissant des communautés plus larges, l’ordre de grandeur serait nettement supérieur : GenBank contient plus de 60 millions de séquences différentes et PubMed référence près de 44 millions d’auteurs différents pour 14 millions de documents. La mise en œuvre d’un entrepôt est trop lourde pour l’utilisateur final ; il est nécessaire de favoriser la mutualisation des données pour des raisons de coûts mais aussi pour limiter l’hétérogénéité des données. L’implantation d’entrepôts de référence permet de pallier les phénomènes de divergences des métadonnées et des identifiants. Nous dissocions donc l’entrepôt de cartographie des connaissances biologiques de la carte qui propose une vue sur une partie des données.

La carte dépend du domaine d’étude, de l’organisme concerné et de la tâche { effectuer. Pour être contextualisée, on doit disposer d’informations décrivant le contexte, dont la disponibilité varie en fonction du client. Ces informations sont peu prévisibles. Par exemple, un système de recherche d’information n’a connaissance que de quelques mots-clés correspondant aux requêtes. Dans un gestionnaire bibliographique, on dispose d’une liste de documents, et de la fréquence { laquelle l’utilisateur y accède ou les cite. Un outil d’analyse de données d’expression de gènes ne possède initialement qu’une liste de sondes présentes sur la puce { ADN (ou tout autre support) et connait l’organisme de référence. Nous avons donc choisi de laisser la liberté au développeur d’utiliser des méthodes d’extraction de cartes contextuelles existantes ou d’en introduire de nouvelles. Une telle méthode se définit simplement par le fait qu’elle retourne un sous-ensemble des tuples de l’entrepôt. La méthode que nous proposons dans la suite a été développée directement en Java. A termes, il serait préférable d’introduire un réel service Web permettant une complète indépendance et accordant plus de souplesse.

Analyse de liens

A good authority is one that is pointed to by many good hubs, and a good hub is one that points to many good authorities. [Kleinberg 1998]

« L’analyse de liens » dont nous parlons ici ne fait pas référence aux systèmes à base de liens décrits par S.C. Boulakia, mais aux techniques mises en œuvre récemment par les principaux moteurs de recherche, dont Google [Kleinberg 1998; Page, Brin et al. 1998] (cf. [Borodin, Roberts et al. 2005] pour un état de l’art complet). Ces techniques sont fondées sur le constat que les documents répondant à une requête doivent avoir un contenu pertinent mais doivent aussi « faire autorité ». La première hypothèse établie considère qu’un fort degré entrant dénote une popularité de la cible [Marchiori 1997]. Kleinberg montre la distinction entre popularité et autorité [Kleinberg 1998]. Brin & Page observent alors que les liens n’ont pas tous le même

poids. L’autorité d’une page est d’autant plus grande que les pages la référençant font aussi autorité. D’un point de vue algorithmique, ils mettent en œuvre un mécanisme de propagation du poids d’une autorité à ses successeurs directs. Cette méthode est appelée PageRank et a donné naissance à Google. Kleinberg modère cette hypothèse et affirme que la présence d’un lien direct entre deux autorités n’est pas indispensable. Il étend la propagation de poids aux voisins de distance 2 dans le graphe. Cela aboutira au système Hits (Hypertext Induced Topic Selection). Une page assume alors simultanément deux identités :

- le « hub » capture l’utilité d’une page par le fait qu’elle référence des pages utiles et faisant autorité,

- l’autorité d’une page capture l’utilité propre d’une ressource par le fait qu’elle est référencée par des ressources de qualités (de bons hubs).

Plusieurs mesures sont proposées pour produire une note à partir de ces deux identités de la page. De multiples évolutions existent, prenant par exemple en compte le contenu textuel.

Justification du choix de cette méthode

Dans l’entrepôt, les nœuds ne sont pas tous des documents, ce sont des données atomiques. Les nœuds pertinents, initialement, sont ceux correspondant directement aux descriptions du contexte : ce sont des mots-clés (concepts), des documents, des gènes, etc. L’utilisation d’un périmètre de distance élémentaire pour étendre le graphe explose rapidement en combinatoire. Par exemple, par l’intermédiaire des types sémantiques et des mesures de cooccurrence, un concept possède un voisinage à distance 2 de l’ordre de plusieurs centaines de milliers d’éléments. Dans le cadre du projet Plasmodium Falciparum, par exemple, 500 000 nœuds sont présents à une distance 2 des 500 gènes présents sur la puce à ADN. Dans certains cas, il est possible de prendre en compte un critère de pertinence. Par exemple, il est possible d’analyser le contenu des documents ou d’exploiter une distance sémantique entre des concepts [Ranwez, Ranwez et al. 2006]. Ces critères de pertinence sont cependant spécifiques à certains contenus et certaines applications.

Dans le contexte de notre entrepôt de graphe, on conserve des hypothèses voisines : un élément est d’autant plus utile qu’il est lié { d’autres éléments, et que ces éléments sont utiles. Plusieurs différences existent cependant :

- certaines arêtes ne sont pas orientées, il est donc difficile de parler de degré entrant ou sortant,

- les nœuds et arêtes du graphe sont typés, une information qui nous permet de proposer des hypothèses sur la topologie et l’utilité de certaines données,

- les arêtes sont valuées, il est possible d’utiliser des hypothèses sur la source, sur la preuve ayant permis d’obtenir la relation, sur la valeur de cooccurrence, etc.

Les méthodes d’analyse de liens offrent ainsi de multiples avantages. Elles sont intuitives pour le développeur qui souhaite paramétrer ou créer une nouvelle méthode. Ceci est d’autant plus important que les données du contexte n’ont parfois jamais été expérimentées pour une telle application dans la littérature. Par exemple, nous n’avons pas connaissance d’un outil d’ingénierie ontologique ou d’un outil de gestion bibliographique qui se base sur une liste de gènes présents sur une puce à ADN. De plus, ces méthodes sont simples et rapides à mettre en œuvre. Elles permettent d’ordonner les éléments et de choisir la taille de la carte de façon continue. Robustes, elles sont applicables dans des topologies diverses de graphes et dans le contexte où l’évaluation, de la pertinence par une analyse du contenu n’est pas possible.

Exemple d’application

Pour faire la preuve de l’intérêt de cette méthode, nous avons fait le choix de l’appliquer dans un contexte extrême : l’information que nous possédons sur le contexte de l’utilisateur est une liste de gènes présents sur une puce à ADN. Nous souhaitons dès lors extraire une carte à des fins diverses : analyser les données de cette puces et construire une ontologie relative à ce

contexte. Les données utilisées proviennent des expériences de Bozdech [Bozdech, Llinás et al. 2003] sur Plasmodium Falciparum.

A partir des 500 gènes listés dans le fichier contenant les données d’expression, nous incorporons tous les nœuds situés à une distance maximale de 2 dans le graphe. Pour cela, nous ne prenons pas en compte les relations de cooccurrence, ni les distances ultramétriques1 responsables d’une très forte connexité. Malgré ces précautions, le graphe résultant est composé de 500 000 nœuds : les types sémantiques d’UMLS représentent des hubs, certains sont reliés { plusieurs dizaines de milliers de nœuds.

Pour réduire le nombre d’éléments, nous appliquons un algorithme de pondération des nœuds basé sur la propagation du poids d’un nœud { ses voisins : les gènes centraux sont initialisés avec un poids de 1, les nœuds { une distance de 1 de ces gènes avec un poids de 0,5, les autres avec un poids nul. En procédant itérativement à partir du centre du graphe, chaque sommet propage sa pondération (rank) à ses voisins. Soit ni un sommet et nj un de ses voisins :

Nous avons choisi de conserver les 5 000 nœuds possédant le plus fort poids. Cette valeur peut sembler arbitraire, nous la justifions de la façon suivante : cette valeur est 10 fois plus grande que le nombre de gènes initialement présents. Or, les gènes possèdent généralement de l’ordre de 3 annotations et de 2 { 5 liens bibliographiques. Certaines annotations et certains documents sont communs à plusieurs gènes. Nous conservons donc un voisinage important au regard de la taille des données utiles. Après un nombre d’itérations assez faible, nous avons ainsi la garantie de conserver les voisins directs des gènes. Après avoir déterminé ce sous-ensemble de nœuds, nous complétons la carte :

- en ajoutant les nœuds parents à partir des principales relations hiérarchiques (« est un », « partie de », etc.),

- en ajoutant toutes les relations à forte connexité ignorées jusque là.

La procédure complète est schématisée dans la figure 6.26. La sous-carte que nous utilisons dans la suite possède près de 6000 nœuds, dont approximativement 2000 sont des concepts, 2000 des gènes et 1000 des documents. Les résultats visuels sont présentés dans le chapitre qui suit. Nous n’avons pas mené d’évaluation formelle ou quantitative de la méthode, il est en effet difficile de proposer une carte « de référence » le permettant. Du point de vue de performances, l’exécution de cette procédure ne prend que quelques dizaines de secondes. La programmation de cette procédure a été réalisée directement en Java au niveau du serveur. L’extraction d’une carte à un instant donné n’exclut par son extension future ou l’accès parallèle { des données de l’entrepôt par l’intermédiaire de l’API.

Figure 6.26 – Procédure d’extraction d’une carte contextuelle.

6.4.2 Adaptabilité de la carte et gestion des préférences