Menu

2014-03-12  Edit

Frédéric Glorieux

Le lemmatiseur du pauvre

Données, les 5 tomes des Misérables de Victor Hugo en texte UTF-8 sur Gutenberg

Utiliser la base lexique.org comme un lemmatiseur de type TreeTagger

À 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.

Un concordancier '''lemmatisé''' pour les Misérables

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 à

  • la performance de votre concordancier, en fin de concordance vous afficherez le temps pris par la requête
  • la lisibilité de la concordance (ex: largeur et centrage des contextes)

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/)


Related

Wiki: Home

Discussion

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.