• Aucun résultat trouvé

Partie II : Un environnement pédagogique adaptatif: le système OrPAF

4. Session d’apprentissage d’un apprenant

4.4. Sauvegarde/Restauration d’une ACM

La taille du fichier RDF du modèle du domaine étant souvent très grande, le filtrage systématique de ce modèle à chaque fois qu’un apprenant demande à afficher son contexte de formation implique des coûts de traitement importants. Ainsi, nous proposons une autre approche qui consiste à sauvegarder le contexte de formation d’un apprenant dans une table de données numériques et de le restaurer à partir de cette structure de sauvegarde numérique. Un algorithme de restauration du contexte de formation d’un apprenant à partir de cette structure de sauvegarde numérique a été conçu et implémenté dans OrPAF afin d’éviter le chargement et le filtrage systématiques et coûteux du modèle du domaine.

Structure de sauvegarde :

La sauvegarde de la session d’un apprenant consiste à sauvegarder dans une table d’une base de données les contextes de formation de la session. Nous avons proposé pour cette structure de sauvegarde le schéma suivant:

LearnerSession (LearnerID, LearningContextID, TopicName, SignedTopicWight)

Cette structure attribue à chaque notion de chaque contexte de formation de chaque apprenant un poids signé. Ce dernier est calculé comme suit :

Soit le chemin de notions <t1, t2, t3, .. tn > de longueur n qui relie dans une ACM une notion

cible t1 à une notion tn. Le poids de la notion tn est calculé récursivement par rapport à la

notion cible t1 comme suit :

A l’instar du facteur ‘a‘ utilisé dans le calcul de la relevance sémantique SR d’une ressource pédagogique, le facteur ‘b’ est une variable qui prend ses valeurs dans l’ensemble des nombres premiers comme suit :

b=2 si la relation entre ti-1 et ti est subTypeOf ou sa relation inverse.

b=3 si la relation entre ti-1 et ti est prerequisiteOf ou sa relation inverse.

b=5 si la relation entre ti-1 et ti est agregateOf ou sa relation inverse.

Nous calculons la valeur du poids signé PoidsNotionSigné d’une notion tn à partir du poids de

cette notion comme suit :

Wtn/t1= (1/b)n-1 Wtn-1/t1, n>1

Wt1/t1=1

PoidsNotionSigné(tn)= - 1/Wtn/t1 si tn est à l’extrémité d’un chemin de l’ACM,

Au niveau du poids signé, le facteur b est élevé à la puissance i-1 (n ≥ i ≥ 2) pour représenter la position de la notion ti dans le chemin des notions <t1, t2, t3, .. tn > et permet d’identifier la

séquence exacte des relations qui constituent le chemin reliant la notion cible t1 à la notion ti.

En effet, nous nous basons sur la propriété mathématique qu’a tout nombre de pouvoir être écrit de manière unique sous la forme d’une multiplication de nombres premiers élevés à des puissances entières. Cette caractéristique nous permet de reconstituer les chemins de l’ACM en utilisant uniquement les poids signés PoidsNotionSigné de ses différentes notions.

Le signe du poids signé d’une notion exprime le fait qu’elle est à l’extrémité d’un chemin ou pas. Cette information est utile dans l’algorithme de restauration pour réduire le nombre de combinaisons de chemins (ACM) à reconstituer et donc optimiser le temps de calcul. Par exemple, les valeurs de PoidsNotionSigné des notions de l’ACM de la figure 34 sont sauvegardées comme suit :

Table 2 : Structure de sauvegarde de l’ACM de la figure 34

Notions ti (la notion cible est t1) PoidsNotionSigné(ti) PoidsNotionSigné(ti)

(Ecriture normalisée de t1 à ti).

(A lire de gauche à droite)

t2 2 2 t3 8 2

×

22 t4 -3 -3 t5 3 3 t6 -6 -3

×

2 t7 -6 -3

×

2 t8 -64 -2

×

22

×

23

Si nous analysons la valeur du PoidsNotionSigné de la notion t8, nous pouvons déduire que

cette notion est positionnée à l’extrémité d’un chemin (PoidsNotionSigné(t8)<0) et qu’à partir

de la notion cible t1 ce chemin est composé dans l’ordre de trois relations subTypeOf

consécutives. Le PoidsNotionSigné de la notion t7 indique que cette notion est à l’extrémité

d’un chemin composé à partir de la notion cible t1 d’une relation prerequisiteOf suivie d’une

relation subTypeOf. Enfin, la valeur du PoidsNotionSigné de la notion t2 indique que cette

notion se trouve à l’intérieur d’un chemin (PoidsNotionSigné(t2)>0) et que son sommet dans

Nous pouvons également affirmer que la notion t6 ne peut être reliée à la notion t4 mais peut

être reliée à la notion t5 car t4 se trouve à l’extrémité d’un chemin (PoidsNotionSigné<0) et

pas à l’intérieur d’un chemin.

Figure 34 : une ACM

Dans certains cas l’algorithme de restauration proposé calcule à partir de la structure de sauvegarde et pour un même contexte de formation, plusieurs ACM possibles et donc exige des accès au modèle du domaine pour décider de la solution à sélectionner. Ces cas apparaissent généralement pour les ACM relationnelles avec des longueurs de chemin m>2. Algorithme de restauration

L’algorithme de restauration sert à générer l’ACM de l’apprenant à partir de sa structure de sauvegarde en identifiant les notions composants les chemins de l’ACM. Le principe de cet algorithme est de commencer par identifier récursivement les notions des chemins les plus longs jusqu’aux chemins les plus courts. Pour un chemin donné, le calcul est récursif pour chacune des notions du chemin et commence par la notion la plus éloignée de la notion cible t1 jusqu’à la notion adjacente à celle-ci.

Pour réaliser notre algorithme de restauration, nous avons définis les fonctions suivantes : - la fonction longueur (ti) qui renvoie la longueur du chemin qui relie la notion cible t1 à

ti. Par exemple longueur (t8)=3 ;

- la fonction path(ti) qui renvoie la séquence des relations qui relie la notion cible t1 à ti.

Par exemple path(t7)= (prerequisiteOf, subTypeOf) ou path(t7)=(3,2) ;

- la fonction Matching(path(tj), path(ti)) qui vérifie l’appariement entre deux chemins

path(tj)etpath(ti) et renvoie une valeur booléenne. Cette fonction vérifie qu’un chemin

chemin le plus long) et la comparaison commence à la notion cible t1. Par exemple

path(t8)=(2,2,2)s’apparie avec path(t3)=(2,2) ou path(t2)=(2) et ne s’apparie pas avec

path(t5)=(3) ou path(t5)=(3,2).

Les étapes de l’algorithme sont :

1- Pour toute valeur absolue |PoidsNotionSigné(ti)|= α1

×

α 22

×

…. α jj-1 d’une notion ti (i> 1)

de l’ACM, construire un chemin de relations path(ti)=<t1,... ti > de longueur j de la notion

cible t1 à la notion ti ;

2- Trier les chemins par ordre décroissant de longueur(ti) ;

3- Appeler la procédure RestaureACM() qui appelle itérativement, pour tous les chemins de l’ACM, la procédure RestaureChemin() dont la fonction est de retrouver les notions qui composent un chemin de l’ACM.

La procédure RestaureChemin() calcule de manière récursive les notions composant un chemin en partant de la notion ti à l’extrémité du chemin jusqu’à la notion cible t1.

RestaureChemin (tableauEntiers path(ti)) {

Debut

Si longueur(ti)=1 alors

ti et t1 sont deux sommets adjacents dans l’ACM ;

Sinon {

Pour chaque path(tj) tel que longueur(tj)= longueur(ti)-1 et PoidsNotionSigné (tj) >0 faire

{

Si Matching(path(tj), path(ti))alors {

tjet ti sont deux sommets adjacents dans l’ACM ; Restore (path(tj)) ; }

} }

Fin ; }

RestaureACM (Entier NumApprenant, Entier NumContexteFormation) {

long :Entier ;

Debut

long :=max (longueur(ti))

Tant que long>0faire {

Pour chaque ti tel que longueur (ti)=long et PoidsNotionSigné (ti) < 0 faire {

RestaureChemin (path(ti)) ; }

long :=long-1 ; }