Professional Documents
Culture Documents
ROSNEN OROZCO
feature(mode, mode_value).
feature(rection, rection_value).
feature(number, number_value).
feature(person, person_value).
feature(tyn, tyn_value).
feature(tyn_subject, tyn_value).
feature(tyn_object, tyn_value).
top_level_category('.MAIN').
category('.MAIN', []).
category(p, []).
category(sn, [number, person, tyn]).
category(sv, [mode, number, person, tyn]).
category(sp, [tyn]).
category(verb, [mode, person, number, rection, tyn_subject, tyn_object]).
category(noun, [number, tyn]).
category(det, [number]).
category(prep, [tyn]).
category(pron, [person, number, tyn]).
% Grammar
'.MAIN':[] -->
p:[].
p:[] -->
sv:[mode=imperative, tyn=O].
p:[] -->
sn:[number=N, person=P, tyn=S],
sv:[number=N, person=P, mode=indicative, tyn=S].
sp:[] -->
prep:[tyn=O],
sn:[tyn=O].
% Lexicon
%%VERB
verb:[mode=imperative, person=2, number=sg, rection=intransitive] --> repeat.
verb:[mode=indicative, person=1, number=sg, rection=intransitive] --> repeat.
verb:[mode=indicative, person=3, number=pl, rection=intransitive] --> repeat.
verb:[mode=indicative, person=3, number=sg, rection=intransitive] --> repeats.
verb:[mode=imperative, person=2, number=sg, rection=transitive] --> book.
verb:[mode=indicative, person=1, number=sg, rection=transitive] --> book.
verb:[mode=indicative, person=3, number=pl, rection=transitive] --> book.
verb:[mode=indicative, person=3, number=sg, rection=transitive] --> books.
verb:[mode=imperative, person=2, number=sg, rection=transitive] --> list.
verb:[mode=indicative, person=1, number=sg, rection=transitive] --> list.
verb:[mode=indicative, person=3, number=pl, rection=transitive] --> list.
verb:[mode=indicative, person=3, number=sg, rection=transitive] -->lists.
verb:[mode=imperative, person=2, number=sg, rection=transitive, tyn_subject=animate,
tyn_object=building\/item] --> show.
verb:[mode=indicative, person=1, number=sg, rection=transitive, tyn_subject=animate,
tyn_object=building\/item] --> show.
verb:[mode=indicative, person=3, number=pl, rection=transitive, tyn_subject=animate,
tyn_object=building\/item] --> show.
verb:[mode=indicative, person=3, number=sg, rection=transitive, tyn_subject=animate,
tyn_object=building\/item] -->shows.
verb:[mode=indicative, person=1, number=sg, person=1, rection=transitive, tyn_subject=animate,
tyn_object=item] --> want.
verb:[mode=indicative, person=3, number=pl, rection=transitive, tyn_subject=animate,
tyn_object=item] --> want.
verb:[mode=indicative, person=3, number=sg, rection=transitive, tyn_subject=animate,
tyn_object=item] --> wants.
%%NOUN
%%DET
det:[number=N] --> the.
det:[number=sg] --> this.
det:[number=pl] --> these.
det:[number=sg] --> an.
det:[number=sg] --> a.
%%PREP
prep:[tyn=building\/location] --> in.
prep:[tyn=day ] --> on.
prep:[] --> of.
%%PRON
pron:[number=sg,person=1] --> i.
pron:[number=sg, person=3] --> he.
pron:[number=pl, person=3] --> they.
INGÉNIERIE LINGUISTIQUE 2019
Grammaires d’unification
Dans les systèmes linguistiques de TAL, l’objectif principal consiste à créer des grammaires qui
permettent aux ordinateurs de traiter le langage naturel, le comprendre et le traduire. Pour ce faire, il
faut d’abord doter les ordinateurs de toutes les connaissances nécessaires pour identifier et analyser
le plus grand nombre de phrases correctes et bien formées dans une langue donnée. Les grammaires
hors contexte ou CFG ont constitué une première tentative de description formelle des règles de
fonctionnement de la langue. Nonobstant, la description des langues avec ce type de grammaire s’est
avérée excessivement longue et complexe pour intégrer toutes les possibilités et les restrictions
combinatoires des éléments linguistiques dans une phrase (par exemple, les accords en genre et en
nombre dans un syntagme nominal, en personne et nombre entre le verbe et son sujet ou le choix
entre les différents types de complément en fonction du verbe, etc.)
C’est ainsi que, dans un souci d’abréger l’expression des règles grammaticales tout en intégrant la
complexité des combinaisons linguistiques, les grammaires d’unification ont été développées dans les
années 80. Aux règles pour la réécriture des phrases et des différents constituants syntaxiques, s’est
alors ajoutée la description des variables qui conditionnent les combinaisons linguistiques entre les
différentes catégories grammaticales et syntagmatiques. Ces variables seraient incluses dans la
description des constituants linguistiques et des règles grammaticales sous la forme de structures de
traits qui ne s’unifient que lorsque les constituants censés devoir partager les mêmes traits sont
compatibles selon la logique de la théorie des ensembles.
Dans notre exercice, nous avons traité ces phénomènes en ajoutant les variables et les traits qui les
conditionnent en fonction des niveaux linguistiques concernés dans le cas de l’anglais.
Nous avons ensuite déclaré que cette variable peut être exprimée dans la grammaire en indiquant la
soit la variable ou une de ses valeurs :
- feature(number, number_value).
Nous avons également inclus la variable « number » dans la description des catégories « noun » et
« det » :
Puis, au niveau de la grammaire nous avons inclus la variable « nombre=N » dans la règle qui décrit le
syntagme nominal comme déterminant plus nom et aussi dans chacun de ces éléments pour indiquer
que les deux constituants doivent partager la même valeur de la variable pour satisfaire à cette règle.
?det:[number=N],
noun:[number=N, tyn=O],
?sp:[].
Et finalement, au niveau du lexique, nous avons défini le trait correspondant à chaque nom et
déterminant.
Par conséquent, notre grammaire acceptera les phrases « book a hotel » et en fera l’analyse en lui
assignant un arbre syntaxique :
.MAIN [TOY1_COURSE_RULES:31-36]
p [TOY1_COURSE_RULES:37-39]
sv [TOY1_COURSE_RULES:44-47]
| sn [TOY1_COURSE_RULES:54-58]
\ \ null
Les segments de phrase « a hotel » ou « the hotels » ne seront pas acceptés par la grammaire car
elles ne correspondent pas à des phrases complètes.
En anglais le verbe s’accorde avec le sujet selon la personne (1 ère, 2e, 3e) et le nombre (singulier ou
pluriel).Mais dans la pratique et dans le cadre restreint de notre grammaire qui n’inclut pas le verbe
« to be », le verbe ne varie qu’à la troisième personne du singulier « he » ou lorsque le sujet est un
syntagme nominal au singulier.
Pour réussir à ce que notre grammaire ne reconnaisse que les phrases bien accordées entre le sujet
et le verbe, nous avons créé la variable « person » en lui attribuant les valeurs 1, 2 et 3 :
Nous avons ensuite déclaré que cette variable peut être exprimée dans la grammaire en indiquant la
soit la variable ou une de ses valeurs :
- feature(person, person_value).
Puis, nous avons inclus les variables « number » et « person » dans les catégories syntagme nominal
« sn », syntagme verbal « sv » et le verbe « verb » :
Nous avons aussi créé la catéegorie « pron » pour les pronoms en lui attribuant les variables
« number » et « person » :
Au niveau de la grammaire, nous avons inclus ces variables dans la règle qui établit qu’une phrase est
constituée d’un syntagme nominal et un syntagme verbal :
- p:[] -->
Dans le cas particulier des syntagmes nominaux constitués par un nom, nous l’avons restreint
à la troisième personne car le verbe se conjugue toujours à la 3 e personne dans ce cas.
Au niveau du lexique, nous avons alors spécifié les traits correspondant à la personne de chaque
forme du verbe et des pronoms :
%%PRON
En conséquence, notre grammaire accepte et fait l’analyse des phrases « I want a flight », « they want
a flight », et « the man wants a flight », et elle rejette les phrases « I wants a flight », « he want a
flight », et « the man want a flight ».
Puisque cette variable ne concerne que le verbe, nous l’avons intégré à la description de la catégorie
verbe :
Ensuite, au niveau de la grammaire, nous avons spécifié la rection « intransitive » dans la structure
des traits du verbe du syntagme verbal sans objet direct :
Alors que pour le syntagme verbal avec objet direct, nous avons spécifié le trait « transitive ».
Et au niveau du lexique, nous avons spécifié la valeur « intransitive » dans la structure des traits du
verbe « repeat » et la valeur « transitive » pour les autres verbes :
En anglais, comme dans d’autres langues, les verbes ne se conjuguent pas avec tout type de sujet ou
n’acceptent que certains types d’objet. Par exemple, le verbe « to want » n’accepte comme sujet que
des personnes ou, à la limite, quelques animaux. Tout autre type de sujet serait possible seulement
dans un sens figuré ou poétique de ce verbe. Par exemple, dans le cadre de notre exercice, le verbe
« to want » n’accepterait que des personnes comme sujet. De même, le verbe « to show » n’accepte
pas le nom « a town » comme objet.
C’est aussi le cas de certains noms qui ne peuvent être combinés qu’avec quelques noms, comme par
exemple les jours de la semaine qui vont toujours avec la préposition « on » en anglais ou le
nom « flight » qui ne peut pas s’accorder avec la préposition « in » dans le cadre de notre exercice.
Pour restreindre ces possibilités combinatoires, il a fallu créer la variable « tyn » pour définir le type
sémantique des objets et des sujets du verbe et des prépositions et leur avons attribué des variables
correspondantes aux mots de notre corpus :
Étant donné que les verbes peuvent comporter des types sémantiques pour le sujet
Dans le cas des verbes dont on doit spécifier le type sémantique du sujet et de l’objet, nous avons
déclaré également que la variable « tyn » peut aussi s’exprimer comme « tyn_subject » et «
tyn_object » afin de pouvoir faire la différence entre les deux, ou tout simplement comme « tyn »
dans le cas où cette distinction n’est pas nécessaire.
feature(tyn, tyn_value).
feature(tyn_subject, tyn_value).
feature(tyn_object, tyn_value).
Nous avons ensuite inclus cette variable dans les catégories syntagme nominal, syntagme verbal,
syntagme prépositionnel, le nom, la préposition et les pronoms :
Pour la catégorie « verb », nous avons dû spécifier le type sémantique du sujet et de l’objet :
Au niveau de la grammaire, nous avons spécifié le « tyn =S » pour la règle qui décrit les phrases
comme « sn + sv » pour que la grammaire unifie le type sémantique du sujet avec le type sémantique
du sujet admis par le verbe :
- p:[] -->
sn:[number=N, person=P, tyn=S],
sv:[number=N, person=P, mode=indicative, tyn=S].
Et dans la règle qui décrit le syntagme verbal comme « sv + sn » » pour que la grammaire unifie le
type sémantique de l’objet avec le type sémantique de l’objet admis par le verbe :
De même, pour les syntagmes nominaux constitués par des pronoms, nous avons spécifié le
« tyn=S » :
- sn:[number=N, person=P, tyn=S] -->
pron:[number=N, person=P].
Pour les syntagmes nominaux du type « ?det + noun + ? sp » et le syntagme prépositionnel, nous
avons spécifié le « tyn=O » :
- sp:[] -->
prep:[tyn=O],
sn:[tyn=O].
Au niveau du lexique, nous avons inclus cette variable pour les verbes concernés :
Exemples: