derflallys / ClicodromeduLeFFF

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Master 1 Informatique - Projet de programmation


Sommaire

  1. Projet : Le Clicodrome de LeFFF
  2. 1ère release - 15 février 2019
  3. Release finale - Avril 2019
  4. Pré-requis
  5. Manuel d'installation
    5.1 Déploiement d'une base de données
    5.2 Importation d'un lexique en base de données
    5.3 Lancement de l'application web
  6. Arborescence du projet
  7. Tests unitaires
  8. L'équipe
  9. Références
  10. Licence

Projet : Le Clicodrome de LeFFF

Le Lexique des formes fĺechies du francais, appelé le LeFFF est un lexique contenant des mots ainsi que les formes fléchies de chacun des mots (conjugaison et déclinaisons du mot). Aujourd'hui il n'existe pas d'outil permettant d'interagir avec ce lexique, que ce soit pour l'enrichir ou le corriger. L'objectif du projet est donc de réaliser une application web facilitant la manipulation de ce lexique.
Pour ce faire, nous allons devoir importer ce lexique dans une base de données et créer des algorithmes permettant de générer les formes fléchies d'un mot afin de ne pas avoir à les enregistrer en base de données.

1ère release - 15 février 2019

A ce stade du développment à été développé :

  • La base de données

  • Les scripts permettant de parser le LeFFF est de générer les données à importer

  • L'interface graphique

    • écran d'accueil
    • écran de recherche
    • écran d'ajout d'un mot
  • Traitement back-end

    • Recherche de mot dans la base de données
    • Ajout d'un mot en base de données (début)
    • Consultation d'un mot (sans génération des formes fléchies)

Objectifs de la seconde release :

  • Modification d'un mot
  • Génération des formes fléchies d'un mot
    • Lister l'emsemble des règles PFM
    • Implémenter le comportement de chaque règles
  • Importation du lexique depuis l'interface web
  • Exportation du lexique (avec ou sans les formes fléchies)
  • Gestion des utilisateurs/rôles sur l'application
  • Suppression d'un de mot
  • Signalement d'un mot
  • Gestion des tags
  • écran de consultation d'un mot
  • écran de modification d'un mot
  • Amélioration des écrans existants (Ergonomie)

Release finale - Avril 2019

Les fonctionnalités présentes dans notre application sont :

  • La base de données
  • Recherche / Consultation / Ajout / Modification de mots
  • Consultation / Ajout / Modification de catégories
  • Consultation / Ajout / Modification de règles
  • Consultation / Ajout / Modification de combinaisons de tags (associé à une catégorie)
  • Export du lexique de la base de données (Seulement des mots / catégories)
  • Import du lexique dans plusieurs format (Seulement des mots / catégories)
  • Génération de formes fléchies à partir des données de la base
  • Tests unitaires (front-end et back-end)

Amélioration possibles :

  • Gestion d'utilisateurs et de rôle + Restreindre les accès à certaines fonctionnalités selon les utilisateurs
  • Import/Export : ajouter le traitement des règles et des associations de tags
  • Génération des formes fléchies : avertir l'utilisateur quand un conflit entre 2 règles survient
  • Mise en place d'un historique des changements sur le lexique (garder une trace et une possiilité d'annuler certains changements)

Pré-requis

Symfony 4 : PHP 7.1.3 ou une version supérieure.
Angular 7 : NodeJS 8.x or 10.x. ainsi qu'un gestionnaire de package tel que NPM.

Manuel d'installation

Déploiement d'une base de données

Pour déployer une base de données sur votre machine, il vous faut installer un serveur Apache ainsi que MySQL.

Pour Windows : Installer une plateforme de développement web tels que XAMPP ou WAMP.
Ces plateforme possède un serveur apache, une ou plusieurs versions de PHP, un serveur MySQL ainsi qu'une interface d'administration de base de données : phpMyAdmin. Une fois la plateforme lancée vous pouvez accéder aux outils à l'adresse : http://localhost ou http://127.0.0.1

Pour Linux : Installer un serveur apache avec la commande :

$ sudo apt install apache2

Installer MySQL :

$ sudo apt install mysql-server

Installer PHP 7.2 :

$ sudo apt install php7.2 php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml  

Installer phpMyAdmin pour administrer vos base de données :

$ sudo apt install phpmyadmin

Vous pouvez ensuite relancer votre serveur apache avec la commande :

$ sudo service apache2 restart

Vous pouvez consultez l'état de votre serveur à l'adresse http://localhost. Pour accéder à phpMyAdmin, rendez-vous à l'adresse http://localhost/phpmyadmin

Création de la base de données de la base:
Après avoir configuré les accès pour MySQL/phpMyAdmin, rendez-vous sur PhpMyAdmin, connectez-vous et créez une nouvelle base de données depuis l'interface.
Nous vous conseillons de nommé votre nouvelle base "pdp-lefff" afin d'évitez des configuration supplémentaires.

Génération de l'architecture de la base de données :
Le framework Symfony et son ORM Doctrine va nous permettre de générer l'architecture de la base automatiquement.
Pour ce faire rendez-vous dans le dossier web/back-end et vérifiez que le fichier .env correspond bien à votre configuration précédente.
La ligne corresponsante est : DATABASE_URL=mysql://USER:PASSWORD@127.0.0.1:3306/DB_NAME
Il vous suffit de remplacer les informations USER et PASSWORD par les informations que vous avez configuré (par défaut "root" et "root").
Enfin vérifiez que DB_NAME correspond bien au nom de votre base de données.

La dernière étape consiste à installer les dépendances du projet avec la commande :

$ php composer.phar install

Puis installer les migrations d'architecture de la base de données avec la commande :

$ php bin/console doctrine:migrations:migrate

Félicitations, votre base est enfin configurée et prête à être utilisée !

Importation d'un lexique en base de données

Si vous souhaitez seulement tester l'application avec des données de tests, nous avons créé un jeu de données permettant de tester les différentes fonctionnalités de l'application web. Pour installer ces données, il vous suffit de lancer la commande depuis le dossier web/back-end :

// Nécéssite APP_ENV=dev dans le fichier .env
$ php bin/console doctrine:fixtures:load -n

Si vous souhaitez importer votre lexique dans la base de données, il vous suffit de lancer l'application web et de suivre les consignes indiquées sur l'écran d'import.

Félicitations, les données sont bien présentes dans la base de données !

Lancement de l'application web

L'application web est divisé en 2 parties. Chacune des parties est bien détaillée dans son manuel d'installation respectif.

Le front (le manuel complet) : Cette partie représente l'interface web. Basé sur le framework javascript Angular 7, il faut installer les dépendances du projet à l'aide de la commande à executer au niveau du code du front web/front-end/ :

$ npm install 

Il suffit ensuite de lancer la commande executant l'application ensuite disponible à l'adresse : http://localhost:4200

$ npm start

Le back (le manuel complet) : Cette partie gère le traitement des données, ainsi que les interactions avec la base de données. il faut installer les dépendances du projet à l'aide de la commande à executer au niveau du code du back web/back-end/ :

$ php composer.phar install

Il suffit ensuite de lancer la commande permettant d'executer l'application à l'adresse : http://localhost:8000

// Nécéssite APP_ENV=dev dans le fichier .env
$ php bin/console server:run

L'utilisateur n'a pas besoin de se rendre directement sur l'application du back-end (sur le port 8000). En effet l'utilisateur va naviguer sur l'application depuis le port 4200. Lorsque des données devront être affichées, c'est notre application Angular qui va envoyer une requête vers notre application "serveur" (sur le port 8000) pour récupérer les informations à afficher sur l'interface.

Félicitations, votre application web est lancée. Rendez-vous à l'adresse http://localhost:4200 pour y accéder !

Arborescence du projet

.
|-- prototypes
|-- compte_rendus_td
|-- docs
|-- web
    |-- back-end
    |-- front-end

Vous trouverez dans le répertoire prototypes le code des différents prototypes réalisés pour le fonctionnement de notre application.
Plus d'infos sur les prototypes...

Vous trouverez dans le répertoire compte_rendus_td les comptes rendus des différents TDs réalisés avec notre chargé de TD, au format LaTeX.
Voir les compte rendus des TDs.

Vous trouverez dans le répertoire docs la documentation du projet (cachier des besoins et mémoire) au format LaTeX.
Consulter la documentation.

Vous trouverez dans le répertoire web le code de l'application web du projet. Cette application possède un back-end réalisé en PHP avec Symfony et le front réalisé avec Angular.
Plus d'infos sur le back-end Symfony...
Plus d'infos sur le front-end Angular...

Tests unitaires

Les tests unitaires sont séparés entre ceux du back-end et du front-end. Pour tester les différentes parties de l'application, veuillez consultez les documentations du back et du front.
Documentation back-end
Documentation front-end

L'équipe

  • Fatima Ezzahra BAKIR
  • Oumayma Jellite
  • Guillaume NEDELEC
  • Alfred Aboubacar SYLLA

Références

  • http://www.labri.fr/perso/clement/lefff/

  • http://alpage.inria.fr/~sagot/

  • Sagot B 2018 "Informatiser le lexique: Modélisation, développement et exploitation de lexiques morphologiques, syntaxiques et sémantiques", HDR in Computer Science, Sorbonne Université, Paris, France

  • Clément, L., B. Sagot et B. Lang. 2004, « Morphology based automatic acquisition of large- coverage lexica», dans Proceedings of the 4th International Conference on Language Resources and Evaluation (LREC 2004), Lisbonne, Portugal, p. 1841–1844.

  • Sagot, B. 2010, « The Lefff , a freely available, accurate and large-coverage lexicon for french », dans Proceedings of the 7th International Conference on Language Resources and Evaluation (LREC 2010), La Valette, Malte.

Licence

Le Clicodrome de LeFFF est un projet universitaire - Université de Bordeaux.

About


Languages

Language:PHP 41.6%Language:TypeScript 37.0%Language:HTML 12.3%Language:TeX 3.7%Language:CSS 3.2%Language:Java 1.7%Language:JavaScript 0.5%