5.3 Algorithme d'analyse de réponse
Chaque test définit une classe de réponses: une zone sensible
regroupe une ensemble de points considérés comme
équivalents, un pattern définit un ensemble de phrases qui seront
traitées de la même manière. Au sein d'une analyse de
réponse, lorsque les différents tests définissent des
classes mutuellement exclusives, leur ordre n'a pas d'importance. Cependant, en
général, plusieurs classes de réponses se recouvrent
partiellement. Voici quelques exemples:
- la classe définie par le pattern 'A|B' recouvre partiellement la
classe définie par le pattern 'B|C' et inclut la classe 'A';
- la classe définie par le pattern '*' recouvre toute classe
définie par un autre pattern;
- si la zone sensible A recouvre partiellement la zone sensible B (comme
dans la figure 5.1), ces deux zones définissent des classes de
réponses non disjointes;
Figure 5.1. Classes de réponses 'zone sensible' non disjointes
- le test 'au 3deg. essai' et le pattern 'hydrogène' se recouvrent
dans le cas où le sujet type 'hydrogène' au troisième
essai;
- Le test 'score > 10' et 'score > 20' se recouvrent pour les valeurs
comprises entre 10 et 20;
- ...
Lorsqu'une même réponse appartient à plusieurs
classes, son identification dépend de l'algorithme de tests,
c'est-à-dire de l'ordre des tests et des branchements associés
à chaque test. Dans les cas simple, une séquence de tests peut se
concevoir comme une succession de filtres négatifs: seules les
réponses qui passent à travers le premier filtre
(c'est-à-dire échouent au test 1) sont confrontés au test
2; seules celles qui ont échoué au 1 et au 2 subissent le test 3,
etc. Si les tests successifs 1, 2, 3,... définissent chacun une
condition P1, P2 , P3, ... le concepteur peut déduire:
- si le test 1 est réussi, P1 est vrai;
- si le test 2 est réussi, P1 est faux et P2 est vrai;
- si le test 3 est réussi, P1 et P2 sont faux, mais P3 est vrai;
- ...
Considérons la figure 5.1 qui illustre le cas où le
sujet clique sur un point appartenant à deux zones sensibles (A et B).
Si chaque test positif conduit à sortir de l'interaction ou à
fournir une nouvelle réponses, alors la réponse sera
considérée comme appartenant à la première classe
testée. Comme l'illustre la figure 5.2, la réponse du sujet sera
identifiée comme appartenant à A dans l'analyse 1 car le test
définissant A précède celui concernant B. Dans l'analyse
2, la même réponse sera identifiée à B. Par contre,
dans l'analyse C, même si le premier test est positif, la réponse
sera confrontée au deuxième test. Seulement dans ce cas, la
double appartenance de la réponse à A et à B sera
détectée.
Figure 5.2: Influence de l'algorithme des tests sur l'identification
d'une réponse appartenant à plusieurs classes
L'algorithme de l'analyse 3 de la figure 5.2 est obtenu en choisissant l'option
'continue' dans les branchements proposés dans le dialogue
d'édition de la zone de réponse A. Cette possibilité est
notamment utile pour le traitement des réponses numériques (voir
ci-après). Elle permet aussi de décomposer une analyse de
réponse texte en plusieurs tests. Ce principe est illustré par la
figure 5.3. L'utilisateur doit répondre 'oxygène'. L'auteur
désire être sûr qu'il ne réponde pas "Ce n'est pas de
l'oxygène". Si la réponse du sujet contient le mot "pas", on
l'invite à recommencer et à formuler cette réponse par une
proposition positive. Si sa réponse ne contient pas le mot "pas", le
second test est réalisé. Si le second test est réussi, on
est donc sûr que la réponse du sujet ne contient pas le mot "pas",
mais bien le mot oxygène. Ce principe n'est cependant valable que si la
réussite du test1 est suivie soit d'une nouvelle réponse ou d'une
sortie de l'interaction. Elle ne fonctionne pas si l'auteur associe l'option
'continue' au test 1. Dans ce cas, le test 2 sera ensuite réalisé
quelque soit le résultat du test 1. L'auteur conservera alors le
résultat dans une variable qui sera utilisée comme condition
d'activation du test 2.
Figure 5.3: La réponse "oxygene" est testée uniquement si
le mot "pas" est absent.
Nous avons jusqu'ici décrit des algorithmes d'interaction très
simples. Les interactions reposent souvent sur des structures plus complexes.
Le concepteur considérera les catégories de feed-back suivantes:
- Les réponses correctes donnent généralement lieu
à un feed-back de confirmation. Le rôle de ce feed-back a
été largement mis en évidence par les théories du
renforcement. Selon les cas, ce feed-back peut se limiter à un son, au
passage à la question suivante. A l'opposé, le feed-back peut
fournir des informations complémentaires: "Très bien. C'est
effectivement Eddy Merckx qui remporta le tour cette année-là. Il
avait remporté le Giro quelques semaines auparavant."
- Les réponses quasi-correctes sont parfois assimilées au
précédentes. Il est cependant parfois utile d'en nuancer le
feed-back: "En effet, le Mont Blanc approche les 5000 mètres. Son
altitude exacte est 4807 mètres." ou "En effet, c'est bien de
l'hydrogène. Veuillez noter l'orthographe exacte". Ce type de feed-back
est notamment important lorsque le concepteur accepte des commandes
incorrectes, mais désire que l'utilisateur assimile progressivement les
commandes correctes afin d'éviter les cas ambigus.
- Les erreurs prévisibles donnent généralement lieu
à des feed-back d'erreur spécifique. Ces messages sont
plus efficaces (Schneiderman, 1982) que des messages génériques
du type 'réponse erronée' ou 'syntaxe incorrecte'. La conception
de ces feed-back repose sur la capacité du concepteur à anticiper
les erreurs les plus fréquentes des sujets. Dans les logiciels
éducatifs, ces feed-back portent aussi le nom de feed-back de
remédiation.
- Les autres réponses erronées sont généralement
traitées par un feed-back d'erreur générique. Si la
réponse du sujet ne correspond à aucune des bonnes
réponses et à aucune des mauvaises réponses, deux cas sont
possibles. Lorsque le concepteur peut garantir que toute autre réponse
est une réponses erronée, il convient de fournir un feed-back
d'erreur générique: "Ta réponse n'est pas correcte."
Toutefois, il n'est pas toujours possible de déterminer qu'une
réponse non identifiée soit incorrecte, surtout pour les
réponses texte. Dans ce cas, il est préférable de
présenter un feed-back de reformulation: "Je n'ai pas compris
votre réponse. Veuillez la formuler plus simplement." Cette classe de
réponses est définie par tout test permettant d'accepter
n'importe quelle réponse: une zone sensible occupant tout
l'écran, une condition toujours vraie (par exemple, 1=1), une zone de
déplacement d'objet occupant tout l'écran ou le pattern
'*'.
Chacune de ces catégories peut être traitée de
façon plus nuancée en fonction du nombre d'essais, du temps
écoulé ou de tout autre critère. Le nombre maximal
d'essais est généralement utilisé pour limiter le nombre
d'erreurs. Il permet par exemple de nuancer le feed-back de confirmation selon
que la réponse correcte ait été fournie au premier essai
ou ultérieurement. Nous recommandons au programmeur débutant de
construire l'algorithme d'interaction en considérant dans l'ordre:
1) les réponses correctes ou quasi correctes ( fournir un
feed-back de confirmation):
2) le nombre d'essais maximum ( communiquer la réponse attendue)
ou toute autre limite semblable;
3) les réponses erronées prévisibles ( fournir un
feed-back d'erreur spécifique);
4) les autres mauvaises réponses ( fournir un feed-back d'erreur
générique ou de reformulation).
La structure décrite ci-dessus couvre un certain nombre de situations
interactives, en particulier des situations didactiques, c'est-à-dire
des situations dans lesquelles les réponses sont évaluées
au sens pédagogique du terme. Cette structure simple n'est certes pas
pertinente pour toutes les situations interactives. Notre expérience
nous indique simplement que cette recette guide efficacement le concepteur
novice de didacticiels. Nous décrivons ci-après certains cas
d'interaction qui s'éloignent de la structure décrite