Serge Fleury

Maître de Conférences en linguistique informatique Sorbonne nouvelle, Paris 3
Membre du SYLEDED268

ILPGA / Sorbonne nouvelle
 

 

 

 

 

 

 

 

 

 

 

Annexes Partie 2 Chapitre 7

A-2-7.1. Illustration de l'héritage avec Self sur un exemple

 

 

On donne dans le code présenté ci-dessous une illustration de l'héritage multiple et dynamique sur un exemple simple.

 

Self 1> 'heritageMultiple.self' _RunScript

reading ./heritageMultiple.self...

<object 3>

 

 

Héritage Multiple

 

 

On dispose dans cet exemple deux types de comportement pour l'affichage des attributs des prototypes définis.

 

Self 2> inspect: traits parent1

( | _ parent* = traits clonable.

^ copy = ( clone).

^ display = (

_AddSlotsIfAbsent: (| displayParent1 |).

displayParent1:( ' (Attribut 1: ', slot1 printString, ')').

displayParent1 printLine.

self.

). | )

<object 5>

Self 3> inspect: traits parent2

( | ^ display = (

_AddSlotsIfAbsent: (| displayParent1 |).

displayParent1:( ' (Attribut 1: ', slot1 printString, ')').

displayParent1 printLine.

_AddSlotsIfAbsent: (| displayParent2 |).

displayParent2:( ' (Attribut 2: ', slot2 printString, ')').

displayParent2 printLine.

self.

). | )

<object 7>

 

On construit des prototypes qui vont déléguer un comportement à l'un ou à l'autre de ces objets ou aux deux.

 

Self 4> inspect: filsParent1

( | _ parent* <- <object 5>.

^ slot1 <- 'valeur attribut slot1'.

^ slot2 <- 'valeur attribut slot2'. | )

<object 9>

Self 5> inspect: filsParent1EtParent2

( | _ root2* <- <object 7>.

_ root1* <- <object 5>.

^ slot1 <- 'valeur attribut slot1'.

^ slot2 <- 'valeur attribut slot2'. | )

<object 11>

Self 6> inspect: filsParent1EtParent2Bis

( | _ root2* <- <object 7>.

_ root1* <- <object 5>.

^ slot1 <- 'valeur attribut slot1'.

^ slot2 <- 'valeur attribut slot2'.

^ display = (

_AddSlotsIfAbsent: (| displayParent2 |).

displayParent2:( ' (Attribut 2: ', slot2 printString, ')').

displayParent2 printLine.

_AddSlotsIfAbsent: (| displayParent1 |).

displayParent1:( ' (Attribut 1: ', slot1 printString, ')').

displayParent1 printLine.

self.

). | )

<object 13>

Self 7> inspect: filsParent1EtParent2Ter

( | _ root2* <- <object 7>.

_ parent* <- <object 5>.

^ slot1 <- 'valeur attribut slot1'.

^ slot2 <- 'valeur attribut slot2'.

^ displayFils = ( parent.display). | )

<object 3>

 

 

Figure a-2-7.1 : L'héritage et Self.

 

 

On regarde maintenant comment se comporte chacun de ces prototypes par rapport aux parents qui leurs sont attachés.

 

Self 8> filsParent1 display

(Attribut 1: 'valeur attribut slot1')

<object 9>

 

"Le prototype précédent délègue le comportement visé à un seul parent"

 

Self 9> filsParent1EtParent2 display

More than one 'display' slot was found in filsParent1EtParent2 <11>.

Sending method holder is shell <17>.

The matching slots are: traits parent1 <5> and traits parent2 <7>.

## Stack trace for process <18>

##____Rcvr___Selector/Block__________File:line______Method-holder/location_____

#5 <11> display <error>:1 filsParent1EtParent2

#6 <17> <top level expr> <the prompt>:1 shell

 

 

Le prototype précédent délègue le même comportement à deux parents, d'où le message d'erreur produit. Pour éviter de tels conflits, il faut soit les résoudre au momemt de la définition des objets en prenant soin de ne pas générer de telles ambiguïtés. On dispose aussi de primitives qui permettent de selectionner le parent désiré pour la délégation.

 

Self 10> filsParent1EtParent2Bis display

(Attribut 2: 'valeur attribut slot2')

(Attribut 1: 'valeur attribut slot1')

<object 8>

 

Le prototype précédent possède le même nom d'attribut que celui qu'il pourrait déléguer à ces deux parents, c'est donc cet attribut qui est activé (activation du slot de plus bas niveau).

 

Self 11> filsParent1EtParent2Ter display

More than one 'display' slot was found in filsParent1EtParent2Ter <3>.

Sending method holder is shell <17>.

The matching slots are: traits parent1 <5> and traits parent2 <7>.

## Stack trace for process <21>

##____Rcvr___Selector/Block__________File:line______Method-holder/location_____

#5 <3> display <error>:1 filsParent1EtParent2Ter

#6 <17> <top level expr> <the prompt>:1 shell

 

Le prototype précédent délègue le même comportement à deux parents, d'où le message d'erreur produit. Ce même prototype permet aussi de passer outre cette ambiguïté: l'attribut displayfils permet de réaliser un renvoi dirigé vers un de ses parents.

 

Self 12> filsParent1EtParent2Ter displayFils

(Attribut 1: 'valeur attribut slot1')

filsParent1EtParent2Ter

 

De même on peut réaliser un renvoi de message pour les deux prototypes précédents auxquels les messages d'affichage qui leur étaient adressés ne pouvaient être exécutés. On utilise pour cela des primitives du langage de la manière suivante:

 

Self 13> 'display' sendTo: filsParent1EtParent2 DelegatingTo: filsParent1EtParent2 root1

(Attribut 1: 'valeur attribut slot1')

filsParent1EtParent2

Self 14> 'display' sendTo: filsParent1EtParent2 DelegatingTo: filsParent1EtParent2 root2

(Attribut 1: 'valeur attribut slot1')

(Attribut 2: 'valeur attribut slot2')

filsParent1EtParent2

Self 15> 'display' sendTo: filsParent1EtParent2Ter DelegatingTo: filsParent1EtParent2Ter root2

(Attribut 1: 'valeur attribut slot1')

(Attribut 2: 'valeur attribut slot2')

filsParent1EtParent2Ter

Self 16> 'display' sendTo: filsParent1EtParent2Ter DelegatingTo: filsParent1EtParent2Ter parent

(Attribut 1: 'valeur attribut slot1')

filsParent1EtParent2Ter

 

 

Héritage Dynamique

 

 

Il est possible de modifier les comportements attachés à un prototype donné. Il convient pour cela de définir le lien qui existe entre le prototype et son père avec un slot d'assignation: c'est le cas pour tous les prototypes définis ici. On peut donc modifier les liens qui existent entre les objets et leurs ancêtres.

 

Self 17> filsParent1 parent

traits parent1

Self 18> filsParent1 parent: traits parent2

filsParent1

Self 19> filsParent1 parent

traits parent2

Self 20> filsParent1 display

(Attribut 1: 'valeur attribut slot1')

(Attribut 2: 'valeur attribut slot2')

filsParent1

Self 21>

 

Le comportement attaché au prototype précédent a été modifié.

 

A-2-7.2. Génération dynamique de prototypes lexicaux (1)

 

 

On donne ci-dessous une première illustration de la génération de contraintes associées à des représentations prototypiques d'éléments lexicaux. Les représentations pré-définies ici sont du même type que celles que nous avons déjà présentées. On présente tout d'abord le fichier qui contient les contraintes recueillies:

 

#Dc

pontage

Nom

Sn

(('Det' & 'Nom') asList)

N1prepN2

(('Nom' & 'Prep' & 'Nom') asList)

N1prepV

(('Nom' & 'Prep' & 'Verbe') asList)

AdjN

(('Adj' & 'Nom') asList)

NAdj

(('Nom' & 'Adj') asList)

PrepN

(('Prep' & 'Nom') asList)

Fc#

#Dc

lesion

Nom

Sn

(('Det' & 'Nom') asList)

N1prepN2

(('Nom' & 'Prep' & 'Nom') asList)

N1prepV

(('Nom' & 'Prep' & 'Verbe') asList)

AdjN

(('Adj' & 'Nom') asList)

NAdj

(('Nom' & 'Adj') asList)

PrepN

(('Prep' & 'Nom') asList)

Fc#

#EndOfContraintes#

 

La première contrainte sur pontage peut se lire de la manière suivante:

 

<pontage,Nom> -> {Sn (Det Nom), NPrepN (N1PrepN2), AdjN (Adj Nom), NAdj (Nom Adj), PrepN (Prep Nom)}

 

c'est-à-dire que le prototype lexical pontage de catégorie Nom peut initialiser la construction des prototypes Sn, NPrepN... avec les composants associés. Idem pour le prototype lésion. On présente ci-dessous la trace de la phase de lecture de ces contraintes puis de leurs affectations aux prototypes concernés.

 

------------------------------------------------------

Gaspar-Load Shut Down

 

-------------------------------------------------------

<Gaspar Location:/home/info/fleury/Self/source/Self-3.0/Phase13/...>

-------------------------------------------------------

<1: Menu Load >

<2: Menu Parsing>

<3: Menu Lexical (Display-Create)>

<4: Menu Define Prototype From Corpus>

<5: Menu Help>

<6: PontageaN2-Semantic-Rules>

<7: ui start>

<8: ui quit>

<9: Tools>

Select a number or q to quit Gaspar:2

-------------------------------------------------------

-------------------------------------------------------

<1: GasparParser Menu>

<2: GasparContraints Menu>

Select a number or q to quit MenuParser:2

-------------------------------------------------------

-------------------------------------------------------

<1: Define Contraints From Corpus>

<2: Display All Defined Word-Contraints From Corpus>

<3: Display One Defined Word-Contraints From Corpus>

<4: Display Pre-Defined Cat-Contraints>

Select a number or q to quit MenuContraints:1

-------------------------------------------------------

Vidage du dictionnaire des contraintes

Recreation du dictionnaire des contraintes

Dictionnaire Vide des contraintes disponible

Lecture du Fichier Disponible de Contraintes sur les Mots.

/home/info/fleury/Self/source/Self-3.0/Phase13/work/inputContraintes.self

Contrainte[1] dans le fichier des contraintes :

----------------------------------------------------------------------------

Contrainte sur : <pontage>

Valeur categorielle du mot contraint : <Nom>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Nom>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Det' & 'Nom') asList)>

Categorie de la contrainte lue : <Sn>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Sn>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <N1prepN2>

--> Verification de l'existence d'un prototype portant la valeur categorielle <N1prepN2>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Prep' & 'Verbe') asList)>

Categorie de la contrainte lue : <N1prepV>

--> Verification de l'existence d'un prototype portant la valeur categorielle <N1prepV>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Adj' & 'Nom') asList)>

Categorie de la contrainte lue : <AdjN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <AdjN>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Adj') asList)>

Categorie de la contrainte lue : <NAdj>

--> Verification de l'existence d'un prototype portant la valeur categorielle <NAdj>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <PrepN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <PrepN>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Creation des arbres elementaires associes a la contrainte.

---------------------------------------------------------

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self...

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self...

Arbre elementaire en Cours de Construction :

<list{'pontage', 'Nom', list{catSn, catN1prepN2, catN1prepV, catAdjN, catNAdj, catPrepN, list{list, list, list, list, list, list}}>

--> Verification de l'existence d'un prototype portant la valeur categorielle <'Sn'> et des composants associes <list{'Det', 'Nom'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'N1prepN2'> et des composants associes <list{'Nom', 'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'N1prepV'> et des composants associes <list{'Nom', 'Prep', 'Verbe'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'SAdjN'> et des composants associes <list{'Adj', 'Nom'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'NSAdj'> et des composants associes <list{'Nom', 'Adj'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'PrepN'> et des composants associes <list{'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :159

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

Contrainte[2] dans le fichier des contraintes :

----------------------------------------------------------------------------

Contrainte sur : <lesion>

Valeur categorielle du mot contraint : <Nom>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Nom>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Det' & 'Nom') asList)>

Categorie de la contrainte lue : <Sn>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Sn>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <N1prepN2>

--> Verification de l'existence d'un prototype portant la valeur categorielle <N1prepN2>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Prep' & 'Verbe') asList)>

Categorie de la contrainte lue : <N1prepV>

--> Verification de l'existence d'un prototype portant la valeur categorielle <N1prepV>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Adj' & 'Nom') asList)>

Categorie de la contrainte lue : <AdjN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <AdjN>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Nom' & 'Adj') asList)>

Categorie de la contrainte lue : <NAdj>

--> Verification de l'existence d'un prototype portant la valeur categorielle <NAdj>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Constituants de la Contrainte : <(('Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <PrepN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <PrepN>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

Creation des arbres elementaires associes a la contrainte.

---------------------------------------------------------

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self...

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self...

Arbre elementaire en Cours de Construction :

<list{'lesion', 'Nom', list{catSn, catN1prepN2, catN1prepV, catAdjN, catNAdj, catPrepN}, list{list, list, list, list, list, list}}>

--> Verification de l'existence d'un prototype portant la valeur categorielle <'Sn'> et des composants associes <list{'Det', 'Nom'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'N1prepN2'> et des composants associes <list{'Nom', 'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'N1prepV'> et des composants associes <list{'Nom', 'Prep', 'Verbe'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'SAdjN'> et des composants associes <list{'Adj', 'Nom'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'NSAdj'> et des composants associes <list{'Nom', 'Adj'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

--> Verification de l'existence d'un prototype portant la valeur categorielle <'PrepN'> et des composants associes <list{'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :161

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

Fin de Lecture du Fichier des Contraintes.

Contraintes Lues :

list{list{'pontage', 'Nom', list, list}, list{'lesion', 'Nom', list, list}}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 3> -> 'Sn'

Composants:list{'Det', 'Nom'}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 4> -> 'N1prepN2'

Composants:list{'Nom', 'Prep', 'Nom'}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 5> -> 'N1prepV'

Composants:list{'Nom', 'Prep', 'Verbe'}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 6> -> 'SAdjN'

Composants:list{'Adj', 'Nom'}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 7> -> 'NSAdj'

Composants:list{'Nom', 'Adj'}

Nouvelle(s) contraintes sur le mot <'pontage' 'Nom'> :

<object 8> -> 'PrepN'

Composants:list{'Prep', 'Nom'}

Recherche et Mise a jour des prototypes concernes

-----------------------------------------------------------------------------------------------

Prototype : ['pontage'|'Nom']

--> Mise a jour Du Champ EltTree De Ce Prototype avec les arbres suivants :

list{catSn, catN1prepN2, catN1prepV, catAdjN, catNAdj, catPrepN,}

--> Mise a jour Ok Du Champ EltTree De Ce Prototype

----------------------------------------------------------------------------------------------

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 3> -> 'Sn'

Composants:list{'Det', 'Nom'}

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 4> -> 'N1prepN2'

Composants:list{'Nom', 'Prep', 'Nom'}

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 5> -> 'N1prepV'

Composants:list{'Nom', 'Prep', 'Verbe'}

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 6> -> 'SAdjN'

Composants:list{'Adj', 'Nom'}

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 7> -> 'NSAdj'

Composants:list{'Nom', 'Adj'}

Nouvelle(s) contraintes sur le mot <'lesion' 'Nom'> :

<object 8> -> 'PrepN'

Composants:list{'Prep', 'Nom'}

Recherche et Mise a jour des prototypes concernes

-----------------------------------------------------------------------------------------------

Prototype : ['lesion'|'Nom']

--> Mise a jour Du Champ EltTree De Ce Prototype avec les arbres suivants :

list{catSn, catN1prepN2, catN1prepV, catAdjN, catNAdj, catPrepN}

--> Mise a jour Ok Du Champ EltTree De Ce Prototype

----------------------------------------------------------------------------------------------

Dictionnaire des contraintes disponible

-------------------------------------------------------

<1: Define Contraints From Corpus>

<2: Display All Defined Word-Contraints From Corpus>

<3: Display One Defined Word-Contraints From Corpus>

<4: Display Pre-Defined Cat-Contraints>

Select a number or q to quit MenuContraints:3

-------------------------------------------------------

Contraintes sur quel Mot :pontage

Categorie de ce Mot [Cat|*] :Nom

------------------------------------

Word :pontage

Cat : <Nom>

Categories Syntaxiques Associees :

'Sn'

'N1prepN2'

'N1prepV'

'SAdjN'

'NSAdj'

'PrepN'

-------------------------------------------------------

<1: Define Contraints From Corpus>

<2: Display All Defined Word-Contraints From Corpus>

<3: Display One Defined Word-Contraints From Corpus>

<4: Display Pre-Defined Cat-Contraints>

Select a number or q to quit MenuContraints:q

-------------------------------------------------------

MenuContraints Shut Down

-------------------------------------------------------

<1: GasparParser Menu>

<2: GasparContraints Menu>

Select a number or q to quit MenuParser:q

-------------------------------------------------------

MenuParser Shut Down

-------------------------------------------------------

 

A-2-7.3. Génération dynamique de prototypes lexicaux (2)

 

 

On exécute une réorganisation des savoirs associés aux prototypes représentant la catégorie des Noms. On fait tout d'abord une recherche de tous ces prototypes et de leurs contraintes respectives (on retrouve les contraintes précédemment définies); on détermine ensuite les comportements communs: une classe de comportements partagés par tous les prototypes qui disposent de contraintes. Cette classe peut être associée à l'objet traits commun à tous ces prototypes. Les prototypes qui ne disposent pas de contraintes à l'issue de la définition de celles-ci disposeront ainsi d'un savoir par défaut. Cela ne veut pas dire que ce savoir sera utilisé pour les entités qui ne disposent pas de contraintes particulières. Il s'agit simplement de marquer que sur une famille donnée, certains prototypes possèdent des contraintes et que ces savoirs sont disponibles mais ne sont pas utilisables pour tous les éléments de la famille.

 

 

-------------------------------------------------------

<1: SearchAndDisplay Parent for all Prototypes>

<2: SearchAndDisplay Parent for one Prototype>

<3: SearchAndDisplay Sons for all Objects Traits>

<4: SearchAndDisplay Sons for one Object Traits>

<5: Modify Links Beetween Selected Prototypes>

<6: Modify Links Beetween All Prototypes>

Select a number or q to quit MenuSearchAndDestroy:5

-------------------------------------------------------

 

Modifier Liens sur quelle categorie :Nom

 

Nombre de Prototype ayant un attribut forme :190

 

Comportements Communs aux Protototypes pontage et lésion :

 

Sn N1prepN2 N1prepV AdjN NAdj PrepN

 

 

Prototype Lexical pontage :

 

Ajout du comportement Sn a la liste des comportements individuels

 

Ajout du comportement N1PrepN2 a la liste des comportements individuels

 

Ajout du comportement N1PrepV a la liste des comportements individuels

 

Ajout du comportement SAdjN a la liste des comportements individuels

 

Ajout du comportement NSAdj a la liste des comportements individuels

 

Ajout du comportement PrepN a la liste des comportements individuels

 

 

Prototype Lexical lesion:

 

Ajout du comportement Sn a la liste des comportements individuels si celui-ci n'est pas deja recense

 

Ajout du comportement N1PrepN2 a la liste des comportements individuels si celui-ci n'est pas deja recense

 

Ajout du comportement N1PrepV a la liste des comportements individuels si celui-ci n'est pas deja recense

 

Ajout du comportement SAdjN a la liste des comportements individuels si celui-ci n'est pas deja recense

 

Ajout du comportement NSAdj a la liste des comportements individuels si celui-ci n'est pas deja recense

 

Ajout du comportement PrepN a la liste des comportements individuels si celui-ci n'est pas deja recense

 

 

 

--> Comportements Syntaxiques Partages par les 2 Prototypes <pontage|Nom><lesion|Nom> :

 

0. Sn

 

1. N1PrepN2

 

2. N1PrepV

 

3. SAdjN

 

4. SAdjN

 

5. PrepN

 

--> Ensemble des Comportements Syntaxiques des 2 Prototypes <pontage|Nom><lesion|Nom> :

 

0. Sn

 

1. N1PrepN2

 

2. N1PrepV

 

3. SAdjN

 

4. SAdjN

 

5. PrepN

 

-------------------------------------------------------

<1: SearchAndDisplay Parent for all Prototypes>

<2: SearchAndDisplay Parent for one Prototype>

<3: SearchAndDisplay Sons for all Objects Traits>

<4: SearchAndDisplay Sons for one Object Traits>

<5: Modify Links Beetween Selected Prototypes>

<6: Modify Links Beetween All Prototypes>

Select a number or q to quit MenuSearchAndDestroy:q

-------------------------------------------------------

Menu SearchAndDestroy Shut Down

-------------------------------------------------------

 

A-2-7.4. Génération dynamique de prototypes lexicaux (3)

 

 

L'exemple qui suit est une illustration de la génération de nouvelles représentations prototypiques de catégories syntaxiques non encore reconnues. Le fichier de contraintes a désormais l'allure suivante:

 

#Dc

pontage

Nom

Sn

(('Det' & 'Nom') asList)

NPivotprepN2

(('NomPivot' & 'Prep' & 'Nom') asList)

N1prepV

(('Nom' & 'Prep' & 'Verbe') asList)

AdjN

(('Adj' & 'Nom') asList)

NAdj

(('Nom' & 'Adj') asList)

PrepN

(('Prep' & 'Nom') asList)

N1NPivot

(('Nom' & 'NomPivot') asList)

Fc#

#Dc

lesion

Nom

Sn

(('Det' & 'Nom') asList)

N1prepN2

(('Nom' & 'Prep' & 'Nom') asList)

N1prepV

(('Nom' & 'Prep' & 'Verbe') asList)

AdjN

(('Adj' & 'Nom') asList)

NAdj

(('Nom' & 'Adj') asList)

PrepN

(('Prep' & 'Nom') asList)

NPivotN2

(('NomPivot' & 'Nom') asList)

Fc#

#EndOfContraintes#

 

Le mot pontage peut construire un nouveau comportement du type N1NPivot {Nom, NomPivot}, de même le mot lesion peut construire un nouveau comportement du type NPivotN2 {NomPivot, Nom2}. Il n'existe pas de pré-représentations prototypiques pour ces comportements. Il faut donc définir les objets adéquats pour les représenter. La trace qui suit présente cette création dynamique d'objets et le rattachement de ceux-ci aux prototypes lexicaux concernés.

 

-------------------------------------------------------

<1: Define Contraints From Corpus>

<2: Display All Defined Word-Contraints From Corpus>

<3: Display One Defined Word-Contraints From Corpus>

<4: Display Pre-Defined Cat-Contraints>

 

Select a number or q to quit MenuContraints:1

-------------------------------------------------------

 

Vidage du dictionnaire des contraintes

 

Recreation du dictionnaire des contraintes

 

Dictionnaire Vide des contraintes disponible

 

Lecture du Fichier Disponible de Contraintes sur les Mots.

/home/info/fleury/Self/source/Self-3.0/Phase13/work/inputContraintes.self

 

 

Contrainte[1] dans le fichier des contraintes :

----------------------------------------------------------------------------

 

Contrainte sur : <pontage>

Valeur categorielle du mot contraint : <Nom>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Nom>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Det' & 'Nom') asList)>

Categorie de la contrainte lue : <Sn>

--> Verification de l'existence d'un prototype portant la valeur categorielle <Sn>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('NomPivot' & 'Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <NPivotPrepN2>

--> Verification de l'existence d'un prototype portant la valeur categorielle <NPivotPrepN2>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Nom' & 'Prep' & 'Verbe') asList)>

Categorie de la contrainte lue : <NPivotPrepV>

--> Verification de l'existence d'un prototype portant la valeur categorielle <NPivotPrepV>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Adj' & 'Nom') asList)>

Categorie de la contrainte lue : <AdjN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <AdjN>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Nom' & 'Adj') asList)>

Categorie de la contrainte lue : <NAdj>

--> Verification de l'existence d'un prototype portant la valeur categorielle <NAdj>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Prep' & 'Nom') asList)>

Categorie de la contrainte lue : <PrepN>

--> Verification de l'existence d'un prototype portant la valeur categorielle <PrepN>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle, on continue!

 

Constituants de la Contrainte : <(('Nom' & 'NomPivot') asList)>

Categorie de la contrainte lue : <N1NPivot>

--> Verification de l'existence d'un prototype portant la valeur categorielle <N1NPivot>

Nombre de Prototype ayant un attribut forme :158

--> Verification terminee

--> Il n'existe pas de Prototype qui porte cette valeur categorielle, on va en creer un!

Creation du Prototype <'N1NPivot'>

/home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto1Output.self

---> Definition de l' objet Traits associe : En cours

---> Definition de l' objet Traits associe Ok.

---> Definition de l' objet Prototype : En Cours

---> Definition de l' objet Prototype : Ok

---> Lecture et Creation de l' objet Prototype : En Cours

/home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto1Output.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto1Output.self...

---> Lecture et Creation de l' objet Prototype Ok.

 

 

 

Creation des arbres elementaires associes a la contrainte.

 

---------------------------------------------------------

 

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/contraintsOn_Corpus.self...

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

/home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/constituantOnContraints.self...

 

Arbre elementaire en Cours de Construction :

<list{'pontage', 'Nom', list{catSn, catNPivotPrepN2, catNPivotPrepV, catAdjN, catNAdj, catPrepN, catN1NPivot}, list{list, list, list, list, list, list, list}}>

 

--> Pas de pivot detecte

Position du Pivot : 1.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'Sn'> et des composants associes <list{'Det', 'Nom'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Presence d'un pivot

Position du Pivot : 0.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'NPivotPrepN2'> et des composants associes <list{'NomPivot', 'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Pas de pivot detecte

Position du Pivot : 0.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'NPivotPrepV'> et des composants associes <list{'Nom', 'Prep', 'Verbe'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Pas de pivot detecte

Position du Pivot : 1.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'SAdjN'> et des composants associes <list{'Adj', 'Nom'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Pas de pivot detecte

Position du Pivot : 0.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'NSAdj'> et des composants associes <list{'Nom', 'Adj'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Pas de pivot detecte

Position du Pivot : 1.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'PrepN'> et des composants associes <list{'Prep', 'Nom'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il existe un Prototype qui porte cette valeur categorielle avec ces composants, on continue!

 

--> Presence d'un pivot

Position du Pivot : 1.

--> Verification de l'existence d'un prototype portant la valeur categorielle <'N1NPivot'> et des composants associes <list{'Nom', 'NomPivot'}>

Nombre de Prototype ayant un attribut forme :160

--> Verification terminee

--> Il n'existe pas de Prototype qui porte cette valeur categorielle avec ces composants, on va en creer un!

Creation du Prototype <'N1NPivot'> --> <list{'Nom', 'Nom'}>

/home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto2Output.self

---> Definition de l' objet Traits associe : En cours

---> Definition de l' objet Traits associe Ok.

---> Definition de l' objet Prototype : En Cours

---> Definition de l' objet Prototype : Ok

---> Lecture et Creation de l' objet Prototype : En Cours

/home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto2Output.self

reading /home/info/fleury/Self/source/Self-3.0/Phase13/work/defineProto2Output.self...

---> Lecture et Creation de l' objet Prototype Ok.

--> Definition et Creation du prototype Ok.

--> Mise a jour de l'arbre elementaire : En cours.

--> Mise a jour de l'arbre elementaire Ok.

 

(... idem avec lesion)

 

 

Fin de Lecture du Fichier des Contraintes.

 

 

 

Contraintes Lues :

 

list{list{'pontage', 'Nom', list, list}, list{'lesion', 'Nom', list, list}}

 

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 3> -> 'Sn'

Composants:list{'Det', 'Nom'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 4> -> 'NPivotPrepN2'

Composants:list{'NomPivot', 'Prep', 'Nom'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 5> -> 'NPivotPrepV'

Composants:list{'Nom', 'Prep', 'Verbe'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 6> -> 'SAdjN'

Composants:list{'Adj', 'Nom'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 7> -> 'NSAdj'

Composants:list{'Nom', 'Adj'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 8> -> 'PrepN'

Composants:list{'Prep', 'Nom'}

 

Nouvelle contrainte sur le mot <'pontage' 'Nom'> :

 

<object 9> -> 'N1NPivot'

Composants:list{'Nom', 'NomPivot'}

 

 

Recherche et Mise a jour des prototypes concernes

 

-----------------------------------------------------------------------------------------------

Prototype : ['pontage'|'Nom']

--> Mise a jour Du Champ EltTree De Ce Prototype avec les arbres suivants :

list{catSn, catNPivotPrepN2, catNPivotPrepV, catAdjN, catNAdj, catPrepN, catN1NPivot}

--> Mise a jour Ok Du Champ EltTree De Ce Prototype

----------------------------------------------------------------------------------------------

 

 

(idem avec lesion)

 

 

Dictionnaire des contraintes disponible

 

-------------------------------------------------------

<1: Define Contraints From Corpus>

<2: Display All Defined Word-Contraints From Corpus>

<3: Display One Defined Word-Contraints From Corpus>

<4: Display Pre-Defined Cat-Contraints>

 

Select a number or q to quit MenuContraints:

-------------------------------------------------------

 

 

 

On donne ci-dessous des exemples de prototypes construits; ces derniers sont présentés via l'interface graphique de Self:

 

 

Figure a-2-7.2: Génération du prototype pontage

 

Cette première figure présente le prototype pontage construit ainsi que les arbres associés. La figure qui suit présente le prototype lexical effort construit par clonage et les arbres associés.

 

 

Figure a-2-7.3: Génération du prototype effort

 

A-2-7.5. Détermination des comportements partagés à une classe catégorielle donnée

 

 

Si on exécute de nouveau le classement des comportements associés aux noms, on obtient les résultats suivants.

 

-------------------------------------------------------

<1: SearchAndDisplay Parent for all Prototypes>

<2: SearchAndDisplay Parent for one Prototype>

<3: SearchAndDisplay Sons for all Objects Traits>

<4: SearchAndDisplay Sons for one Object Traits>

<5: Modify Links Beetween Selected Prototypes>

<6: Modify Links Beetween All Prototypes>

 

Select a number or q to quit MenuSearchAndDestroy:5

-------------------------------------------------------

 

Modifier Liens sur quelle categorie :Nom

Nombre de Prototype ayant un attribut forme :195

Comportements Communs aux Protototypes pontage et lésion :

Sn N1prepN2 N1prepV AdjN NAdj PrepN

 

Prototype Lexical pontage :

Ajout du comportement Sn a la liste des comportements individuels

Ajout du comportement N1PrepN2 a la liste des comportements individuels

Ajout du comportement N1PrepV a la liste des comportements individuels

Ajout du comportement SAdjN a la liste des comportements individuels

Ajout du comportement NSAdj a la liste des comportements individuels

Ajout du comportement PrepN a la liste des comportements individuels

Ajout du comportement N1NPivot a la liste des comportements individuels

 

Prototype Lexical lesion:

Ajout du comportement Sn a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement N1PrepN2 a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement N1PrepV a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement SAdjN a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement NSAdj a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement PrepN a la liste des comportements individuels si celui-ci n'est pas deja recense

Ajout du comportement NPivotN2 a la liste des comportements individuels si celui-ci n'est pas deja recense

 

--> Comportements Syntaxiques partages par les 2 Prototypes <pontage|Nom><lesion|Nom> :

0. Sn

1. N1PrepN2

2. N1PrepV

3. SAdjN

4. SAdjN

5. PrepN

 

--> Ensemble des Comportements Syntaxiques des 2 Prototypes <pontage|Nom><lesion|Nom> :

0. Sn

1. N1PrepN2

2. N1PrepV

3. SAdjN

4. SAdjN

5. PrepN

6. NPivotN2

7. N1NPivot

 

-------------------------------------------------------

<1: SearchAndDisplay Parent for all Prototypes>

<2: SearchAndDisplay Parent for one Prototype>

<3: SearchAndDisplay Sons for all Objects Traits>

<4: SearchAndDisplay Sons for one Object Traits>

<5: Modify Links Beetween Selected Prototypes>

<6: Modify Links Beetween All Prototypes>

 

Select a number or q to quit MenuSearchAndDestroy:q

-------------------------------------------------------

Menu SearchAndDestroy Shut Down

-------------------------------------------------------

 

 

 

Le savoir attaché aux prototypes représentant pontage et lésion est plus précis que celui attaché à l'objet portant les comportements partagés par tous les noms. Avant la détermination des comportements partagés, les prototypes lexicaux construits ne partagent pas d'arbre en commun:

 

 

Figure a-2-7.4 : Pas de partage de comportement après génération

 

Après la détermination des comportements partagés, les prototypes lexicaux délèguent un comportement partagé :

 

 

Figure a-2-7.5 : Le classement met en place un partage de comportement