• Aucun résultat trouvé

PARTIE I : L’ÉTAT DE L’ART

CHAPITRE 4. LE FORMAT GÉNÉRIQUE DE MÉTADONNÉES

5.3. L’enrichissement des métadonnées par l’usage

5.3.3. L’algorithme d’enrichissement

5.3.3.1. L’augmentation de la température

Le changement de température peut être réalisé pour chaque période de temps ∆t et il dé- pend du nombre d’utilisateurs appartenant au même groupe qui ont consommé les métadonnées dans la période de temps ∆t. L’algorithme utilisé pour l’augmentation de la température est présenté dans le Tableau 22. Cet algorithme s’applique pour chaque indicateur de l’intérêt de l’utilisateur considéré comme pertinent dans le domaine d’application.

Les paramètres de cet algorithme sont : l’élément de métadonnée pour lequel la température doit être recalculée, le nombre d’utilisateurs qui ont interagi avec la métadonnée et l’identifiant du groupe auquel ils appartiennent.

La première étape consiste à calculer la température du groupe pour l’élément reçu comme paramètre. Ce calcul est réalisé en deux étapes :

le calcul de la valeur de température (∆temp) à ajouter à la température actuelle de la mé- tadonnée. Cette température est directement proportionnelle au nombre d’utilisateurs n qui ont consommé la métadonnée. Un paramètre α est employé pour réaliser ce calcul. Cette valeur Δtemp est additionnée à la température actuelle de la métadonnée MD. Pour pouvoir utiliser cette valeur de la température plus tard, nous la sauvegardons dans un historique. Pour chaque période ∆t, l’historique contient une seule valeur de la température pour chaque groupe d’utilisateurs. Ensuite, la température moyenne de cet élément est déterminée, en utili- sant l’équation (1).

115

Tableau 22 – L’algorithme pour l’augmentation de la température Algorithme 3 : increaseTemperature

Entrée : La métadonnée, MD, pour laquelle la température est recalculée ; le nombre n d’utilisateurs du même groupe qui ont consommé la métadonnée ; l’identifiant du groupe auquel les utilisateurs appartiennent, gID ; le paramètre α, utilisé pour le calcul de la température pour un élément de métadonnées.

Sortie : la métadonnée md, avec la température augmentée pour tous ses descendants et ses ancêtres.

Δtemp ← computeGroupTemperature(n,α); md ← setGroupTemperature(MD, gID, Δtemp); setHistory(Δt, MD.ID, gID, Δtemp);

avgTemp ← computeAvgTemperature(MD); md ← setAvgTemperature(md, avgTemp); if MD has children then

└ md ← propagateTemperatureDown(md, gID, Δtemp, 1);

if MD has parent then

└ md ← propagateTemperatureUp(md.parent, gID, n, Δtemp, 1); return md;

Chaque fois que la température d’un élément est modifiée en utilisant la fonction increase- Temperature, ce changement est propagé à tous ses descendants, en utilisant l’algorithme présenté dans le Tableau 23. Cet algorithme suit les mêmes étapes que le premier algorithme. La température pour chaque descendant est changée avec une valeur directement proportionnelle à la variation de la température de son parent et à son niveau dans l’arbre. La propagation peut être limitée à un certain niveau, établi à travers la constante MAXLevel. On applique le même raisonnement pour la propaga- tion de la température à tous les ancêtres de l’élément qui a initialisé le processus d’augmentation. L’algorithme défini pour cette opération est présenté dans le Tableau 24, il suit les mêmes règles que l’algorithme qui propage la température aux descendants.

Tableau 23 – L’algorithme de propagation de la température au niveau des descendants Algorithme 4 : propagateTemperatureDown

Entrée : La métadonnée, MD, pour laquelle la température des enfants doit être modifiée; l’identifiant du groupe, gID, pour lequel la température doit être modifiée; la différence de température du parent Δtemp, qui est utilisée pour modifier la température de chaque fils; le niveau, level, dans la procédure récursive. Sortie : La métadonnée, md, qui a la température de tous ses fils augmentée. inc ← computeTemperatureDown(Δtemp);

foreach child of MD do

│ md ← md U setGroupTemperature(child, gID, inc); │ avgTemp ← computeAvgTemperature(child); │ md ← md U setAvgTemperature(child, avgTemp); │ if level<MAXLevel then

└ └ md ← md U propagateTemperatureDown(child, gID, inc, level+1); return md;

116

La différence majeure entre l’algorithme d’augmentation et ceux de propagation est que, pour le premier algorithme, seule la valeur de la température est sauvegardée dans l’historique. Nous considérons que le changement de la température produit directement par l’interaction des utilisateurs avec la métadonnée est plus important que celui obtenu suite à la propagation.

Au moment du calcul de la température de toute métadonnée, une attention particulière est portée à la limite supérieure que la température peut avoir. Dans notre cas, la température d’une méta- donnée ne peut pas dépasser 100. Pour cela, avant de réaliser toute affectation de la température à une métadonnée, une comparaison est réalisée dans le cadre de la fonction setGroupTemperature, afin de respecter cette contrainte.

Tableau 24 – L’algorithme de propagation de la température au niveau des ancêtres Algorithme 5 : propagateTemperatureUp

Entrée : La métadonnée, MD, pour laquelle la température des ancêtres doit être modifiée; l’identifiant du groupe, gID, pour lequel la température doit être modifiée; la dif- férence de température du parent Δtemp, qui est utilisée pour modifier la tempé- rature de chaque fils; le niveau, level, dans la procédure récursive.

Sortie : La métadonnée, md, qui a la température de son parent augmentée if MD ≠ null then

│ inc ← computeTemperatureUp(Δtemp);

│ md ← md U setGroupTemperature(MD, gID, inc); │ avgTemp ← computeAvgTemperature(MD); │ md ← md U setAvgTemperature(MD, avgTemp); │ if level<MAXLevel then

└ └ md ← md U propagateTemperatureUp(MD.parent, gID, inc, level+1); return md;

L’équation (2) est utilisée pour le calcul de la température d’un élément de métadonnée, en fonction du nombre d’utilisateurs qui l’ont visualisé (nrUsers).

(2)

Pour le calcul de la température qui est propagée aux fils, l’équation (3) est employée. Dans cette formule, la température acquise par un élément de métadonnée est propagée à ses fils, de ma- nière égale à chaque nœud, en étant divisée par le nombre de fils de l’élément de métadonnée dans l’arborescence.

(3)

Pour la propagation de la température au niveau du parent, l’équation (4) est employée. Seu- lement une partie de la température du fils est propagée au niveau du parent. Ce pourcentage est établi par le paramètre δ.

117

(4)

Au niveau de l’augmentation de la température, la différence entre cet algorithme et la ver- sion publiée dans (Manzat et al., 2010) se retrouve au niveau de la gestion de l’historique de l’évolution de la température, qui a été modifiée suite au changement réalisé dans la gestion du refroi- dissement. Dans la version publiée, nous mettons à jour l’historique chaque fois que la température est modifiée, soit parce que l’élément de métadonnée a été consommé de manière directe par les utilisa- teurs, soit parce qu’il y a eu lieu une propagation du changement de la température, suite à une aug- mentation au niveau d’un de ses descendants ou de ses ancêtres. Une autre différence se situe au ni- veau des formules utilisées pour le calcul de la température. Par exemple, dans (Manzat et al., 2010), nous utilisons la moyenne arithmétique, dans ce manuscrit de thèse, pour prendre en compte la dimen- sion différente des groupes des utilisateurs, dans la version de l’algorithme présenté nous avons utilisé une moyenne pondérée, où le poids est constitué par les nombre d’utilisateurs de chaque groupe d’utilisateurs.