Recherche:Les chemins du langage/Programme de listes de mots

Une page de Wikiversité, la communauté pédagogique libre.


Les chemins du langage

Toute réaction ou commentaire par rapport à ce travail de recherche sont les bienvenus sur cette page de discussion.

Cette page fait partie de l’espace recherche de Wikiversité et dépend de la faculté langues. Pour plus d'informations, consultez le portail de l'espace recherche ou rendez-vous sur l'index des travaux de recherche par faculté.


À terme un formulaire Web pourrait permettre à chacun d'éditer son texte en ligne (ex : via CKEditor), avec deux fonctions JavaScript de calcul et suggestion d'homographe existant sur le Wiktionnaire.

Idéalement il faudrait pouvoir afficher et éditer les longues listes de mots de façon fluide, et y lancer des recherches de type mots-croisés (avec jokers...).

Modèle[modifier | modifier le wikicode]

En termes d'architecture de base de données Une approche par une entité "Mot" (sensible à la casse) dont on peut calculer des liens entre ses instances en forme normale de Boyce Codd, serait très consommatrice en calcul, même avec du cache.

Il conviendrait donc de persister une indexation des relations entre les mots dans une autre entité. Cette dernière sera plus générale que "figure de style", car elle devra englober les synonymes et antonymes, voire les dérivés et les étymons.

CREATE TABLE `word` (
  `id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `nature_id` int(11) NOT NULL,
  `spelling` varchar(255) COLLATE utf8_bin NOT NULL,
  `pronunciation` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `romanization` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Les faux-amis pouvant être totaux ou partiel, les différents sens de chaque mot devront également être répertoriés.

Vue[modifier | modifier le wikicode]

Idéalement un tableau triable, filtrable et modifiable devrait permettre toutes les consultations possibles, ainsi que des mises à jours fréquentes des corpus, éventuellement en collecticiel.

Étant donnés les temps de chargement de milliers de mots, une pagination est envisagée.

Comparatif des tableurs en ligne[modifier | modifier le wikicode]

Différents outils d'édition de tableau en ligne existent[1][2], en voici un état de l'art réalisé en 2018 :

Bibliothèque Tarif Dépendances Commentaire
ag-Grid[3] Payant
Backgrid.js[4] Gratuit Backbone.js
Bootstrap table[5] Gratuit jQuery, Bootstrap Testée avec erreur sur jQuery 3.3.1 : le chargement des data en masse et les traductions en français ne fonctionnent pas.
Clusterize.js[6] Gratuit Pas de filtre ou de tri.
Datatable avec Editor[7] Payant avec éditeur Tableau en lecture seule testé avec succès : on peut rechercher une partie de graphie, de prononciation ou une romanisation pour une langue et une nature donnée. Mais pas de wildcard.
Dynatable[8] Payant jQuery Inactive depuis 2014.
FancyGrid[9] Payant
Fixed Header Table[10] Gratuit Pas de filtre ou de tri.
FooTable[11] Gratuit jQuery Testée. Parfois l'erreur sur jQuery 3.3.1 FooTable is not defined.
Handsontable[12] Payant
jqgrid[13] Payant
jQuery HighchartTable[14] Gratuit Pas de filtre ou de tri.
jQuery KingTable[15] Gratuit Tableau en lecture seule. Exportation CSV, JSON et XML.
JQuery ReStable[16] Gratuit Pas de filtre ou de tri.
jsGrid[17] Gratuit Testée mais avec une injection de chaque ligne en JS (améliorable pour les gros volumes ?).
jTable[18] Gratuit jQuery Testée avec erreur sur jQuery 3.3.1.
ngTable[19] Gratuit AngularJS
React-Data-Grid[20] Gratuit React.js Semblait actif il y a trois mois mais le site officiel est cassé.
React Griddle[21] Gratuit React.js Voir si ça fait aussi la version mobile avec React Native.
Recline.js[22] Gratuit Semble inactive depuis un an.
SlickGrid[23] Gratuit Testée. Dépôt principal inactif depuis quatre ans, mais un fork semble correspond aux besoins : filtre, tri et fluidité garantie à 500 000 lignes (récupérées en JSON via une API). Toutefois, les largeurs des en-têtes ne correspondent pas toujours à ceux de leurs colonnes, et il est relativement complexe de cumuler plusieurs fonctionnalités.
Stackable.js[24] Gratuit Pas de filtre ou de tri.
Tabella.js[25] Payant
Tabulator[26] Gratuit Testée avec erreur sur jQuery 3.3.1 si "add row" + "t.widget is not a function"

On trouve aussi un tableau en PHP pour Symfony avec Doctrine : EasyAdminBundle[27], qui permet des filtres moyennant une extension[28]. Et une alternative plus complexe : SonataAdminBundle[29].

Performances[modifier | modifier le wikicode]

Temps de chargement d'une page, dans une base de six millions de mots (en secondes).

Bibliothèque wget Firefox Speed Index Start Render Time To Interactive
Datatables (avec server-side) 0,142 123
Datatables bundle (Symfony) pire
Easyadmin V2 8,413
Easyadmin V4 mieux
Footable 0,189
Sonata admin 0,448

Conclusion, la solution retenue pour la V1 est Easyadmin V4 : https://words-list.com/easy_admin

Références[modifier | modifier le wikicode]