Graphemiseur
Lectura Graphemiseur
Modèle BiLSTM V7 multi-tête — P2G + POS + Morphologie avec attention cross et lex_select
Présentation
Brique atomique P2G : à partir d’une transcription phonétique IPA, reconstruit l’orthographe française. Un seul modèle BiLSTM char-level multi-tête V7 avec attention cross word-char et lex_select (3.2M paramètres, ONNX INT8 = 4.4 Mo).
| Tâche | Description | Performance |
|---|---|---|
| P2G | IPA vers orthographe (modèle core + lex_select) | ~95% word accuracy |
| POS | Étiquetage morpho-syntaxique (19 tags) | ~98% accuracy |
| Morphologie | Genre, nombre, temps, mode, personne | 95-98% |
Quatre backends d’inférence : API (zero config), ONNX Runtime, NumPy, ou pur Python (zéro dépendance).
Brique vs Pipeline : Le Graphémiseur est le modèle core (IPA → orthographe brute). Pour le pipeline complet P2G (avec formules, noms propres, entités), voir lectura-p2g.
Exemple de code
from lectura_graphemiseur import creer_engine
engine = creer_engine() # mode API par défaut (zero config)
result = engine.analyser(["le", "ɑ̃fɑ̃", "sɔ̃", "aʁive", "a", "la", "mɛzɔ̃"])
print(result["ortho"]) # ['les', 'enfants', 'sont', 'arrives', 'a', 'la', 'maison']
print(result["pos"]) # ['ART:def', 'NOM', 'AUX', 'VER', 'PRE', 'ART:def', 'NOM']
Essayer en ligne
Architecture du modèle (V7)
Le P2G V7 ajoute un mécanisme d’attention cross word-char : les représentations de mots issues des têtes POS/Morpho sont projetées vers les positions caractère par attention, améliorant la résolution des ambiguïtés contextuelles. Le lex_select choisit parmi les candidats phonétiquement compatibles du lexique par une tête neuronale dédiée.
Phrase IPA → Char Embedding (64d) → Shared BiLSTM (2x192h → 384d)
|
+-----------------------+--------------------+
v v
Word representations Word repr (384d) + Phone Lex Features (28d)
(fwd[last] || bwd[first]) |
Word BiLSTM (192h → 384d)
|
+--------------+--------------+
POS Morpho (x6) Attention Cross
→ P2G Head
→ Lex_Select Head
Phone_lex_features (28d) : le modèle reçoit un vecteur de 28 dimensions par mot, construit à partir du phone_lexicon.db (lexique phonétique SQLite) : 19d POS one-hot + 3d morpho (genre, nombre) + 6d features lexicales. Le lex_select sélectionne la meilleure forme orthographique parmi les candidats phonétiquement compatibles du lexique. Sans phone_lexicon, le modèle fonctionne en mode dégradé (features = zeros).
Installation
# Modèle core (zéro dépendance)
pip install lectura-graphemiseur # mode API (zero config)
pip install lectura-graphemiseur[onnx] # backend ONNX Runtime local (~2 ms/phrase)
pip install lectura-graphemiseur[numpy] # backend NumPy local
pip install lectura-graphemiseur[lexique] # + lectura-lexique (phone_lex_features)
pip install lectura-graphemiseur[all] # onnx + numpy + lexique
Par défaut, le module utilise l’API Lectura (aucune configuration nécessaire). Les backends locaux (ONNX, NumPy) nécessitent les modèles pré-entraînés, disponibles sous licence commerciale.
Caractéristiques techniques
- 3.2M paramètres, modèle ONNX INT8 = 4.4 Mo
- 4 backends : API (zero config), ONNX Runtime (~2 ms), NumPy (~50 ms), pur Python (~200 ms)
- Word feedback : les informations POS/morpho enrichissent la prédiction P2G
- Phone_lex_features (28d) : features construites depuis
phone_lexicon.db(lexique phonétique SQLite) - Lex_select : sélection lexicale parmi candidats phonétiques
- Zéro dépendance : le graphémiseur core n’importe pas
lectura_formules - Factory
creer_engine(): détection automatique du meilleur backend - Python 3.10+ avec type hints complets (PEP-561)
- Licence : AGPL-3.0 (non commerciale) — licence commerciale sur demande : nous contacter