Actions

Projets

SavoirConjuguer

De GBLL, TAL, ALAO, etc.

Révision datée du 5 janvier 2021 à 18:57 par Wdeng (discussion | contributions) (→‎Java)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

< M2 IdL — TAL & ALAO/2020-2021

Projet réalisé par Wenjing DENG et Ziyi TONG

Introduction


SavoirConjuguer est un programme pédagogique ayant pour but de générer des exercices de conjugaison automatiquement à partir d'un corpus choisi.


Problématique


La conjugaison est l'une des caractéristiques les plus importantes de la langue française. Masculin, féminin, singulier, pluriel, les accords du temps... les verbes français ont des formes très spéciaux et variés selon le contexte de textes, ce qui rendent le vocabulaire français plus riche mais aussi plus compliqué à apprendre. Savoir conjuguer est le premier pas pour apprendre le français. Il est donc nécessaire de disposer d'un outil pédagogique qui puisse générer automatiquement les exercices afin de permettre les apprenants du français de pratiquer la conjugaison.


Présentation de notre projet


Notre projet s'intéresse à proposer des exercices de conjugaison aux apprenants du français. Les exercices sont générés automatiquement à partir d'un corpus choisi, en utilisant Java CoreNLP. Concernant le type d'exercice, les exercices sont désignés sous la forme des " textes à trous " comme l'exemple ci-dessous :


Exercice 1


A l' approche de Noël , essayons de positiver . Certes , il n' y aura pas de grand rassemblement : la jauge (1) ________ (avoir) été fixée à six adultes pour le réveillon . Peut-être même (2) ________ (falloir) -t-il renoncer à se rassembler , y compris en petit comité . Mais du moins serons -nous épargnés par la malédiction qui frappe chaque année cette bien mal-nommée trêve des confiseurs : l' engueulade du repas de famille . , Du côté de celle de mon épouse , le sujet qui fâche , c' est le nucléaire . Il (3) ________ (falloir) dire que certains de ses membres travaillent dans le secteur . Cela revient à faire , a priori , du ci-devant chroniqueur de la transition écologique un ennemi de classe , et je dois reconnaître que j' y (4) ________ (mettre) parfois du mien . Je me souviens de la réaction outrée d' un ami de la famille lorsque j' avais évoqué , pour me moquer , la présence de crocodiles phosphorescents dans la cuve de refroidissement d' une centrale . , A vrai dire , j' ai bien du mal à avoir une position tranchée . (5) ________ (null) -je pour ou contre le nucléaire ?


Chaque exercice contient 10~20 trous variés selon la longueur du texte. Un score et une correction sont proposés après chaque exercice. L'utilisateur peux choisir continuer ou quitter le programme après chaque exercice, pourtant, une fois une exercice commence, il ne serait pas possible de quitter le programme avant remplir tous les trous.

  • Public visé : en considérant que ce forme d'exercice demande un certain niveau de compréhension écrite ainsi que une connaissance fondamentale sur la conjugaison française, notre prototype conviendrait surtout aux apprenants de niveaux A2-C1 du CECRL.


Type d’exercice choisi


Pourquoi choisir "texte à trous" pour pratiquer la conjugaison ? Parce que ce type d'exercice évalue et exerce plusieurs compétences langagières dans le même temps. Un exercice de conjugaison du type texte à trous peut apporter les entraînements dans ces aspects langagières :

  • Lecture/Compréhension écrits : comme l'apprenant devrait d'abord lire le texte et comprendre le contexte afin de trouver le temps et le mode du verbe cohérent, il permet l'apprenant pratiquer sa compréhension écrite.
  • Vocabulaire : Comme les textes sont extraits à partir des émissions France Culture, dans ce type d'exercice, l'apprenant rencontrerait beaucoup de nouveaux mots et expressions authentiques, ce qui lui permettrait enrichir son vocabulaire.
  • Conjugaison : Pour bien conjuguer, l'apprenant dois comprendre le contexte du texte et identifier les voix du verbe, le mode du verbe et le temps du verbe corrects, ce qui demande à la fois une connaissance grammaticale et une bonne maîtrise de conjugaison régulière ou irrégulière.


Ressources


Cette partie cite les corpus et les bibliothèques qu'on a utilisé.

Corpus


  • Textes extraits de France Culture

Pour le corpus, nous avons choisi les transcriptions du podcast La Transition de France Culture [1] parce qu’il y a plus de variations du verbe par rapport aux autres émissions et aux autres journaux. Ce corpus contient 83 textes et environ 4000 mots pour chaque texte. De ce point de vue, cet outil est flexible parce que l’utilisateur peut remplace ce corpus de France Culture par d’autre corpus qu’il préfère.

  • Corpus ABU

Etant donné que CoreNLP ne propose pas de lemmatisation pour le français, nous avons du trouver une alternative pour récupérer les lemmes. Nous avons donc choisi le corpus ABU qui contient les verbes et leur conjugaison.


Bibliothèques


  • Beautiful Soup

Nous avons fait du web-scraping avec Python en utilisant Beautiful Soup [2].

  • Stanford CoreNLP

Nous avons analysé le corpus à l'aide Stanford CoreNLP [3] en Java.


Fonctionnalités


Trois fonctionnalités principales ont été réalisées :

  • Construction du corpus
  • Génération de textes à trous
  • Scores


Python


Nous avons utilisé Python pour scraper les transcriptions de Podcast La Transition de France Culture et pour construire un corpus.

Le web scraping consiste en deux étapes. La première étape est de récupérer les liens des épisodes en utlisant la librairie BeautifulSoup. Le code se trouve dans franceculture_url.py.

Ensuite, nous avons récupéré le contenu de chaque transcription et l'enregistrer dans un fichier txt. Le code se trouve dans franceculture_articles.py. Pour faciliter le traitement du corpus en Java, nous avons supprimé les balises et les liens inutiles dans le corpus.

Enfin, nous avons un corpus qui contient 83 textes. Pour chaque texte, il y a environ 4000 mots.


Java


Les fonctionnalités principaux du projet sont programmées en Java.


Génération de textes à trous


Afin de réaliser cette fonctionnalité, nous avons d'abord importé le corpus (article.txt) dont chaque texte occupant une ligne. Ensuite nous avons utilisé la tokenization et le POS-tagging de CoreNLP pour trouver des verbes dans un texte. Enfin, nous avons remplacé des verbes par des trous "_____". Dans le même temps, les tokens remplacés sont stocké dans une liste pour la fonctionnalité suivante. Les scripts concernant la génération du texte à trous se situent dans le fichier ParseFr.java.


  • POS Tagging


Cette tâche se divise en trois étapes. La première étape est de définir le pipeline de CoreNLP et déclarer ses propriétés. Nous avons ajouté les annotateurs pour le pos tagging. Le code se trouve dans CoreNLPSetup.java. Ensuite, une fois l’analyse syntaxique est effectuée, nous avons pu récupérer les tokens et leur catégorie grammaticale (pos tag). Enfin nous avons remplacé les verbes à conjuguer par le trous.


  • Lemmatisation


Puisque CoreNLP ne dispose pas de fonction "lemmatisation" pour le français, nous avons utilisé le corpus ABU. Nous avons d'abord chargé le fichier ABU.csv et stocké le contenu dans un hashmap. Nous avons traité le corpus ligne par ligne, et pour chaque ligne, la première élément était la clé et la deuxième élément était la valeur, pour ce faire, nous avons obtenu un hashmap structuré avec les verbes conjugués comme clé, et les lemmes comme valeurs. Ainsi, nous avons pu facilement récupérer les lemmes pour les verbes en fonction de nos besoins.

Un exemple de la structure du Corpus ABU :

abacule abacule Nom:Mas+SG
abaissa abaisser Ver:IPSim+SG+P3
abaissable abaissable Adj:InvGen+SG
abaissai abaisser Ver:IPSim+SG+P1


Scores


À la fin de chaque tour, l'utilisateur peut voir le score actuel. Pour consulter le score final, il faut quitter le jeu.


Guide de fonctionnement


Ceci est la guide de fonctionnement du programme SavoirConjuguer, il est pour l'objectif d'aider l'utilisateur utiliser cette programme.

  • Lancer le programme: exécuter le fichier test.java
  • Commencement : taper 1 pour commencer
  • Chargement du texte généré : le temps d'exécution est un peu long, Veuillez patienter.
JeuCommence.png


  • Affichage de l'exercice : on vous conseil de cliquer 'Word wrap' pour rendre le texte plus lisible.
  • Réponse : saisir votre réponse selon l'ordre des trous
ExerciceEtReponse.png


  • Score : le score sera calculé après avoir tous les réponses saisit par l'utilisateur, le résultat de l'exercice et les corrections seront également affichés.
Res et score.png


  • Continuer ou Quitter : taper 1 pour continuer, 0 pour quitter
ExerciceSuivant.png


  • Historique : avant de quitter le programme, vous obtenez l'historique de score incluant tous les exercices que vous avez fait sur ce programme.
ScoreHistorique.png


Evaluation


Cette partie décrit les problèmes qu'on a rencontré dans le domaine de programmation et éventuellement tous les problèmes qu'on n'arrive pas à résoudre. Trois problèmes principaux qui influencent la manifestation du résultat du projet sont présentés : problème de la durée d'exécution, problème de l'interface graphique, problème de l'exécution en console. Nous avons rencontré aussi d'autre problème sur l'espace et les erreurs d'annotation de CoreNLP. L'écart entre la réalisation et l'objectif est également mentionné.

Problème de programmation


  • Durée d'exécution

CoreNLP fonctionne trop lentement. Le temps d'exécution du programme se trouve donc allongée et le chargement d'article prend 2~3 minutes.

  • Interface graphique

Le programme fonctionne encore plus lentement avec cela. Nous avons donc renoncé à l'interface graphique utilisateur.

  • Exécution en console

Nous avons essayé de exécuter notre programme en console mais ça ne fonctionne pas. Il faut donc l'exécuter avec un IDE comme Eclipse ou Intellij.

  • Traitement du corpus

Au début, nous avons choisi le corpus Frantext. Pour le traitement du fichier XML, nous avons utilisé l'API Java Dom4j qui permet de lire du XML, mais le traitement du fichier XML est plus difficile que celui du fichier TXT/CSV. Nous avons enfin choisi de construire un corpus pour notre projet.


D'autres problèmes


  • Problème de CoreNLP

CoreNLP génère parfois des annotations incorrects lors qu'il parse le texte. Dans l'exemple suivante, un adjectif est remplacé par un trous, parce qu'il est mal étiqueté.


Le premier est constitutionnaliste , le second copréside le comité de gouvernance de la Convention (7) ________ (citoyen) pour le climat.


Exemple


  • Problème de l'espace entre des mots et des ponctuations

Car nous avons tokenisé le texte pour faire le POS-tagging et récupérer les verbes, la tokenisation entraine le problème de l'espace entre des mots et des ponctuations. Nous n'avons pas réussi à les éliminer.



Distance entre l'objectif et la réalisation


  • La plus grande différence entre l'objectif et la réalisation c'est le temps qu'il faut pour l'exécution du programme. Nous avons réalisé la plupart des fonctionnalités qu'on a mentionné dans le plan, cependant le programme est plus lourd/compliqué au niveau de programmation que prévu. Par conséquent, il prend 2-3 min pour générer chaque exercice.
  • La deuxième plus grande différence concerne la façon d'exécution. Après plusieurs essais, nous n'avons pas pu arriver à manipuler le programme à travers le console. Ainsi, tous les tests sont réalisés avec un outil de développement de JAVA, dans notre cas, nous avons utilisé Eclipse.


Discussion


Conclusion


Nous avons réalisé la plupart de fonctionnalité qu'on a désiré de faire, comme l'annonce du plan. Bien qu'il y ait encore des défauts, le programme SavoirConjuguer atteint notre objectif. L'exercice du type "textes à trous" est la meilleur choix pour pratiquer non seulement la conjugaison mais aussi les autres compétences langagières grammaticales. Nous voudrons que ce programme puisse aider tous les apprenants du français à familiariser avec la conjugaison et enfin écrire avec aisance en français.


Améliorations possibles


  • Premièrement, par rapport au corpus, le meilleur choix est de choisir un corpus construit par les enseignants de FLE pour s’approcher le plus possible des besoins spécifiques des apprenants. Par exemple, un corpus qui permet à l’utilisateur de pratiquer tous les modes et temps verbaux. La longueur de texte de notre corpus est aussi un problème. Un texte de 4000 mots peut être trop long pour les apprenants. Il faut raccourcir manuellement les textes ou en extraire des phrases. Pour l’instant, nous nous concentrons sur l’écrit. Pour ceux qui veulent améliorer leur expression orale, un corpus de français oral peut être ajouté à notre programme.
  • Deuxièmement, l'interface graphique améliorait beaucoup l'expérience des utilisateur. IDE ou console vont faire peur des utilisateurs ayant pas suivre une formation à propos de programmation. Si on a encore du temps, on continuerait notre essais sur GUI.java et créerait un interface simple pour des utilisateurs.
  • Troisièmement, au niveau de programmation, il serait mieux si le programme fonctionne plus vite. En raison de notre compétence limitées, les scripts ne sont pas structuré de la façon la plus efficace. Rendre le programme plus vite et plus efficace sera un très bon avancement.


Liens

Lien vers notre projet