Générer les données Remède consiste à générer les fichiers JSON, pour chaque lettre (data/REMEDE_a.json
) mais aussi la base Sqlite data/remede.db
.
Note
La base data/remede-less.db
est une ancienne version, qui ne contient pas les champs exemples
, etymologies
et rimes
. Elle est utilisée comme base light, pour les appareils avec peu de place.
Organisation d'une génération de données:
0. pre_generate_ressources.py
génère les ressources nécessaires (mots.txt
et ipa.json
, depuis IPA.txt
)
parse.py
génère un fichier JSON par lettre (plusieurs heures)generate_sqlite.py
génère la base Sqlite, depuis les fichiers JSON (plusieurs dizaines de minutes)generate_index.py
génère un index de recherchebuild_rimes.py
ajoute les rimes au dictionnaire
Important
Tous les programmes contenus dans le dossier scripts
doivent être executés à la racine du project (eg. python3 scripts/parse.py
)
Comment ça fonctionne ?
- Il itère + 250 000 mots (depuis
data/mots.txt
) - Pour chaque mot, il trouve sa définition avec
api-definition
et des services tiers - Il génère le document Remède
- Il enregistre sous format
JSON
- La base de données "Drimes" est réorganisée et ajoutée à la base Remède.
flowchart TB
words[(Word\ndatabase)] --> Loop
Loop(Parser loop) --> def[Definition API]
Loop --> syn[aynonymo.fr]
Loop --> ant[antonymes.org]
Loop .-> conj[conjuguons.fr]
def --> doc{{Remède document}}
syn --> doc
conj .-> doc
ant --> doc
doc --> json[[Remède\nJSON]]
json --> db[(Remède\nDatabase)]
drime[(Drime database)] -- Reorganised and added to --> db
- Lancer api-definition en local
- Lancer
parse.py
python3 scripts/parse.py
Cette opération prend plusieurs jours !
Note
Vous pouvez sélectionner certaines lettres à parser avec un argument : python3 scripts/parse.py --letters a,b,c,d,e
Cette API, originellement écrite par Frederic Gainza, scrap les données du Wictionary français.
Pour ce projet, une réadaptation a été effectuée par Labse Studio
Le code de cette API est contenu dans api-definition
(c'est un submodule git).
Dans api-definition
docker build -t remede-definition-api . && docker run -p 8089:80 remede-definition-api
Le script scripts/add_word.py
permet d'ajouter un mot rapidement à la base sans la reconstruire...
Il :
- Ajoute votre mot dans
data/mots.txt
- Ajoute votre mot dans le JSON
- Ajoute votre mot dans
data/remede.db
- Re-génère l'index de
data/remede.db
python3 scripts/add_word.py <word> <phoneme>
Pour ajouter plusieurs mots:
wordlist.txt
(tabulation entre mot et ipa: mot\t/ipa/
)
acupuncture /a.ky.pɔ̃k.tyʁ/
remède /ʁəmɛd/
et exécuter
python3 scripts/add_word.py -f wordlist.txt