Actions

Projets

Projets:Apprendre en Cuisinant

De GBLL, TAL, ALAO, etc.

Version datée du 30 décembre 2020 à 20:06 par Lmongin (discussion | contributions) (Tout refait)

< M2 IdL — TAL & ALAO/2020-2021

Projet réalisé par Sanda HACHANA et Louis MONGIN

Introduction

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. De plus, il arrive souvent qu’un locuteur confonde deux phonèmes. Par exemple, les phonèmes /y/ et /u/ 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.

II. Notre proposition

Notre application propose à l’utilisateur de s'entraîner à prononcer les sons qui lui posent des problèmes tout en lui faisant un retour sur sa prononciation et de quelle manière le mot doit être prononcé.

III. Présentation du projet

1. Besoins

Apprendre des nouveaux mots en français tout en cuisinant : notre appli permet donc d'apprendre à cuisiner en améliorant son vocabulaire ainsi que sa prononciation dans une langues.

2. Public

Pour des apprenants qui veulent apprendre le français. Il serait mieux d'avoir un niveau A1 au moins ou quelques bases pour pouvoir mieux comprendre les recettes et réutiliser ces mots. Ce serait également mieux d'avoir des connaissances en phonétique, savoir lire l'api. L'application s'adresse également tout particulièrement aux personnes qui aiment cuisiner puisque de cette manière, on peut apprendre tout en cuisinant.

3. Objectifs

Créer une application pour les fans de cuisine : apprendre 5 mots culinaires par jour tout en découvrant des nouvelles recettes Avoir un corpus de recette dynamique, une recette différente à chaque utilisation Apprendre des mots selon leur catégorie grammaticale Créer un système pour vérifier la prononciation des phonèmes : script praat en python

Réflexions

I. EasyAlign et les phonèmes en option

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 Contenu de l’invite de commande Screenshot


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