Corrections des textes
Si l'utilisateur doit donner sa réponse sous la forme d'une liste (de mots, de nombres) alors la correction peut contenir :
- une liste des expressions correctes séparées par un délimiteur choisi;
- une liste d'expressions à exclure séparées par le même délimiteur.
Les deux listes sont séparées par #. (Voir l'exemple ci-dessous).
Le champ correction contient l'instruction suivante :
LIST(délimiteur;point gagné;point perdu).
délimiteur est l'expression rationnelle qui va permettre la découpe des listes, point gagné est le nombre de points gagné pour chaque élément correct de la liste; point perdu est le nombre de point perdu pour chaque élément indésirable de la liste d'exclusion.
Exemple:
On attend une réponse contenant les mots Papa, Maman, Frère et soeur. Cousin n'est pas attendu, ni Cousine, ni Grand-Père, ni Grand-Mère.
Le correcteur suit:
Les listes : Papa+Maman+Frère+Soeur#Grand-Père+Grand-Mère.
La consigne de correction: LIST([^+]+;1;-0.75) ([^\s] est la regex qui découpe la chaîne selon les +).
Pour découper une chaine selon un autre caractère, par exemple le tiret (-), la regex devient : [^-]+.
Pour découper une chaine selon les espaces : [^\s]+.
La comparaison n'est pas, par défaut sensible à la casse. Pour qu'elle le devienne, ajouter A en fin de consigne: LIST([^+]+;1;-0.75)A
S'il est nécessaire de comparer la réponse utilisateur avec plusieurs groupes de mots clefs alors, on peut disposer les listes en ligne:
Papa/Maman/La bonne/moi#Le voisin/la voisine/le cousin
Frère/Soeur/Demi-frère/demi-soeur#cousin/cousine