Dossier · document 3

Fiche technique

Comment l'application est faite, comment son dictionnaire est fabriqué à partir des jeux du ZLS, et comment les chiffres de qualité sont obtenus. Y compris ce qui n'est pas mesuré et devrait l'être.

Document public · septembre 2026 · version 11.6.0 de l'application

Ce que c'est, techniquement

NatureUn Input Method Editor Android, c'est-à-dire le composant système qui remplace le clavier, plus un service de correction orthographique déclaré séparément
LangageKotlin, sans dépendance externe pour le moteur
CompatibilitéAndroid 5.0 (API 21) à Android 16 (API 36)
TailleEnviron 7,7 Mo installés, dont 16,6 Mo de données compressées à 7 Mo
RéseauAucune permission réseau déclarée. L'application fonctionne en mode avion
Tests209 tests unitaires exécutés à chaque intégration, dont plusieurs lisent les fichiers de données réellement livrés

La chaîne de fabrication des données

Rien n'est saisi à la main. Chaque fichier de données est produit par un script versionné, à partir de sources publiques identifiées, et l'intégration continue le régénère à chaque livraison.

1 · Sources

Les jeux du ZLS sur data.public.lu, plus deux corpus universitaires. Les URL ne sont pas codées en dur : les scripts demandent à l'API de data.public.lu la ressource la plus récente, parce que le ZLS republie chaque trimestre sous un chemin horodaté.

2 · Scripts

Six programmes Python découpent, comptent, élisent la casse de chaque forme, construisent les n-grammes et écrivent directement dans les données de l'application, avec des sauvegardes horodatées.

3 · Garde-fous

L'intégration continue refuse de construire l'application si un fichier tombe sous un seuil de volume, change de forme, ou perd son attribution. Une régression silencieuse des données est le risque principal de ce genre de projet.

Ce que les garde-fous vérifient

Comment une suggestion est choisie

Le moteur essaie cinq voies, dans cet ordre, et s'arrête à la première qui donne un résultat :

  1. Le préfixe. Les mots du dictionnaire commençant par ce qui est tapé, classés par fréquence réelle dans le corpus.
  2. Le contexte. Les deux mots précédents, puis le mot précédent seul, servent de clé dans un modèle de 27 746 contextes.
  3. La correction. Une distance d'édition tolérante aux fautes de frappe, avec un seuil qui dépend de la longueur du mot.
  4. Les accents. Une comparaison insensible aux diacritiques, pour que letzebuergesch trouve Lëtzebuergesch.
  5. Le français, à partir de trois caractères seulement, sur une ligne distincte : le clavier sert à écrire du luxembourgeois, pas à basculer.

Une décision de conception qui mérite d'être signalée : la barre reste vide quand le modèle ne sait pas. Mesuré sur le corpus, quand le contexte est reconnu le mot juste figure dans les trois premières suggestions 18,6 % du temps. Quand il ne l'est pas, les stratégies de repli plafonnent à 2 à 4 %. Des suggestions justes une fois sur vingt-cinq, habillées exactement comme celles qui sont justes une fois sur cinq, coûtent plus qu'une barre éteinte. Le clavier se tait donc 12 % du temps, et c'est un choix, pas une panne.

Le protocole de mesure

C'est la partie la plus facile à truquer dans ce genre de projet, et donc celle qu'il faut exposer le plus complètement.

Le piège évité : ne jamais évaluer sur son propre corpus

Une part de corpus mise de côté vient des mêmes articles, de la même période et du même registre que ce qui reste à l'entraînement : elle flatte le modèle. Mesurée, elle annonce 23,9 % là où un jeu réellement indépendant donne 18,1 %. Cinq points d'écart, entièrement artificiels.

Le jeu d'évaluation retenu

Le Méisproochegen Iwwersetzungskorpus du ZLS, dont le recouvrement avec les corpus d'entraînement n'est que de 6,84 %. Restent 10 038 segments inédits, soit 135 343 événements de frappe, contre 2 703 pour le seul autre jeu indépendant disponible. Le bruit statistique passe de ±0,8 point à ±0,1.

Ce corpus n'est jamais versé à l'entraînement, et c'est un arbitrage assumé : l'y ajouter ferait gagner environ 0,1 point de qualité et détruirait le seul jeu de contrôle honnête du projet.

Résultats sur les fichiers réellement livrés

MesureValeurDéfinition
Couverture lexicale93,6 %Part des mots du texte que le clavier connaît
Contexte reconnu87,8 %Part des frappes pour lesquelles le modèle a une proposition
Mot juste dans les trois premiers18,1 %Part des frappes remplaçables par un appui sur une suggestion

La comparaison est faite casse repliée des deux côtés. Le script d'évaluation lit les fichiers embarqués dans l'application, pas une version de travail : le chiffre publié est celui que les utilisateurs obtiennent.

La variante entièrement CC0, mesurée

Puisque la question se posera (voir la page licences), elle a été tranchée par la mesure plutôt que par l'intuition. Un clavier entraîné uniquement sur les jeux du ZLS a été construit avec les mêmes seuils et évalué sur le même jeu de contrôle.

MesureVersion livréeVariante CC0
Formes du dictionnaire37 76112 472
Contextes de prédiction27 7463 672
Couverture lexicale93,6 %86,3 %
Contexte reconnu87,8 %73,9 %
Mot juste dans les trois premiers18,1 %14,0 %

Le coût ressenti n'est pas le taux de réussite mais le silence : la barre resterait vide 26 % du temps au lieu de 12 %, soit deux fois plus souvent. Ce qui disparaîtrait du dictionnaire est identifiable : 15 % des occurrences, essentiellement des noms propres, des sigles (RTL, CSV, OGBL) et des variantes orthographiques que le LOD ne lemmatise pas (dass, tëscht, iwwert, ).

À noter : la reconnaissance des mots et le correcteur orthographique ne seraient pas affectés, puisqu'ils reposent déjà entièrement sur le LOD, en CC0.

Ce qui n'est pas mesuré, et devrait l'être

Un dossier qui ne signale aucune limite n'est pas crédible. Trois choses manquent, et aucune ne se règle sans utilisateurs :

  • L'usage réel. Combien de personnes accepteraient effectivement les suggestions, et lesquelles. Aucune télémétrie n'existe, par choix, donc cette donnée ne viendra que d'un test encadré auprès de volontaires.
  • La qualité perçue par des locuteurs natifs. Les mesures ci-dessus disent que le mot juste est proposé ; elles ne disent pas que les mots proposés sont ceux qu'un Luxembourgeois trouve naturels. C'est l'objet du chantier 2 de la feuille de route.
  • Le comportement sur appareils anciens et sous pression mémoire. Les temps de réponse ont été mesurés sur un téléphone d'entrée de gamme, mais pas sur un parc représentatif.

Tout est vérifiable

Le code, les scripts de fabrication des données, les tests et la configuration d'intégration continue sont publics sur GitHub. Les mesures de cette page sont reproduites par un script du dépôt, qui lit les données embarquées et réécrit les chiffres publiés sur ce site.

La page Les corpus en chiffres présente le détail des sources, leur composition et leur recouvrement.