colle du texte → il repère les 别字 (bon son, mauvais caractère) et propose le bon. Noisy-channel : canal = confusion de son, prior = modèle de langue bigramme. Rouge = tranché ; orange = à vérifier ; rien = sûr ou indécidable en local.
Test de faisabilité — 100 % local, pas de réseau. Moteur : un OS à quatre routes (bigramme gauche, bigramme droit, fréquence, segmentation en mots), arbitrées par leur piqué — le même arbitrage que le monolithe français. Candidats : 100 paires choisies par séparabilité mesurée et non par fréquence, avec porte du ton.
Protocole : tout — paires, poids de l'OS, seuils — est choisi sur un corpus d'entraînement. Les chiffres ci-dessous viennent d'un jeu de test jamais regardé pendant les réglages : 5 000 phrases correctes (288 k caractères) et leurs 2 565 fautes réelles.
Rouge : 34 corrections pour 2 fausses alertes sur 5 000 phrases, aucune mauvaise cible. Orange : 396 corrections, signalement sur 4,1 % des phrases correctes.
Ce qui a débloqué le chinois : la route segmentation. L'appui lexical local — « ce caractère forme-t-il un mot ? » — n'apportait rien, parce que le bigramme le contenait déjà. La segmentation est globale : elle découpe toute la fenêtre en mots et voit qu'un mauvais caractère ne casse pas seulement son mot, mais la découpe autour. À budget de fausses alertes égal, elle double les corrections.
Le trigramme, en témoin : il se tait dans 70 % des cas, mais quand il parle il a raison 95,5 % du temps. On ne s'en sert donc pas comme score mais comme témoignage — si la suite de trois caractères écrite n'a jamais été vue et qu'une variante, elle, est attestée, on signale. À budget de fausses alertes identique, il ajoute 43 corrections pour 169 Ko. Débridé maintenant que la compression a levé la contrainte de poids : entrées vues ≥ 2 au lieu de ≥ 5, sur tout le corpus. Et il y a un optimum — le trigramme sans aucun élagage fait moins bien (289 contre 303 à budget égal) et pèse cinq fois plus. Élaguer aide ici, contrairement au bigramme : ça se mesure, ça ne se devine pas.
Le modèle de langue a changé d'échelle : il apprenait sur 148 000 caractères de Wikipédia, il en voit maintenant 2,10 millions — du texte qui dormait déjà sur le disque. Les corrections passent de 171 à 430. Aucun élagage : couper le bigramme ne fait que perdre des corrections (221 → 208 → 198 → 186), contrairement au lexique de segmentation où couper améliore. On emballe au lieu d'élaguer — clés bout à bout et comptes en base 36, −28 % de poids sans perdre une donnée. Le levier corpus est presque épuisé : la courbe mesurée est logarithmique — 21 corrections par ln(caractères). Dix fois plus de texte donnerait +52 corrections… et dix fois le poids. Pour un modèle qui vit dans une page, on est au bout.
Le poids, lui, a été repris : 3,22 Mo → 0,83 Mo, sans perdre une donnée. Deux gestes — les bigrammes deviennent une liste d'adjacence à index delta (le vocabulaire trié par fréquence donne de petits index aux caractères courants), puis gzip. Reconstruction vérifiée exacte sur les 375 480 bigrammes. C'est la leçon du jour appliquée : on emballe, on n'élague pas. Une conclusion périmée bloquait le reste : « au-delà de 100 paires curées, ça ne rapporte plus » avait été mesuré avec l'ancien modèle, quatorze fois plus petit. Une paire indécidable pour un petit modèle ne l'est pas pour un gros : l'optimum est passé de 100 à 400 paires, +100 corrections.
Ce que le modèle NE tranche pas (mesuré, volontaire) : 的/得/地, 那/哪, 很/跟 = mur syntaxique (un mot-outil hyper-fréquent noie le n-gram → orange, comme à↔a en français) ; 他/她/它 = mur sémantique (même case grammaticale, seul le référent tranche → abstention). Ces murs se lèveront avec la couche grammaire/segmentation — le prochain vrai chantier.