Lexique
Presentation
Module generique d’acces a un lexique francais. Fonctionne avec n’importe quel fichier CSV, TSV ou SQLite contenant des colonnes standard. Fournit 18 methodes de requetage organisees en 4 familles.
Le module ne fournit pas de donnees : vous apportez votre propre base lexicale. Il est compatible avec les principales bases disponibles pour le francais ainsi qu’avec le LeXiK de Lectura.
Bases compatibles
| Base |
Entrees |
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, definition…) |
En savoir plus |
Colonnes standard
Le module reconnait 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 tolerees : chaque methode retourne un resultat 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', ...}, ...]
# Phonetique
print(lex.rimes("maison")) # mots rimant en -zɔ̃
print(lex.contient_son("ʒ")) # mots contenant /ʒ/
print(lex.mots_par_syllabes(3)) # trisyllabes
# Semantique (si colonnes presentes)
print(lex.synonymes("grand")) # ['vaste', 'immense', ...]
print(lex.antonymes("grand")) # ['petit', ...]
print(lex.definition("maison")) # ["Batiment 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))
Methodes disponibles
Methodes de base
| Methode |
Description |
Colonnes requises |
existe(mot) |
Test d’appartenance O(1) |
ortho |
info(mot) |
Entrees lexicales completes |
ortho |
frequence(mot) |
Frequence maximale |
ortho, freq |
phone_de(mot) |
Prononciation IPA la plus frequente |
ortho, phone |
homophones(phone) |
Mots partageant une prononciation |
phone |
Morphologie
| Methode |
Description |
Colonnes requises |
conjuguer(verbe) |
Table de conjugaison complete |
lemme, cgram, mode, temps, personne |
formes_de(lemme, cgram) |
Formes flechies d’un lemme |
lemme |
lemme_de(mot) |
Lemme le plus frequent |
ortho, lemme |
Phonetique
| Methode |
Description |
Colonnes requises |
rimes(mot, nb_phonemes) |
Mots partageant les N derniers phonemes |
phone |
contient_son(son) |
Mots contenant une sequence IPA |
phone |
mots_par_syllabes(n, cgram) |
Mots avec N syllabes |
nb_syllabes ou syllabes |
Semantique
| Methode |
Description |
Colonnes requises |
synonymes(mot) |
Liste de synonymes (separateur ;) |
synonymes |
antonymes(mot) |
Liste d’antonymes (separateur ;) |
antonymes |
definition(mot) |
Definitions |
definition |
Recherche
| Methode |
Description |
Colonnes requises |
rechercher(pattern, champ) |
Recherche par regex (ortho ou phone) |
ortho ou phone |
filtrer(cgram, genre, ...) |
Filtre multi-critere |
selon criteres |
anagrammes(mot) |
Mots avec les memes lettres rearrangees |
ortho |
Chargement intelligent
Chargement lazy a 4 niveaux pour minimiser l’utilisation memoire :
| 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 requetes SQL directes sans chargement en memoire.
Installation
pip install lectura-lexique
Caracteristiques techniques
- Zero dependance Python
- Chargement lazy a 4 niveaux (memoire minimale)
- Backends CSV, TSV et SQLite (detection automatique)
- Resolution automatique des alias de colonnes
- Colonnes manquantes tolerees (retour vide, pas d’exception)
- Python 3.10+ avec type hints complets (PEP-561)
- Double licence : AGPL-3.0 (libre) / Licence commerciale