Données, les 5 tomes des Misérables de Victor Hugo en texte UTF-8 sur Gutenberg
À partir du code du TP précédent (une boucle interactive en ligne de commande qui renvoit le lemme correspondant à une forme), refactoriser le code pour isoler les méthodes qui vont être utiles pour un lemmatiseur.
/** * Exploitation de la base de lexique.org * * @author Pierre DITTGEN, Frédéric Glorieux */ public class DBLexique { static main() { bonjour(); discute(); aurevoir(); } /** * bonjour() * initialise la base, les requêtes, et tout le nécessaire avant de démarrer */ /** * aurevoir() * referme tout ce que bonjour a ouvert */ /** * discute() * boucle de discussion en ligne de commande */ /** * tsv(String ortho) * Une méthode qui envoie une ligne de type TreeTagger * pour chaque mot qu’on lui passe * forme{TAB}étiquette{TAB}lemme{TAB}(colonne optionnelle pour toute autre information utile) */ }
Pour un lemmatiseur, le main() deviendra dès lors
static main() { bonjour(); explore(new File("rsc")); aurevoir(); } /** * explore(File fichier) * boucle récursive qui explore le contenu du dossier relatif rsc/ * contenant les fichiers *.txt des Misérables */ /** * verticalise(String texte) * découpe un texte mot à mot et appelle tsv() */
Pour le TP qui suit, plusieurs méthodes seront prêtes, certaines seront à écrire, vous êtes libres de réfléchir à la manière d’organiser votre programme.
Sujet de TP noté pour le dimanche 23 mars minuit
Un programme de type concordancier auquel on donne un lemme, par exemple le verbe "permettre",
et qui donne en sortie toutes les extraits des Misérables qui comportent une forme conjuguée du lemme demandé (permise, permettra…)
Sortie non contractuelle (toute meilleure idée de votre part est la bienvenue)
requête : permettre dans ce moment, ne lui avait pas *permis* d'autre équipage. elle n'est pas neutre, et ne vous *permet* pas de rester neutre. C'était le seul luxe que l'évêque *permit*. Il disait:
Livraison : un zip de projet Eclipse avec tout le nécessaire (base Sqlite, textes) pour être directement utilisable. Attention, la base SQLite risque de peser plus que le poids autorisé pour un mail. Il vous sera nécessaire de trouver une solution de type Google Drive, Dropbox ou FTP pour nous donner accès à votre zip. Faîtes nous savoir si vous aviez un problème.
La livraison sera accompagnée d’un petit texte personnel et critique sur votre réalisation (de l’ordre d’une page), essentiellement pour expliquer la stratégie que vous avez choisie pour faire de la recherche plein texte lemmatisée, en soupesant les avantages pour la performance, et les limites pour la précision. Il ne s’agit pas d’expliquer comment votre code marche (nous pouvons le lire et probablement le comprendre), mais que vous expliquiez pourquoi vous avez choisi cet algorithme.
Une attention particulière sera portée à
Si votre approche est bonne, vous pouvez arriver à être 10x, voire 100x plus rapide que la pire option. Attention, l’exercice précédent sur le lemmatiseur pourrait vous orienter sur des solutions qui marchent, mais peut-être un peu lentement.
Cet exercice vous est proposé afin de vous préparer à la découverte d’une librairie d’indexation plein texte à partir du prochain cours (Lucene http://lucene.apache.org/core/)
Anonymous