Algorithmique avancée et compilation

Lundi, 08:30-10:30 ou 10:00-12:00, salle machine (1er étage, 155-7), 30, rue du château des rentiers
Premier cours : 22 septembre 2008
Les cours ont lieu à 10:00 de la semaine du 29 septembre à la semaine du 10 novembre 03 novembre comprise. Cours à 08:30 à partir du 17 10 novembre.
Séance du 17 novembre annulée ;
Séance supplémentaire : lundi 01 décembre 2008, de 14h30 à 16h30 10:30 à 12h30.

Ce cours se place comme un point de convergence entre les cours de M1 « sémantique computationnelle » et « langages formels ». Avec une méthode de travail essentiellement technique (séances en salle machine, TP à toutes les séances), on étudiera la mise en place concrète de méthodes classiques de compilation, appliquées aux traitement sémantique/logique de la langue.
Un autre objectif de ce cours est de constituer une expérience « réaliste » du développement collaboratif (via l'utilisation de subversion).



 

Programme de travail et liens

  • Lex-Yacc en python
  • Heim & Kratzer 98
  • Modules sémantiques de nltk
  • (22/09/08) [TP1: Traducteur littéral]
    Démarrage : création ou re-création d'un traducteur littéral de quelques phrases du français, à partir de la version lex-yacc de l'année passée, mais en ply.
    • Le site de téléchargement de ply (Python Lex Yacc).
    • Version lex-yacc (C) de l'an dernier: ICI
    • Un exemple de programme ply (la classique calculatrice): ICI
  • (29/09/08) [TP2: Logique propositionnelle, syntaxe et évaluation]
    (1) mise en place de l'administration collective du site LI (site d'administration ici), (2) une deuxième manipulation de ply
    • Documentation sur Subversion : voir le site subversion.tigris.org, en particulier la SVN Quick Reference Card, et le Subversion Book
    • Proposition de corrigé pour le TP du 22/09
    • Nouveau parser pour le langage défini en cours: logique propositionnelle (syntaxe nltk)
      • Syntaxe :
        • Toute lettre majuscule est un symbole de variable propositionnelle
        • Toute variable propositionnelle est une formule
        • Si φ et ψ sont des formules, alors
          • - φ est une formule
          • (φ & ψ), (φ | ψ), (φ -> ψ), (φ <-> ψ) sont des formules
      • 1e étape: parser des formules propositionnelles
      • 2e étape: évaluation des formules propositionnelles (hypothèse: les lettres paires sont vraies, les impaires sont fausses)
      • 3e étape: le langage comprend des affectations individuelles de variables propositionnelles (il faut donc stocker un modèle en mémoire)
      • 4e étape: on permet aussi des "assertions" de formules non atomiques.
  • (06/10/08) [TP2: Logique propositionnelle, assertion]
    Suite évaluateur de formules : travail sur l'affectation/assertion de formules
    • Proposition de corrigé pour les 3 étapes de la dernière fois.
    • 1e étape: on autorise P = (A & B)
    • 2e étape: on autorise P = Q = (A & B) (avec l'interprétation du langage C)
    • 3e étape: on autorise l'"assertion" de formules non atomiques. Stratégies possibles :
      • Mondes possibles : asserter qu'une formule est vraie revient à réduire l'ensemble des mondes (stratégie sans heuristiques)
      • Stratégies avec heuristiques :
        • Utilisation d'une logique tri-valuée
        • Utilisation des stratégies d'évaluation paresseuse
  • (13/10/08) [TP2: Logique propositionnelle, assertion]
    • Proposition de corrigé pour les 2 premières étapes de la dernière fois.
    • Proposition de corrigé pour la méthode des mondes possibles
  • (20/10/08) [TP2: Logique propositionnelle, assertion]
    • Première reflexion sur un algorithme de gestion des hypothèses
    • Suite des manipulations
  • (27/10/08) [TP3: Logique prédicative, syntaxe et évaluation]
    • Algorithme de gestion des hypothèses par mise sous forme normale disjonctive (DNF)
    • Proposition de corrigé : voir ici. Voir aussi la version 0 dans le même répertoire
    • Crash course en complexité (problèmes NP-complets)
    • Manipulations du jour : parser pour la logique des prédicats.
      • 1e étape: reconnaissance du langage
        all x. ( (man x) -> (mortal x) )
      • 2e étape: construction de l'arbre syntaxique
      • 3e étape: évaluation dans un modèle (extentionel)
  • (03/11/08) [TP3: Logique prédicative, β-réduction]
    • Suite des manipulations de la semaine dernière.
    • Suggestion de corrigé pour la première étape
  • (10/11/08) [TP3: Logique prédicative, β-réduction]
    • Pour l'implémentation de l'évaluation dans un modèle : voir cet article de Ewan Klein (section 3 « Representing models in Python »).
    • Implémentation de la β-réduction, sur les arbres syntaxiques définis précédemment.
      Trois stratégies possibles pour éviter la capture de variables:
      • α-conversion à la volée
      • générateur de variables (à la Prolog)
      • indices de de Bruijn
  • (24/11/08) [TP4: Composant(s) sémantiques de nltk]
    • Installation de la dernière version de nltk
    • Réalisation d'une grammaire « sémantique » en français sur la base de l'exemple sem2. Couverture de la grammaire: devrait reconnaître les phrases de ce fichier
  • (01/12/08) [TP4: Composant(s) sémantiques de nltk]
    Ne pas hésiter à consulter la Documentation API nltk (modules nltk.sem.evaluate, nltk.sem.logic...)
    • Proposition de corrigé première étape (sans l'évaluation) ici et
    • Traitement des phrases atomiques comme des assertions
    • Traitement des présuppositions
      • Etape 1 : présuppositions existentielles « à la Russel »
      • Etape 2 : représentation bipartite pour les existentielles
      • Etape 3 : généralisation aux autres présuppositions
      • Etape 4 : accommodation des présuppositions
  • (08/12/08) [TP4: Composant(s) sémantiques de nltk]
    • Proposition de corrigé (TP du 24/11) (avec évaluation) dans ce répertoire
 
 

Contrôles

Modalités
  • Contrôle continu : prise en considération des TP renvoyés et notés (bonus) ; épreuve sur machine en temps limité pendant la session d'examen de janvier.
  • Contrôle final : une épreuve sur machine en temps limité pendant la session d'examen de janvier (100%).
Calendrier
  • Epreuve sur machine : janvier 2009 (4h).
    Lundi 12Vendredi 16 janvier 2009, 13h30 à 17h30, salle 155. Documents autorisés.
 
 

Bibliographie

Liens


Ma maison-page February 01 2009