Actions

Projets

SELF/Évaluation de la production écrite française

De GBLL, TAL, ALAO, etc.

< Projets:SELF

Projet réalisé par Océane GIROUD et Célia MARTIN

< M2 IdL — TAL & ALAO/2020-2021

Lire la proposition de projet "SELF/diagnostic de la production écrite"

Contexte


Le prototype que nous allons créer s’inscrit dans le projet Innovalangue dont le but est de trouver des solutions innovantes pour apprendre et enseigner les langues. Dans ce projet général, notre travail s’inscrira plus précisément dans le projet SELF (Système d’Évaluation en Langues à visée Formative) qui vise à évaluer les productions écrites des apprenants (ici des apprenants en français). Dans ce contexte, nous voudrions proposer un prototype développé en Java qui permettrait de calculer différentes statistiques pour donner une idée de la production écrite de l’étudiant (sur un texte court de deux ou trois phrases produit dans le cadre de quelques exercices simples proposés à l'étudiant).

Présentation du projet


Ce projet s'inscrit dans le cadre des cours TAL&ALAO et JAVA.
Ce prototype en Java permettra de calculer différentes statistiques pour donner une idée de la production écrite de l'apprenant sur un court texte. Les évaluations se feront au niveau syntaxique majoritairement. Pour provoquer la production écrite des apprenants, nous proposons différents exercices tels que la production écrite d'un texte à partir d'une image ou la rédaction d'un court énoncé au passé-composé.
Cet outil sera utilisé par les enseignants pour avoir une idée du niveau de production écrite des apprenants selon leurs niveaux. Notre outil conviendra surtout aux apprenants débutants de niveaux A1-A2 du CECRL (Cadre Européen Commun de Compétences). Avant le projet SELF, les tests positionnants et/ou certifiants étaient évalués manuellement. Le TAL à donc permis l'automatisation de l'évaluation. Mais les exercices actuels n'utilisent que des exercices à choix multiples qui sont donc influencés par la compréhension du texte écrit et qui ne permettent donc qu'une évaluation par comparaison avec une référence. C'est pourquoi, nous proposons d'évaluer la production écrite libre d'un apprenant, et d'utiliser les outils de TAL pour avoir une évaluation plus fine et détaillée que cette simple comparaison.
A l'aide de notre module, nous tenterons de répondre à la question suivante : le TAL peut-il apporter une aide dans l’évaluation de la production de l’écrit des nouveaux apprenants en français ?

Ressources


  • Langage de programmation : Java
  • Bibliothèques :
    • CoreNLP : tokenisation et POS Tagging
    • Treetagger : lemmatisation (CoreNLP ne permet pas la lemmatisation pour le français)
  • Lexiques : Lexique3 (En ligne : http://www.lexique.org/) permet de vérifier l'existence des mots produits, il s'agit d'une base contenant 140000 mots du français avec leurs flexions (permet de ne pas passer par la lemmatisation pour vérifier l'existence d'un mot, il y a donc moins de possibilité d'erreurs qui pourraient venir de la lemmatisation). On y trouve également la fréquence des mots, on utilise donc cette base pour avoir une idée de la fréquence des mots utilisés par l'apprenant.



Fonctionnalités


Interface pour les utilisateurs


Ce que nous aurions voulu réaliser :

  • Exercices sur une page : Une fois les exercices complétés par l'étudiant, les réponses et les résultats sont enregistrées mais seront invisibles pour l’étudiant.
  • Résultats sur une autre page : Une fois les résultats enregistrés, ils pourront être visibles par le chercheur.


Nous n'avons pas le temps d'effectuer une interface graphique en Java qui permette notamment la consultation des résultats par le chercheur mais pas par l'apprenant. Nous nous sommes donc contentés d'afficher les exercices pour l'étudiant et d'enregistrer un fichier avec les résultats.

Étapes pour la réalisation du projet


Analyse sur le mot :

  • Tokenisation : à l'aide de la bibliothèque CoreNLP.
  • Vérifier la présence du mot dans un dictionnaire : s’il n’est pas présent, on a peut-être une erreur. Ressource : lexique3.

L'idée est de générer la liste des mots qui n'ont pas été trouvés par le système et donc de permettre au chercheur de se poser un certain nombre de questions autour de ces données (Si le mot n’existe pas soit on a une erreur : quel type ? Soit c’est un mot inventé : calque sur la langue ou autre ?)

Analyse sur la phrase :

  • Richesse lexicale : il y a deux types de richesse lexicale (quotient lemmes / occurrences et quotient hapax / lemmes), nous avons gardé la première qui sera intégrée à une classe java (une classe Phrase).
  • Cohérence lexicale : proportion de mots existants
    • Liste des mots non-reconnus : le chercheur pourra analyser la raison pour laquelle ces mots ne sont pas présents dans le dictionnaire (est-ce que la ressource n'est pas assez complète, est-ce qu'il y a une faute de frappe, une faute d'accord, un mot inventé etc. ?)
  • Catégorie des mots : richesse grammaticale (proportion de verbes / adjectifs par exemple)
  • Fréquence des mots
  • Répétitions
  • Accord : vérifier que l'accord est le même sur toutes les parties



Réflexions et problèmes rencontrés


Évaluations


Évaluations envisagées

  • Précision orthographique, grammaticale et lexicale : distance de Levenshtein (peut donner des informations sur l’accentuation graphique). Mais finalement nous nous sommes rendues compte que ce calcul était peu efficace dans notre cas, il faudrait passer par la forme phonétique d'un mot avant pour faire un premier tri, nous n'avons pas le temps nécessaire pour cela.
  • Types d’erreurs : accords, syntaxe, mots oubliés, erreurs de genre etc. C'est une tâche trop complexe pour le temps imparti.


Évaluations retenues


Nous allons concentrer nos évaluations au niveau syntaxique. Il n'y aura que très peu d'évaluation morphologique (cohérence lexicale).

  • Cohérence lexicale : vérifier si les mots existent.
  • Richesse lexicale : lister les lemmes et enlever les doublons (les doublons permettent de voir cela).
  • Richesse grammaticale : proportion de verbes / adjectifs par exemple.
  • Nombre de lemme.
  • Est-ce que le mot est fréquent ?
  • Quelles sont les répétitions ?
  • La longueur des mots, des phrases.
  • Les catégories des mots.
  • Voir si un groupe nominal a le même accord sur toutes les parties : voir si on a les mêmes étiquettes de genre pour tout le GN.
  • Liste de mots non-reconnus : sortir cette liste pour que l’apprenant puisse les voir et regarder pourquoi ces mots sont apparus.


S'il nous reste du temps:
  • Fluence de saisie : enregistrement de la saisir uniquement lors des corrections (suppression, ajout, etc.).
  • Précision orthographique : avoir une image permet de donner des références par rapport à celle-ci (il y a un chat noir : on aura des références comme chat et noir ou une liste de mots qui sont censés apparaître).
  • Cohérence grammaticale en utilisant CoreNLP (analyse en dépendance).


Exercices


L'idée est de trouver des exercices qui permettent d'avoir une production à la fois courte et spontanée de la part de l'apprenant, mais qui soit assez restreinte pour ne pas avoir trop de variabilité dans les réponses.

Idées non retenues


Idées d'exercices pour provoquer la production de l'apprenant :

  • "Résumer votre journée en une phrase" : l'énoncé est trop vague, il y aura une variabilité très forte d'un exercice à l'autre, il faut donc davantage cadrer la réponse.
  • S'inspirer du questionnaire de PROUST : en sélectionnant les points permettant d'avoir une production à la fois courte et contrôlée.

Ce qu'on a gardé


Voici des exercices pour provoquer la production de l'apprenant :

Niveau syntaxique (pour la production de phrases) :
  • Demander à l’apprenant d’écrire une phrase au passé-composé ou au pluriel (par exemple) : pour vérifier le temps ou voir pourquoi l’apprenant s’est trompé.
  • Questions sur une image si on veut des réponses plus ciblées : que fait le chien sur cette photo ? ou décrire cette photo



Problèmes rencontrés :


  • Projet très vaste : se focaliser sur certains calculs car nous n’avons pas le temps nécessaire pour tout réaliser. Nous ne savions pas quelles évaluations prioriser.
  • Trouver les exercices pertinents pour que le contrôle de la production soit mesuré (la production libre ne pas doit pas être trop contrôlée).
  • L'utilisation de CoreNLP nous a posé quelques problèmes.
    • Son intégration dans le script
    • Impossible de lemmatiser pour le français : il a donc fallu trouver une alternative (Treetagger)
  • En Java, savoir quelles classes créer et quelles méthodes mettre dans quelles classes.
  • Créer les exercices, notamment ceux demandant une image : il a été nécessaire de créer une interface graphique.
    • La récupération des phrases produites dans les champs textes de l'interface et leur traitement



Prise de recul par rapport aux solutions


Prolongements possibles :


  • Fluence de saisie : enregistrement de la saisir uniquement lors des corrections (suppression, ajout, etc.).
  • Précision orthographique : avoir une image permet de donner des références par rapport à celle-ci (il y a un chat noir : on aura des références comme chat et noir ou une liste de mots qui sont censés apparaître).
  • Cohérence grammaticale : en utilisant CoreNLP (analyse en dépendance).
  • ELIAphone ?
  • Distance de Levenshtein
  • Types d’erreurs : accords, syntaxe, mots oubliés, erreurs de genre etc.


Nous pourrions également enlever les répétitions de mots grammaticaux, car ce n'est pas très pertinent de connaître le nombre de fois où le est utilisé.

Exemple de sortie :


Voici la synthèse des exercices de l'apprenant :

Pour l'exercice 1, l'apprenant n'a pas donné la bonne réponse, puisqu'il a produit la phrase suivante : L'homme traversa la rue rapidement.
Pour l'exercice 2, l'apprenant a donné la bonne réponse.
Dans l'exercice 3, l'apprenant a produit la phrase suivante : Le petit chat marche. Il a l'air content.
Dans l'exercice 4, l'apprenant a produit la phrase suivante : Le petit garçon a aussi l'air content. Il mange vite.
La longueur moyenne des mots de la production : 3.7
Les catégories utilisées : {NC=3, V=4, DET=4, PUNC=4, ADV=2, N=1, CLS=2, ADJ=4}
La longueur moyenne des phrases : 5.0
Le nombre de mots sans doublons utilisés : 12
La richesse lexicale : 0.6
Le mot content est répété 2 fois.
Le mot l' est répété 2 fois.
Le mot a est répété 2 fois.
Le mot Le est répété 2 fois.
Le mot air est répété 2 fois.
Le mot petit est répété 2 fois.
Le mot Il est répété 2 fois.
Tous les mots utilisés par l'apprenant existent.


Les résultats sont plutôt satisfaisant même s'il pourrait être possible de les améliorer encore : notamment en n'intégrant pas les mots grammaticaux dans l'analyse comme dit plus haut.

Distance entre l'objectif et la réalisation :


Finalement, nous avons réalisé une interface graphique très simple pour intégrer les exercices 3 et 4 : Décrire une image en deux phrases. La lemmatisation n'a pas pu être réalisée avec CoreNLP car cette fonctionnalité n'est pas disponible. Nous avons donc utilisé TreeTagger.
Nous avons toutes les fonctionnalités annoncées sauf la vérification de l'accord (nous n'avions plus le temps comme nous avons été obligées d'introduire la petite interface graphique). Pour l'analyse de la production de l'apprenant nous avons utilisé la tokenisation, la vérification de l'existence d'un mot, la richesse lexicale, la cohérence lexicale, la catégories des mots et la fréquence des mots répétés pour donner au chercheur un résultat sous forme de fichier txt téléchargé sur l'ordinateur où est lancé le script.