Secteur TAL Informatique

ILPGA Université Paris 3

Parcours TAL : TD PCPATR

TAL-Info ILPGA Paris 3 / TD  - PCPATR

 

1        Sommaire

  • Présentation TP
    • Préambule
  • Travail à remettre
  • Prise en main de PC-PATR
    • PC-PATR : la prise en main
    • Ressources de travail pour PC-PATR : grammaire et lexique
    • Exemples de ressources
  • Travail à faire
    • Etape n°0 : Utilisation des modèles
    • Etape n°1 : Créer vos propres
    • Etape n°2 : Utilisation et introduction de contraintes d'accord
    • Etape n°3 : Structures récursives dans les groupes nominaux Etape n°4 Prépositions contractées
    • Etape n°5 : Verbes et Groupes verbaux
    • Etape n°6 : Compléments des verbes

2        Présentation TP

Ce travail a été à l’origine conçu par François Yvon dans le cadre d’un enseignement de TAL du module informatique de l’ENST. Le texte original de ce cours était disponible à l’adresse suivante (http://dantes.enst.fr/~pautet/IA13.html).

2.1       Préambule

 

L'objectif de ce TP est de réaliser un système d'analyse syntaxique pour une petite sous-partie du français. L'intégralité de ce TP sera réalisé en utilisant le logiciel PC-PATR, développé au SIL " Summer Institute of Linguistics " de Dallas (http://www.sil.org/).

Une documentation complète de PC-PATR est disponible sur le site TAL dans le thème 6 (analyse syntaxique) TP n°6 à l’adresse suivante :

(http://www.tal.univ-paris3.fr/cours/parcours/cours/cours6.htm).

Ce TP est construit autour des 4 phases suivantes :

2.1.1     Prise en main de l'environnement et des ressources

 

Cette phase consiste simplement à utiliser une petite grammaire décrivant les structures syntaxique de base, de manière à se familiariser avec l'environnement.

2.1.2     Introduction de contraintes d'accord

 

La grammaire du français impose un certain nombre de contraintes d'accord (entre un verbe et son sujet, entre un nom et son article... Vous utiliserez et introduirez des traits associés aux entrées lexicales, et des contraintes d'accord à satisfaire dans vos règles de récriture.

2.1.3     Introduction de structures récursives

 

À l'issue des deux premières étapes, vous disposerez d'une grammaire reconnaissant un nombre fini (quoique grand) de phrases. L'objectif de cette phase, principalement dédiée à la description du groupe nominal, est d'introduire des structures récursives de votre grammaire, de manière à reconnaître un nombre infini de phrases.

2.1.4     Description des schémas de sous-catégorisation

 

Après les groupes nominaux, nous nous intéressons maintenant aux groupes verbaux, et plus particulièrement à la description du mécanisme de sélection par un verbe de ses compléments.

 

3        Travail à remettre

À la fin de ce TP, vous devrez remettre le résultat de vos travaux (commentaires, récit de vos expérimentations, grammaire et lexique) sous la forme d’un document papier. Les étapes 0, 1, 2, 3 et 4 doivent être traitées obligatoirement.

4        Prise en main de PC-PATR

L'environnement que vous allez utiliser pour développer et tester votre lexique est PC-Patr.

PC-Patr fournit une fenêtre de commande (un shell), où vous pouvez entrer des commandes simples, qui vont essentiellement être soit des demandes de consultation des différentes bases de connaissance (lexique et grammaire), soit des demandes de reconnaissance (parsage) d'une phrase.

4.1       PC-PATR : la prise en main

Vous pouvez démarrer PC-Patr en activant le raccourci présent sur le bureau des machines du labo C.

Tapez ensuite help pour avoir la liste des commandes reconnues par le shell PC-Patr.

Notez que ce shell est insensible aux différences entre majuscule et minuscule, et que les commandes peuvent être abrégées par leurs initiales (par exemple h pour HELP, l pour LOAD...)

Les commandes les plus utiles pour vous sont :

l lex MON_LEXIQUE

(sans extension, pour charger MON_LEXIQUE.lex)

l g MA_GRAMMAIRE

(sans extension, pour charger MA_GRAMMAIRE.grm)

parse

pour soumettre une phrase à l'analyseur.

4.2       Ressources de travail pour PC-PATR : grammaire et lexique

PC-Patr a besoin pour fonctionner de deux types de ressources:

1. Un fichier décrivant les entrées lexicales (extension .lex conseillée). Ce fichier contient une liste d'entrées, chaque entrée étant décrite par deux champs. Ainsi le mot pomme sera-t-il représenté comme suit :

            \w pomme

            \c N

Le premier champ, introduit par \w (pour word), donne simplement la forme graphique du nom; le second, introduit par \c (pour category)donne sa catégorie morphosyntaxique, ici N pour Nom.

2. Un fichier décrivant les règles de la grammaire (extension .grm recommandée). Chaque règle est introduite par le mot clé RULE, éventuellement suivi d'une description de la règle, puis de la description de la production. Une description sommaire d'une phrase sera donc donnée par :

             RULE {Structure des phrases}

             S -> GN GV

Vous noterez que le symbole initial de la grammaire est impérativement S.

4.3       Exemples de ressources

On présente ci-dessous un exemple de ressources utilisables avec PC-PATR.

Un lexique (il s'agit du lexique de test pour le français) et une grammaire (utilisée par la suite)

;lexique.lex ;grammaire.grm

; Lexique de demonstration
\w le
\c DET
\f <gnre>= masc
<nbre>= sing

\w les
\c DET
\f <gnre>= masc
<nbre>= plur

\w la
\c DET
\f <gnre>= fem
<nbre>= sing

\w la
\c CLIT
\f <gnre>= fem
<nbre>= sing

\w petite
\c ADJ
\f <gnre>= fem
<nbre>= sing

\w petite
\c N
\f <gnre>= fem
<nbre>= sing

\w brise
\c N
\f <gnre>= fem
<nbre>= sing

\w glace
\c N
\f <gnre>= fem
<nbre>= sing

\w brise
\c V
\f <pers>= trois
<nbre>= sing

\w glace
\c V
\f <pers>= trois
<nbre>= sing

\w chat
\c N
\f <gnre>= masc
<nbre>= sing

\w loup
\c N
\f <gnre>= masc
<nbre>= sing

\w animaux
\c N
\f <gnre>= masc
<nbre>= plur


\w dort
\c V

\w boivent
\c V
\f <pers>= trois
<nbre>= plur

\w mange
\c V
\f <pers>= trois
<nbre>= sing

\w attrape
\c V
\f <pers>= trois
<nbre>= sing

\w craint
\c V

\w de
\c PREP

\w pour
\c PREP

\w petit
\c ADJ
\f <gnre>= masc
<nbre>= sing

\w grand
\c ADJ


;;; -*- Mode: PATR -*-

;;;===========================
;;; Grammaire de demonstration
;;;===========================

Parameter: Start symbol is S.

;;;==========================
;;; Regles de grammaire
;;;==========================

RULE
S = GN (GV)
<GV nbre> = <GN nbre>

RULE
GN = DET (ADJ) N (GNP)
<N gnre> = <DET gnre>
<N gnre> = <ADJ gnre>
<GN gnre> = <N gnre>
<N nbre> = <DET nbre>
<N nbre> = <ADJ nbre>
<GN nbre> = <N nbre>

RULE
GV = V (GN / GNP)
<GV nbre> = <V nbre>

RULE
GV = (CLIT) V
<CLIT nbre> = <V nbre>
<GV nbre> = <V nbre>

RULE
GNP = PREP GN

5        Travail à faire 

5.1       Etape n°0 : Utilisation des modèles

Vous trouverez dans l'archive suivante les ressources nécessaires pour mener à bien ce travail (le programme PCPATR, une grammaire minimale (celle présentée supra), et un lexique minimal (idem)):

Rappel : pour réaliser le travail demandé, vous devez suivre les étapes suivantes :

Démarrer PC-PATR !
Si vous placez les ressources précédentes dans un même répertoire de travail, vous pouvez charger vos données directement, le programme s'exécutant dans ce même répertoire.
Charger votre lexique et votre grammaire :
commande de chargement du lexique : "load lexicon lexique.lex" ou "l l lexique".
commande de chargement de la grammaire : "load grammar grammaire.grm" ou "l g grammaire".
Réaliser vos analyses en sauvegardant vos résultats temporaires dans des fichiers eux aussi temporaires

·        Création d'un fichier log : log toto.txt

·        On peut ensuite activer des analyses, les résultats seront enregistrés dans le fichier toto.txt créé. Attention ce fichier ne sera disponible qu'après sa fermeture sous PC-PATR avec la commande "close"

·        Vous pourrez ensuite insérer le fichier toto.txt dans votre rapport final

5.2       Etape n°1 : Créer vos propres ressources

Par souci de cohérence, vous utiliserez impérativement les noms de catégories (terminales et non-terminales) suivantes :

S

phrase (symbole initial)

PRD

préposition+déterminant

GV

groupe verbal

PREP

préposition

GN

groupe nominal

CCONJ

conjonction de coordination

DET

déterminant

SCONJ

conjonction de subordination

V

verbe

CCIRC

complément circonstanciel

N

nom

GNP

groupe nominal prépositionnel

ADJ

adjectif

Premières analyses :

·        Vérifiez que vous reconnaissez par exemple " le chien craint le chat ",

·        Vérifiez que vous reconnaissez : " le chien attrape le loup "...,

·        et que vous refusez comme non-grammaticales des phrases telles que " loup le attrape chien le " : vous devrez expliciter les résultats produits...

5.3       Etape n°2 : Utilisation et introduction de contraintes d'accord

Pour prendre en compte les contraintes d'accord entre déterminant et nom, d'une part, et entre sujet et verbe d'autre part, vous allez successivement introduire les modifications suivantes dans votre lexique et dans votre grammaire :

·        Ajoutez dans votre lexique des noms et des articles au féminin et au pluriel (par exemple belette, souris...), ainsi que des verbes à la troisième personne du pluriel. Tout en dupliquant les entrées lexicales existantes dans votre fichier lexique.

·        Complétez votre description lexicale en introduisant, pour chacune des entrées existantes, des traits spécifiant le genre et le nombre (suivre le modèle proposé).

Utilisez pour chaque entrée lexicale le champ \f (pour feature), qui contient sur une ou plusieurs lignes une série de paires attribut-valeur décrivant l'entrée lexicale. Pour les noms et articles, ces attributs sont le genre et le nombre, pour les verbes ce sont le nombre et la personne.

Ainsi pour pomme on aurait :

\w pomme

\c N

\f <gnre> = fem

<nbre> = sing

Attention : " souris " est à la fois singulier et pluriel ! Pour traiter ce cas, deux solutions sont possibles :

La première consiste à ne pas spécifier son nombre (on parle dans ce cas de sous-spécification, ce qui permet de toujours satisfaire les équations d'unification (rien s'unifie avec n'importe quoi). Cette première solution a toutefois un inconvénient : si le nombre du NOM percole au niveau du nombre du GN, alors les souris n'a toujours pas de nombre, et les souris mange est considéré comme correct.

La seconde solution consiste à simplement créer deux entrées complètement spécifiées, une pour le singulier, et l'autre pour le pluriel.

 

La grammaire fournie utilise déjà dans l'écriture des règles de réécriture les équations fonctionnelles portant sur les structures des différents constituants, de manière à exprimer les contraintes d'accord. Dans la description PC-Patr, les équations fonctionnelles sont simplement rajoutées (en nombre illimité) à la suite de la description de la règle de récriture sous la forme :

             RULE {Structure des phrases}

             S -> GN GV

             <GN X> = <GV Y>

             <S Z> = <GV T>

       où X, Y, Z et T sont des attributs des constituants.

Attention : si vous modifiez la grammaire : veillez à ce que toutes les contraintes d'unification soient définies et veillez aussi à exprimer la percolation des traits au niveau supérieur, de manière à pouvoir exprimer de nouvelles contraintes d'unification par la suite.

Création d'une structure de trait complexe : modification du lexique et de la grammaire

Pour exprimer simplement le phénomène d'unification dans votre grammaire par une seule et unique équation dans les règles, modifiez votre lexique et votre grammaire de manière que ces trois attributs soient réunis sous un même attribut complexe nommé tete.

Pour exprimer tout un chemin complexe dans les descriptions lexicales, on écrira quelque chose comme :

      \w pomme

      \c N

      \f <tete gnre> = masc

       <tete nbre> = sing

5.4       Etape n°3 : Structures récursives dans les groupes nominaux

Vous allez dans cette section étendre la description pour l'instant très sommaire des groupes nominaux. En particulier, nous allons introduire deux nouveaux types de constituants capable d'entrer dans la composition des groupes nominaux, à savoir les adjectifs (plus généralement les groupes adjectivaux), et les groupes prépositionnels (compléments du nom).

Les étapes à suivre sont les suivantes :

·        Ajouter des adjectifs de couleur dans votre lexique (en particulier blanc, noir, marron, ainsi que les formes correspondantes du féminin et du pluriel). Vous ferez attention au fait que marron, par exemple, est invariable.

·        Différencier deux niveaux de groupes nominaux (par exemple GN1 et GN2). Le premier niveau correspond à des noms, éventuellement suivi d'un adjectif (avec une contrainte d'accord); le second niveau correspond à des GN1 nantis d'un article. Notez que pour exprimer le fait qu'un composant est optionnel, il suffit de le mettre entre parenthèses dans la règle de production associée. À l'issue de cette étape, prenez le temps de vérifier que votre grammaire reconnaît correctement des syntagmes tels que par exemple le chat noir et la souris verte.

·        Ajouter dans votre lexique les prépositions à et de. Ajouter également quelques noms de relations de parentés (fils, frère, soeur...)

·        Définir les syntagmes prépositionnels (GNP) comme étant simplement composés d'une préposition et d'un GN2.

·        Compléter la description des GN1 en ajoutant une règle décrivant la formation d'un GN1 à partir d'un nom et d'un syntagme prépositionnel (comme dans fils de la souris).

·        Vérifier que vous savez maintenant reconnaître toute une gamme de syntagmes nominaux complexes tels que les fils de la cousine de la belette noire...)

5.5       Etape n°4 Prépositions contractées

Pour en finir avec les groupes nominaux, nous allons introduire un dernier raffinement. Il existe en français des prépositions contractées (au, du), qui ne se combinent donc qu'avec des syntagmes nominaux de type GN1 (dans notre terminologie).

Pour pouvoir analyser ces groupes, il existe plusieurs sulutions. La plus simple consiste à marquer dans un premier temps, au niveau lexical, pour chaque préposition, le type de GN avec lequel elle se combine. Ceci se fait par exemple en introduisant un nouveau trait select, qui indique pour chaque préposition les contraintes de sélection qu'elle impose sur le GN qui suit. On aura ainsi pour au quelque chose comme :

      \w au

      \c PREP

      \f <select cat> = GN1

       <select tete gnre> = masc

       <select tete nbre> = sing

Ce qui signifie que au se combine avec un composé de type GN1 (i.e sans déterminant), au masculin singulier. Il ne reste plus qu'à ajouter dans les règles de formation des syntagmes prépositionnels une contrainte imposant que le trait select de la préposition soit compatible (i.e. puisse s'unifier) avec la structure de trait du GN (de type 1 ou 2) qui la suit. En généralisant un peu, on a une solution encore plus élégante qui consiste à traiter le niveau du GN (un ou deux) comme un trait spécifique du GN (que l'on appellera par exemple bar), ce qui permet de décrire tous les syntagmes prépositionnels avec une seule règle.

·        Implémentez au choix l'une ou l'autre de ces solutions.

·        Vérifiez que vous analysez maintenant toutes les formes de groupes prépositionnels. Vous noterez que la conceptualisation qui a été faite de ce phénomène revient à encoder la combinatoire possible des constituants non plus au niveau des règles, mais directement au niveau des entrées lexicales : une préposition sélectionne ainsi les constituants avec lesquels elle se combine.

5.6       Etape n°5 : Verbes et Groupes verbaux

Nous allons maintenant nous intéresser aux verbes et à leurs compléments. Pour l'instant, votre grammaire ne connaît qu'un seul type de verbe, à savoir les verbes transitifs prenant comme sujet et comme objet direct des groupes nominaux. Le bestiaire des verbes français comprend toute une gamme de verbes acceptant d'autres sortes de sujets et de compléments.

Modéliser cette diversité impose que l'on complexifie à nouveau les descriptions lexicales, en marquant pour chaque verbe le ou les types de complément qu'il attend. Ce marquage se fera par l'introduction d'une nouvelle famille de traits argX, qui contiendront les restrictions qu'un verbe impose à ses compléments. Conventionnellement, arg0 contiendra les contraintes sur le sujet (i.e. l'argument numéro 0 du prédicat verbal), arg1 contiendra les contraintes sur l'objet direct (son premier argument)...

Pour modéliser ces contraintes, vous allez procéder comme suit :

·        Introduisez tout d'abord dans les descriptions lexicales des verbes une sous-structure de trait arg0, qui spécifie les restrictions que le verbe fait porter sur la catégorie, le nombre et la personne de son sujet. Pour un verbe comme mange, la nouvelle entrée lexicale devient quelque chose comme :

            \w mange

            \c V

            \f <arg0 cat> = GN (ou GN2)

             <arg0 tete pers> = 3

             <arg0 tete nbre> = sing

·        Modifiez en conséquence votre grammaire de manière à récrire la contrainte d'accord entre sujet et verbe comme la requête d'unification du GN sujet avec la sous-structure arg0 du verbe. Vous penserez également à assurer la perculation de cette sous-structure de traits (au niveau du GV impliqué dans la règle d'accord sujet-verbe), en complétant les règles concernées.

5.7       Etape n°6 : Compléments des verbes

Vous allez maintenant vous attaquer aux compléments des verbes à un complément, sur lesquels portent des contraintes exprimées par le biais du trait arg1.

·        Pour les verbes intransitifs, le problème se traite assez simplement : on spécifie simplement une valeur de ce trait rendant l'unification avec tout complément impossible (par exemple en lui donnant la valeur conventionnelle VOID). Décrivez quelques verbes intransitifs (dort, miaule, aboit...) en adoptant ce mécanisme.

·        Pour les verbes transitifs, procédez de la même manière, en indiquant qu'ils acceptent un complément de type GN (non spécifié en genre ni en nombre). Vous pouvez maintenant écrire la règle décrivant un groupe verbal comme un verbe suivi éventuellement suivi d'un complément, sous la contrainte que le complément peut s'unifier avec la sous-structure arg1 du verbe.

·        Pour les verbes qui prennent un objet indirect (c'est-à-dire introduit par une préposition), le problème est un peu plus complexe, puisqu'il ne suffit pas de spécifier que le complément est de type GNP, mais qu'il faut également avoir accès à la valeur de la préposition. Un verbe tel que " rêve " demande en effet un complément introduit par de, alors que pense exige un complément introduit par à.

Pour décrire ces phénomènes, il vous faut donc faire perculer au niveau du groupe prépositionnel la valeur de la préposition. Vous noterez qu'ajouter une équation telle que :

                              <GNP prep> = <PREP lex>

n'est pas suffisant.

En effet, au, à et aux par exemple correspondent tous en fait à la même préposition " générique " à. Vous allez donc compléter la description lexicale des prépositions en introduisant un nouveau trait prep, qui contiendra la valeur de la préposition générique. Ainsi pour au :

      \w au

      \c PREP

      \f <select cat> = GN1

       <select tete gnre> = masc

       <select tete nbre> = sing

      <prep> = A

Ce trait doit percoler au niveau de la structure de trait du GNP par exemple par le biais d'une équation telle que :

                              <GNP prep> = <PREP gloss>

Maintenant que vous pouvez avoir accès au contenu de la préposition au niveau du GNP, vous pouvez décrire la sous-structure arg1 de verbes tels que rêver, parler, penser..., dont le premier argument est décrit comme GNP portant le trait prep égal à A pour penser, DE pour rêver...

La dernière étape consiste à rendre variable la catégorie du complément dans la règle de construction des GV, de manière à rendre la structure verbe + complément un peu plus générale en écrivant par exemple:

            RULE {Structure des groupes verbaux}

            GV -> V (X)

; Les contraintes...

            < GV arg1 > = < GV >

Dans cette règle X peut être vide, ou valoir GN ou GNP. Normalement, vous n'avez donc besoin que d'une seule règle pour analyser correctement verbes sans compléments, avec objet nominal direct et indirect.

·        Etendez maintenant votre description aux objets indirects de type GV, comme dans " le chat rêve de manger la souris ".

Pour ce faire, il suffit de rajouter une nouvelle entrée lexicale pour rêve sélectionnant comme objet une proposition infinitive, et d'écrire la règle décrivant ces propositions comme se composant d'une préposition et d'un GV dont le verbe est à l'infinitif (et qui donc n'aura pas de sujet). La règle de construction des GV peut elle être réutilisée directement en l'état.

Le cas des verbes avec deux compléments (par exemple donner, demander) se traite de la même manière, en introduisant une sous-structure arg2. Décrivez un ou deux verbes à deux compléments.

·        Comment votre grammaire analyse-t-elle une phrase telle que " le chat rêve " ?

·        Est-ce normal ?

·        Et que dire d'une phrase telle que le chat donne.

·        Comment interdire de telles configurations tout en ne conservant qu'une seule règle pour décrire tous les groupes nominaux ?

·        Comment réagit l'analyseur face à une phrase comme " Le chat parle du chien à la souris " ?

·        Comment à nouveau faire pour limiter la prolifération de telles ambiguïtés, qui se multiplient de manière incontrôlable dès que l'on introduit la possibilité qu'une phrase comprenne des compléments circonstanciels, qui prennent bien souvent la forme syntaxique de GNP ?

Rechercher une entrée du TLFi :

 

Rechercher une entrée du XMLittré :