# -*- coding: utf-8 -*- # Le Lexique des Formes Fléchies du Français (LEFFF) provient de la page perso # de Lionel Clément. Voir : "http://www.labri.fr/perso/clement/lefff/" # Le lexique est fourni à l'origine dans l'encodage de caractères ASCII étendu # ISO-8859-1 (latin-1), mais pour des raisons de compatibilité, on a jugé plus # simple de le réenregistrer (avec un éditeur de texte) au format Unicode UTF-8, # et de travailler avec cette version. (Python 3 gère Unicode de façon native.) # Extrait les lemmes d'un lexique au format lefff. # # On ouvre le fichier "source" et on crée une liste de lemmes qui contient une # entrée pour chaque ligne du fichier ne commençant pas par '#' (commentaire) ; # l'entrée contient uniquement la forme du mot, c'est à dire le contenu de la # ligne jusqu'à la première tabulation rencontrée. def extract_lex (source): infile = open(source) llist = [] for line in infile: if line[0] != '#': llist.append("") for char in line: if char == '\t': break llist[-1] += char infile.close() return llist # Lit un fichier lexical contenant une entrée par ligne. # # On ouvre le fichier "source" et on crée une liste de lemmes contenant une # entrée pour chaque ligne du fichier. Chaque entrée contient tout le contenu # d'une ligne à l'exception du dernier caractère. (Retour à la ligne.) def read_lex (source): infile = open(source) llist = [] for line in infile: llist.append(line[0:-1]) infile.close() return llist # Ecrit un fichier lexical à partir d'une liste d'entrées. # # On ouvre le fichier "dest" en écriture (en effaçant le contenu éventuel), et # on recopie chaque mot du lexique en ajoutant un saut de ligne après ('\n'). def write_lex (lex, dest): outfile = open(dest, "w") for w in lex: outfile.write(w+'\n') outfile.close() # Extrait le contenu de lefff (au format UTF-8) dans un lexique. # lefff = extract_lex ("lefff-2.1-utf8.txt") # Recopie le contenu du lexique obtenu dans un fichier lexical. # write_lex (lefff, "lefff-2.1-utf8-stripped.txt") # Lit le contenu du fichier lexical ainsi créé. # lefff2 = read_lex ("lefff-2.1-utf8-stripped.txt") # Remarque : lefff et lefff2 ont (normalement) exactement le même contenu.