Lexique
Présentation
Module générique d’accès à un lexique français. Fonctionne avec n’importe quel fichier CSV, TSV ou SQLite contenant des colonnes standard. Fournit 18 méthodes de requêtage organisées en 4 familles.
Le module ne fournit pas de données : vous apportez votre propre base lexicale. Il est compatible avec les principales bases disponibles pour le français ainsi qu’avec le LeXiK de Lectura.
Bases compatibles
| Base |
Entrées |
Colonnes reconnues |
Lien |
| Lexique383 |
142 000 |
ortho, lemme, cgram, genre, nombre, phon, freqfilms2, nbsyll… |
lexique.org |
| GLAFF |
1 400 000 |
graphie, lemme, cgram, genre, nombre, phone… |
glaff.atilf.fr |
| Morphalou |
540 000 |
graphie, lemma, category, gender, number… |
ortolang.fr |
| LeXiK Lectura |
1 350 000 |
25 colonnes (ortho, phone, synonymes, définition…) |
En savoir plus |
Colonnes standard
Le module reconnaît automatiquement les noms de colonnes courants et les unifie en noms canoniques :
| Nom canonique |
Alias reconnus |
ortho |
graphie, form, word, forme, flexion |
lemme |
lemma |
cgram |
category, pos, cat, catgram |
phone |
phon, phon_ipa, ipa, prononciation |
genre |
gender, gen |
nombre |
number, num |
freq |
freq_opensubs, freqfilms2, freq_frwac, freq_frantext… |
Les colonnes absentes sont tolérées : chaque méthode retourne un résultat vide (pas d’exception).
Exemple
from lectura_lexique import Lexique
# Fonctionne avec CSV, TSV ou SQLite
with Lexique("mon_lexique.csv") as lex:
# Morphologie
print(lex.conjuguer("manger"))
# {'indicatif': {'présent': {'1s': 'mange', '2s': 'manges', ...}, ...}}
print(lex.lemme_de("mangeait")) # 'manger'
print(lex.formes_de("grand")) # [{'ortho': 'grand', ...}, ...]
# Phonétique
print(lex.rimes("maison")) # mots rimant en -zɔ̃
print(lex.contient_son("ʒ")) # mots contenant /ʒ/
print(lex.mots_par_syllabes(3)) # trisyllabes
# Sémantique (si colonnes présentes)
print(lex.synonymes("grand")) # ['vaste', 'immense', ...]
print(lex.antonymes("grand")) # ['petit', ...]
print(lex.definition("maison")) # ["Bâtiment servant d'habitation."]
# Recherche
print(lex.rechercher("^micro")) # regex sur ortho
print(lex.anagrammes("chien")) # ['chine', 'niche', ...]
print(lex.filtrer(cgram="NOM", genre="f", freq_min=100))
Essayer en ligne
Méthodes disponibles
Méthodes de base
| Méthode |
Description |
Colonnes requises |
existe(mot) |
Test d’appartenance O(1) |
ortho |
info(mot) |
Entrées lexicales complètes |
ortho |
frequence(mot) |
Fréquence maximale |
ortho, freq |
phone_de(mot) |
Prononciation IPA la plus fréquente |
ortho, phone |
homophones(phone) |
Mots partageant une prononciation |
phone |
Morphologie
| Méthode |
Description |
Colonnes requises |
conjuguer(verbe) |
Table de conjugaison complète |
lemme, cgram, mode, temps, personne |
formes_de(lemme, cgram) |
Formes fléchies d’un lemme |
lemme |
lemme_de(mot) |
Lemme le plus fréquent |
ortho, lemme |
Phonétique
| Méthode |
Description |
Colonnes requises |
rimes(mot, nb_phonemes) |
Mots partageant les N derniers phonèmes |
phone |
contient_son(son) |
Mots contenant une séquence IPA |
phone |
mots_par_syllabes(n, cgram) |
Mots avec N syllabes |
nb_syllabes ou syllabes |
Sémantique
| Méthode |
Description |
Colonnes requises |
synonymes(mot) |
Liste de synonymes (séparateur ;) |
synonymes |
antonymes(mot) |
Liste d’antonymes (séparateur ;) |
antonymes |
definition(mot) |
Définitions |
définition |
Recherche
| Méthode |
Description |
Colonnes requises |
rechercher(pattern, champ) |
Recherche par regex (ortho ou phone) |
ortho ou phone |
filtrer(cgram, genre, ...) |
Filtre multi-critère |
selon critères |
anagrammes(mot) |
Mots avec les mêmes lettres réarrangées |
ortho |
Chargement intelligent
Chargement lazy à 4 niveaux pour minimiser l’utilisation mémoire :
| Niveau |
Charge |
Permet |
| 1 (init) |
frozenset des formes |
existe() en O(1) |
| 2 (lazy) |
index phone |
homophones(), rimes(), contient_son() |
| 3 (lazy) |
index ortho |
info(), frequence(), synonymes(), rechercher() |
| 4 (lazy) |
index lemme |
conjuguer(), formes_de() |
Pour le backend SQLite, les niveaux 2-4 utilisent des requêtes SQL directes sans chargement en mémoire.
Installation
pip install lectura-lexique
Caractéristiques techniques
- Zéro dépendance Python
- Chargement lazy à 4 niveaux (mémoire minimale)
- Backends CSV, TSV et SQLite (détection automatique)
- Résolution automatique des alias de colonnes
- Colonnes manquantes tolérées (retour vide, pas d’exception)
- Python 3.10+ avec type hints complets (PEP-561)
- Licence : AGPL-3.0 (non commerciale) — licence commerciale sur demande : nous contacter