Actions

Projets

Différences entre versions de « Apprendre en Cuisinant »

De GBLL, TAL, ALAO, etc.

(Mise à jour introduction)
m
Ligne 28 : Ligne 28 :
  
 
<br>Marmiton car le site indique contenir plus de 70 000 recettes, de cette manière on a un corpus de recette dynamique.
 
<br>Marmiton car le site indique contenir plus de 70 000 recettes, de cette manière on a un corpus de recette dynamique.
Problème de corpus de libre d’utilisation ?
+
Problème de corpus de libre d’utilisation
 
https://www.marmiton.org/sp/aide/conditions-generales-utilisation.html
 
https://www.marmiton.org/sp/aide/conditions-generales-utilisation.html
Faudrait indiquer du coup que la recette provient de marmiton.<br>
+
<br>
 
<br>
 
<br>
 
== Développement ==
 
== Développement ==

Version du 31 décembre 2020 à 13:52

< M2 IdL — TAL & ALAO/2020-2021

Projet réalisé par Sanda HACHANA et Louis MONGIN

Introduction


Apprendre en Cuisinant est une application ayant pour but d’améliorer la prononciation d’un apprenant en français à travers des recettes de cuisine.

I. Problématique


Selon la langue de l’apprenant, celui-ci aura des difficultés à prononcer correctement des sons français éloignés et/ou inexistants dans sa langue maternelle. Il arrive aussi souvent qu’un locuteur confonde deux phonèmes et ait du mal à les distinguer C’est le cas par exemple des phonèmes /y/ et /u/ qui sont souvent confondus par les locuteurs anglophones car ils sont très proches phonétiquement. Il en est de même pour les phonèmes /œ/ et/ø/. Les voyelles nasales sont également souvent difficiles à prononcer car peu de langages les utilisent. Il peut être difficile pour un apprenant de savoir si oui ou non sa prononciation d’un mot est correcte sans locuteur natif pour le lui indiquer. Il peut également être frustrant de s'entraîner à parler une langue pour améliorer sa prononciation sans savoir si les sons que l’on produit sont corrects. De plus, de tels exercices de prononciation peuvent être redondants pour l’apprenant et donc le décourager.

II. Notre proposition


L’objectif principal de notre application est de proposer à l’utilisateur de s'entraîner à prononcer les sons qui lui posent des problèmes tout en lui faisant un retour sur sa prononciation. Cet exercice de prononciation pouvant être redondant, l’apprenant va apprendre à travers des recettes de cuisine. De cette manière, l’appli lie l’activité d’apprentissage à une activité amusante et ayant un but défini : cuisiner un plat. Ceci est tout particulièrement utile pour motiver de jeunes enfants à apprendre une langue tout en apprenant l’art de cuisiner. En plus de cet exercice de production orale, l’utilisateur va pouvoir lire la recette en français et donc entraîner sa compréhension écrite. L’application ne propose pas de traduction de la recette, elle ne sera écrite qu’en français. C’est pourquoi il serait mieux pour l’apprenant d’avoir au moins un niveau A1 pour pouvoir mieux comprendre les recettes et réutiliser les mots. Néanmoins si la recette lue s’avère trop difficile pour l’apprenant ou qu’elle ne lui plaît pas, il aura la possibilité de charger une autre recette, qui sera différente à chaque utilisation. De cette manière, tant que l’utilisateur aime cuisiner, il trouvera une recette qui lui plaît. Pour finir, l’application propose à l’apprenant des mots variés, de catégories grammaticales différentes. Les mots à prononcer étant choisis aléatoirement, il pourra rencontrer des mots qu’il ne connaît pas et donc améliorer son vocabulaire. L’application est disponible pour tout locuteur souhaitant améliorer son français et cuisiner.

Réflexions

I. EasyAlign et les phonèmes en option


Pour vérifier la prononciation des phonèmes, nous avons décidé d’utiliser Praat et son plugin EasyAlign.

II. Le choix du corpus


Marmiton car le site indique contenir plus de 70 000 recettes, de cette manière on a un corpus de recette dynamique. Problème de corpus de libre d’utilisation https://www.marmiton.org/sp/aide/conditions-generales-utilisation.html

Développement

I. Contenu des scripts


Le manuel d'utilisation se trouve dans le README.

1. Python


Nous avons utilisé Python pour plusieurs tâches de notre projet.


La première étape consiste à la création d’un script qui permet de faire du web scraping afin de récupérer une recette aléatoirement sur le site marmiton https://www.marmiton.org/. Pour cela nous avons utilisé la librairie BeautifulSoup. Ce code se trouve dans le script getrecipe.py. Le site de Marmiton propose une “recette au hasard” dans le menu de la page, notre script récupère donc tout d’abord le lien de cette recette.


Ensuite, on récupère les informations de la recette qui nous intéresse, le texte avec les indications ainsi que le titre et les ingrédients. Alors que nous afficherons toutes ces informations à l’utilisateur qui pourra reproduire la recette, nous ne récupérons que le texte pour le choix des mots, pour éviter les erreurs de POS tagging.


Contenu du fichier texte pour CoreNLP VS Contenu de l’invite de commande

Recette.png



Ensuite, nous avons créé un deuxième script qui permet d'annoncer à l’utilisateur quel mot il doit prononcer et d’enregistrer sa prononciation dans un format audio WAV. On retrouve cette partie dans le script record.py.


Dans un second temps, nous nous sommes occupés de la partie PRAAT. Nous avons créé deux scripts PRAAT (script1.praat et script2.praat) qui effectuent les parties 1 (macro-segmentation), 2 (phonétisation) et 3 (phone-segmentation) de EASYALIGN. Dans le premier script on retrouve les deux premières parties de EASYALIGN. Ensuite, il nous faut modifier le textgrid généré par script1.praat afin de modifier la transcription phonétique et d’ajouter les phonèmes options (indiqués par une *). Le script2.praat utilise ce textgrid modifié pour faire l’alignement des phonèmes optionnels entre la prononciation de l’utilisateur et la transcription du mot proposée par PRAAT. Pour lancer ces scripts PRAAT, nous avons écrit des scripts python praatrun1.py (qui lance le premier script PRAAT et modifie le textgrid) et praatrun2.py qui lance le deuxième script PRAAT.



Enfin, nous avons créé le script phon.py qui regroupe plusieurs étapes de notre projet. La première est la récupération des phonèmes du mot en SAMPA à partir du textgrid créé grâce aux étapes précédentes sur PRAAT. La deuxième étape du script fait la conversion de SAMPA à API à partir du fichier TSV que nous avons créé. La troisième étape, permet de comparer la prononciation de l'apprenant avec celle du lexique phonétisé. C’est cette dernière étape qui annonce le résultat à l’utilisateur, en lui disant si oui ou non sa prononciation est correcte.

2. Java


Nous avons utilisé Java pour choisir aléatoirement quatre mots dans notre recette. C’est avec le POS-tagging de CORENLP que nous avons pu réaliser cette tâche. Dans notre code JAVA, on crée un fichier pour chaque mot (un fichier verbe, un fichier nom, un fichier adjectif et un fichier adverbe) contenant chacun un seul mot de la même catégorie.


II. Difficultés


1. CoreNLP


Nous avons rencontré plusieurs difficultés pour la partie JAVA. Premièrement, nous avons remarqué que le POS-tagging de CORENLP que nous avons utilisé n’est pas tout à fait exact. En effet, la catégorie grammaticale des mots n’est pas fiable. CAPTURE DECRAN

Ensuite, nous avons eu des soucis avec ECLIPSE et nous n’avons alors pas pu continuer notre travail.

2. Encodage


Les textgrids qui utilisent des mots avec accents “é, è, ê, …” se sauvegardent en utf-16 et non pas en UTF-8.

CAPTURE

Donc création d’une fonction qui vérifie l’encodage du fichier.

3. Lier Java et Python


L’affichage de l’application étant majoritairement effectué en python, nous avons décidé de lier java et python à partir de python ou d’un script bash. Nous avons eu des difficultés pour lancer Corenlp sans utiliser Eclipse (qui déjà nous posait des problèmes). Comment lier les dependencies avec les scripts ?


4. Windows vs Linux


Nous avons souhaité faire fonctionner l’application sur les systèmes d’exploitation Linux et Windows. Problèmes de certaines librairies python qui ne fonctionnent pas avec Linux par exemple sounddevice, os. Praat et easyalign qui ne sont pas disponibles sous linux. Possibilité de les utiliser et installer avec wine mais problèmes lorsque que l’on veut écrire appeler les scripts praat avec les chemins sur le ‘faux’ disque C:.


Pour remédier à ces problèmes, ayant tous les deux accès à Windows, nous avons décidé de nous concentrer en priorité à ce que l’application fonctionne sous cet OS.

Evaluation

I. Problèmes


  • erreurs dans le lexique qu’on a utilisé : les deux son o et (c à l’envers). Par exemple olive o ou c à l’envers.
  • on a commencé à lier java et python mais prob pour lancer corenlp avec lignes de commandes
  • Si on enregistre plusieurs phonèmes comme devant être noté en options alors easyalign n’arrive pas à bien fonctionner.
  • Les nasales ne sont pas bien prises en compte dans easyalign

II. Améliorations


  • Proposer à l’utilisateur des recettes typiques française, pour cela, détecter sur le site un tag “français” par exemple, ou utiliser un site/corpus différent et libre d’utilisation. Le but ultime serait d’utiliser notre propre site de recette avec des plats typiques revisités à la façon Sandouis.
  • Automatiser le lien de Python avec Java pour ne pas avoir à demander à l’utilisateur de lui même lancer les scripts java
  • Proposer à l’utilisateur d’indiquer au début quels phonèmes lui posent problème


Liens

I. Bibliographie


Corpus de recettes : Marmiton : https://www.marmiton.org/

Lexique phonétisé : https://gricad-gitlab.univ-grenoble-alpes.fr/pedagogies-multimodales/lexiques-phonetises

Praat : EasyAlign : Phonèmes en option : Remédiation phonétique et phonologique en FLE par une approche multimodale chez les apprenants japonophones - Sylvain Coulange https://dumas.ccsd.cnrs.fr/dumas-01387387/document partie 7.1.2 (p98)

  • Librairies Python :

BeautifulSoup : https://www.crummy.com/software/BeautifulSoup/bs4/doc/

  • Librairie Java :

CoreNLP : https://stanfordnlp.github.io/CoreNLP/


II. Lien du projet


Lien GitHub du projet ApprendreEnCuisinant : https://github.com/Louielo/ApprendreEnCuisinant