Traitement du langage naturel : travaux pratiques

publicité
Traitement du langage naturel : travaux pratiques
Octobre 2003
Rappel : on peut définir en Prolog des grammaires formels avec l’opérateur --> de la façon
suivante :
s --> np, vp.
np --> [john].
vp --> [dort].
La reconnaissance de la phrase se fait ensuite en demandant :
s([john,dort],[]).
On peut aussi vérifier toutes les phrases générées en demandant s(X,[])., ou certaines
structures avec np(X,[]).
On peut aussi passer des paramètres aux catégories (on appelle ce genre de grammaire des
Definite Clause Grammar (DCG)) :
s --> np(_), vp.
np(X) --> det(X), n(X).
vp --> v.
vp --> v, np(_).
det(masc) --> [le].
det(fem) --> [la].
n(masc) --> [chien].
n(masc) --> [chat].
v --> [dort].
v --> [mange].
:- np(_,[le,chien],[]).
Pour éviter d’avoir à remplacer dans chaque règle simple les mots du lexique, on peut
utiliser la fonctionnalité suivante d’une DCG en prolog : on peut insérer des prédicats
exécutés avant ou après la reconnaissance de la partie droite de la règle (entre {}) :
% verbes intransitifs
vi --> { lexique(Word,vi) }, [Word].
...
% lexique
lexique(dort,vi).
lexique(tombe,vi).
lexique(grogne,vi).
On peut perfectionner le prédicat "lexique" pour incorporer plus de paramètres (autres
paramètres syntaxiques, paramètres sémantiques).
1
Question 1
Construire une grammaire de reconnaissance syntaxique du français qui accepte (au moins)
les phrases suivantes :
– Jerry a une voiture bleue.
– Un petit chien aboie.
– Elaine et Jerry détestent cordialement les chiens.
et refuse les phrases incorrectes suivantes :
– Un chien aboie Elaine.
– Elaine et Jerry déteste les chiens.
– Elaine et Jerry déteste un chiens.
Attention, la stratégie de reconnaissance de Prolog est top-down, en profondeur d’abord.
Vous êtes prévenu ...
Question 2
Transformer le programme pour en faire un analyseur, qui donne en sortie la structure de
la phrase sous forme la suivante (ou à peu près ... ) : Jerry a une voiture bleue
⇒ [s,[np,[pn,Jerry]],[vp,[v,a],[np,[det,une],[n,voiture],[adj,bleue]]]]
Question 3, pour les courageux
En utilisant la librairie Gulp pour les structures de traits, proposer une représentation
sémantique qui permet d’extraire le prédicat du verbe principal d’une phrase et le prédicat
du sujet, au moins avec des noms propres et des verbes intransitifs.
La librairie s’appelle en tapant [gulp3]., et
définir des structures de traits

 on peut alors
comme gen:masc..nb:sing pour désigner gen masc


nb sing
On peut alors écrire des règles de grammaire contraignant l’unification des traits. Par
exemple l’accord en genre et en nombre du groupe nominal sujet avec le groupe verbal dans
une phrase se déclarerait comme suit (en supposant que la seule structure est l’accord) :
s(gen:G..nb:N) --> { NP
VP
NP
VP
=
=
=
=
nb:N,
nb:N,
gen:G,
gen:G}, np(NP), vp(VP).
Pour les très courageux
Modifier la grammaire pour prendre en compte les auxilliaires : être, avoir pour accepter
des phrases comme :
– Jerry a acheté une voiture.
– Kramer est vraiment arrivé.
2
Téléchargement