Dfr: Un dictionnaire en ligne de commande 📖

Et hors ligne !

a marqué ce sujet comme résolu.

Bonjour,

Je viens vous prĂ©senter un simple dictionnaire en ligne de commande. Il y a mĂȘme une dĂ©mo Ă  https://dico.ache.one1.

C’est un logiciel libre, le code source est disponible sur mon git personnel. Dfr se base sur le Wiktionnaire et permet d’y accĂ©der simplement et sans connexion internet.

Dfr

C’est juste un dictionnaire.

Comment ça un dictionnaire ?

Ben 
 Vous tapez un mot, et ça vous donne la “ dĂ©finition ”.

$ dfr dfr Pokémon
   Pokémon
   /pɔ.ke.mɔn/, nom
   	CrĂ©ature imaginaire du jeu vidĂ©o PokĂ©mon (ainsi que du dessin animĂ© dĂ©rivĂ©) de formes trĂšs diverses, qui peut ĂȘtre attrapĂ© et qui est utilisĂ© pour des combats avec d’autres crĂ©atures.
   		* Le game designer avoue avoir passĂ© des heures « et mĂȘme des journĂ©es » Ă  jouer aux *PokĂ©mon* sur sa Game Boy lorsqu'il Ă©tait enfant. Il ne ratait jamais un Ă©pisode tĂ©lĂ©visĂ©, ni aucune rediffusion, avoue-t-il.

Aussi simple que ça.

Et il a quoi de particulier ton dictionnaire ?

Eh bien pas grand-chose 
 Ah si ! Il s’utilise hors-ligne. Le dictionnaire est stockĂ© sur votre ordinateur et donc il n’y a pas besoin d’Internet pour avoir la dĂ©finition d’un mot. C’est pratique mais du coup, ça vient avec un lot de dĂ©fauts. Il est lourd (~430Mio) et la gĂ©nĂ©ration de la base initiale est longue et demande de la RAM (~2.5Gio). À part ça, il est plutĂŽt sympa, trĂšs rĂ©actif et surtout trĂšs complet !

Aussi, c’est le seul dictionnaire français qui possùde la prononciation des mots.

C’est pour aider les gens à parler français ? Pourquoi tu as besoin d’un dictionnaire ?

C’est toujours utile un dictionnaire. Il se trouve simplement que je suis nul en orthographe, j’aime bien vĂ©rifier l’orthographe d’un mot. Ensuite, je suis souvent amenĂ© Ă  parler avec des gens qui apprennent le français et bien que je parle français, je n’aie pas toujours une dĂ©finition trĂšs prĂ©cise de chaque mot.

Pourquoi seulement français ?

Malheureusement, je ne suis pas trĂšs bon en langue. Je serais bien incapable de pouvoir contrĂŽler si le logiciel fait bien ce qu’il doit faire dans une autre langue. À la limite en anglais. Pourquoi pas. À Ă©tudier ! Pour une prochaine version peut-ĂȘtre.

Bref, un dictionnaire c’est toujours utile, mais j’ai pas envie d’avoir un gros bouquin, ni d’avoir toujours une connexion internet alors j’ai crĂ©Ă© un outil pour m’en passer. L’installation est dĂ©crite dans le README.md.

De plus, il pourrait ĂȘtre utile pour les linguistes et pour les appareils/applications hors-ligne comme les liseuses/lecteur de livres.

Voilà, c’est tout pour ce projet.
Je reviendrais vers vous lorsqu’il sera traduit pour d’autres langues par exemple.


  1. Elle peut ĂȘtre lente Ă  charger pour le premier mot. Environ 15s quand mĂȘme. C’est vraiment qu’une page de dĂ©mo. Le problĂšme vient de la mise en swap de la RAM peu utilisĂ©e.↩
+3 -0

C’est toujours utile un dictionnaire. Il se trouve simplement que je suis nul en orthographe, j’aime bien vĂ©rifier l’orthographe d’un mot.

Pour ce cas, tu comptes intĂ©grer une auto-correction un peu Ă  la façon des moteurs de recherche ? Si par exemple je tape :

% dfr voture
1) voiture
2) vautour
...

Dans la doc du projet, je vois qu’on peut aussi chercher avec un pattern, peut-ĂȘtre que c’est justement pour gĂ©rer le cas (entre autres) de l’orthographe inconnue ?

+1 -0

Ça serait intĂ©ressant comme optimisation effectivement. Je vais m’y pencher. Mais c’est vrai qu’avec plus d’un milion de mots c’est pas si simple !

Dans la doc du projet, je vois qu’on peut aussi chercher avec un pattern, peut-ĂȘtre que c’est justement pour gĂ©rer le cas (entre autres) de l’orthographe inconnue ?

Oui tout à fait, pour l’instant, ça fait le taf.

+2 -0

Super projet :D !

Merci ! :D

Une voie d’amĂ©lioration pourrait ĂȘtre l’amĂ©lioration de la vitesse d’installation initiale et la compression des donnĂ©es :)

Pour une auto-correction pas trop mauvaise et assez rapide pour 1 million de mots, tu peux utiliser la Distance de Levenshtein par exemple

Drulac

Je peux pas calculer la distance de Levenshtein avec chaque mot du dico. Du coup, j’ai fait autrement. Je calcule toutes les chaĂźnes qui sont Ă  une distance de 1 du mot tapĂ© et ceux qui existent, je les propose. La quantitĂ© de mot traitĂ©s augmente trĂšs trĂšs vite (exponentiellement) mais comme on ira jamais chercher Ă  plus de 2, ça passe.

Ça prend quand mĂȘme 1.5s pour les mots Ă  une distance de 1 et 5s pour ceux Ă  une distance de 2. 😭
Je dois optimiser tout ça.

Pour ce qui est de la compression des donnĂ©es, j’ai regardĂ©, c’est possible de gagner un petit peu en utilisant gzip. De moitier presque. Par-contre, on perd du temps encore Ă  l’installation.

Pour optimiser l’installation Ă  part tĂ©lĂ©charger la bdd plutĂŽt que de la crĂ©er. Je vois pas trop quoi faire. Pour l’instant, ce qui est fait, c’est le tĂ©lĂ©chargement du Wiktionnaire, la dĂ©compression des donnĂ©es puis l’extraction des informations dans une bdd.

+1 -0

De mĂ©moire, bzip et gzip ne sont pas les plus appropriĂ©s :

All data can be optionally compressed:

   lz4 (super fast, low compression)
   zstd (wide range from high speed and low compression to high compression and lower speed)
   zlib (medium speed and compression)
   lzma (low speed, high compression)

C’est tirĂ© de la doc de Borg : https://borgbackup.readthedocs.io/en/stable/

Je ne sais pas si c’est pertinent.


Autre chose, il y a moyen d’extraire uniquement la prononciation de maniùre efficace ? (sans extraire le reste ?) ou c’est impossible ?

Effectivement j’ai tentĂ© avec lzma. Ça prend du temps Ă  compresser mais c’est plus rapide que gzip pour dĂ©compresser et la compression est meilleur.

Je regarderais mais au final, on gagnerait 50% du poids total. Je pense qu’on peut d’abord optimiser les fonctionnalitĂ©s.

+2 -0

@Lyph: Y a carrĂ©ment moyen d’optimiser la taille, pas de 50% mais y a moyen sans dĂ©grader les performance.

Autre chose, il y a moyen d’extraire uniquement la prononciation de maniùre efficace ? (sans extraire le reste ?) ou c’est impossible ?

Au niveau de l’extraction de la prononciation d’un mot. Ça n’a pas de sens Ă  premier vu puisqu’un mĂȘme mot peu avoir diffĂ©rentes prononciations. dfr crĂ©e une base de donnĂ©e sqlite qu’on peut efficassement requĂ©ter en fonction de la requĂȘte qu’on veut faire.Mais dfr n’intĂšgre pas une fonction juste pour obtenir la prononciation d’un mot.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte