Constructions at Work!

Visualising Linguistic Pathways for Computational Construction Grammar.

Sébastien Hoorens, Katrien Beuls and Paul Van Eecke

This web demo accompanies the paper:

S. Hoorens, K. Beuls, and P. Van Eecke (2017). Constructions at Work! Visualising Linguistic Pathways for Computational Construction Grammar. Proceedings of the 29th Benelux Conference on Artificial Intelligence (BNAIC 2017). Submitted.

Explanations on how to use this demo are here.


Menu:

1. Introduction

2. Linguistic Pathways in the Web Interface

3. Setting Visualisation Options

4. Beyond Language Processing


1. Introduction

Computational construction grammar combines well known concepts from artificial intelligence, linguistics and computer science into fully operational language processing models. These models allow to map an utterance to its meaning representation (comprehension), as well as to map a meaning representation to an utterance (formulation). The processing machinery is based on the unification of usage-patterns that combine morpho-syntactic and semantic information (constructions) with intermediate structures that contain all information that is known at a certain point in processing (transient structures). Language processing is then implemented as a search process, which searches for a sequence of constructions (a linguistic pathway) that successfully transforms an initial transient structure containing the input into a transient structure that qualifies as a goal. For larger grammars, these linguistic pathways become increasingly more complex, which makes them difficult to interpret and debug for the human researcher. In order to accommodate this problem, we present a novel approach to visualising the outcome of constructional language processing. The linguistic pathways are visualised as graphs featuring the applied constructions, why they could apply, with which bindings, and what information they have added. The visualisation tool is concretely implemented for Fluid Construction Grammar, but is also of interest to other flavours of computational construction grammar, as well as more generally to other unification-based search problems of high complexity.


2. Linguistic Pathways in the Web Interface

We can enable the visualisation for constructional dependencies in the web interface by writing (set-configuration (visualization-configuration *fcg-constructions*) :show-constructional-dependencies t). When hovering over some of the elements in the visualisation, information about the bindings is shown in a tooltip. This is what we get when we comprehend "the cat will jump" with the English grammar:


Comprehending "the cat will jump"


Applying a large FCG CONSTRUCTION SET (37269) in comprehension


initial structure
application process
constructional dependencies
gcluster_INTRANSITIVE_CXN16 intransitive-cxncluster_DECLARATIVE_MAIN_CLAUSE_VERB_CXN15 declarative-main-clause-verb-cxncluster_SUBJECT_VERB_CXN14 subject-verb-cxncluster_NON_PROGRESSIVE_CXN13 non-progressive-cxncluster_NON_PERFECT_CXN12 non-perfect-cxncluster_VP_CXN11 vp-cxncluster_SINGULAR_CXN10 singular-cxncluster_MARKED_MODALITY_CXN9 marked-modality-cxncluster_DETERMINEDNOUN_CXN8 determinednoun-cxncluster_DETERMINER_OPERATION_CXN7 determiner-operation-cxncluster_JUMP6 jumpcluster_CAT_NOUN_LEX5 cat-noun-lexcluster_MODAL_WILL_LEX4 modal-will-lexcluster_JUMP_MORPH3 jump-morphcluster_WILL_MORPH2 will-morphcluster_CAT_NOUN_MORPH1 cat-noun-morphcluster_THE0 theINTRANSITIVE_CXN16_CLAUSE_24?clauseINTRANSITIVE_CXN16_SUBJECT_13?subjectINTRANSITIVE_CXN16_VP_30?vpDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36?npDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36->INTRANSITIVE_CXN16_SUBJECT_13DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15?vpDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15->INTRANSITIVE_CXN16_VP_30DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1?main-clauseDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1->INTRANSITIVE_CXN16_CLAUSE_24SUBJECT_VERB_CXN14_SUBJECT_7?subjectSUBJECT_VERB_CXN14_SUBJECT_7->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36SUBJECT_VERB_CXN14_VP_23?vpSUBJECT_VERB_CXN14_VP_23->INTRANSITIVE_CXN16_VP_30SUBJECT_VERB_CXN14_VP_23->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15SUBJECT_VERB_CXN14_CLAUSE_17?clauseSUBJECT_VERB_CXN14_CLAUSE_17->INTRANSITIVE_CXN16_CLAUSE_24SUBJECT_VERB_CXN14_CLAUSE_17->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1NON_PROGRESSIVE_CXN13_VP_6?vpNON_PROGRESSIVE_CXN13_VP_6->SUBJECT_VERB_CXN14_VP_23NON_PERFECT_CXN12_VP_4?vpNON_PERFECT_CXN12_VP_4->NON_PROGRESSIVE_CXN13_VP_6VP_CXN11_VP_2?vpVP_CXN11_VP_2->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15VP_CXN11_VP_2->SUBJECT_VERB_CXN14_VP_23VP_CXN11_VP_2->NON_PERFECT_CXN12_VP_4VP_CXN11_VERB_1?verbSINGULAR_CXN10_NOUN_6?nounMARKED_MODALITY_CXN9_MODAL_AUX_2?modal-auxMARKED_MODALITY_CXN9_BASE_FORM_1?base-formMARKED_MODALITY_CXN9_BASE_FORM_1->VP_CXN11_VERB_1MARKED_MODALITY_CXN9_VP_10?vpMARKED_MODALITY_CXN9_VP_10->INTRANSITIVE_CXN16_VP_30MARKED_MODALITY_CXN9_VP_10->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15MARKED_MODALITY_CXN9_VP_10->SUBJECT_VERB_CXN14_VP_23MARKED_MODALITY_CXN9_VP_10->NON_PROGRESSIVE_CXN13_VP_6MARKED_MODALITY_CXN9_VP_10->NON_PERFECT_CXN12_VP_4MARKED_MODALITY_CXN9_VP_10->VP_CXN11_VP_2DETERMINEDNOUN_CXN8_MODIFIER_1?modifierDETERMINEDNOUN_CXN8_NOUN_12?nounDETERMINEDNOUN_CXN8_NOUN_12->SINGULAR_CXN10_NOUN_6DETERMINEDNOUN_CXN8_NP_23?npDETERMINEDNOUN_CXN8_NP_23->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36DETERMINEDNOUN_CXN8_NP_23->SUBJECT_VERB_CXN14_SUBJECT_7DETERMINER_OPERATION_CXN7_NP_22?npDETERMINER_OPERATION_CXN7_NP_22->INTRANSITIVE_CXN16_SUBJECT_13DETERMINER_OPERATION_CXN7_NP_22->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36DETERMINER_OPERATION_CXN7_NP_22->SUBJECT_VERB_CXN14_SUBJECT_7DETERMINER_OPERATION_CXN7_NP_22->DETERMINEDNOUN_CXN8_NP_23DETERMINER_OPERATION_CXN7_DETERMINER_1?determinerDETERMINER_OPERATION_CXN7_DETERMINER_1->DETERMINEDNOUN_CXN8_MODIFIER_1JUMP6_JUMP_UNIT_1?jump-unitJUMP6_JUMP_UNIT_1->VP_CXN11_VERB_1JUMP6_JUMP_UNIT_1->MARKED_MODALITY_CXN9_BASE_FORM_1CAT_NOUN_LEX5_CAT_UNIT_1?cat-unitCAT_NOUN_LEX5_CAT_UNIT_1->DETERMINEDNOUN_CXN8_NOUN_12MODAL_WILL_LEX4_WILL_5?willMODAL_WILL_LEX4_WILL_5->MARKED_MODALITY_CXN9_MODAL_AUX_2JUMP_MORPH3_JUMP_UNIT_2?jump-unitJUMP_MORPH3_JUMP_UNIT_2->VP_CXN11_VERB_1JUMP_MORPH3_JUMP_UNIT_2->MARKED_MODALITY_CXN9_BASE_FORM_1JUMP_MORPH3_JUMP_UNIT_2->JUMP6_JUMP_UNIT_1WILL_MORPH2_WILL_6?willWILL_MORPH2_WILL_6->MARKED_MODALITY_CXN9_MODAL_AUX_2WILL_MORPH2_WILL_6->MODAL_WILL_LEX4_WILL_5CAT_NOUN_MORPH1_CAT_UNIT_2?cat-unitCAT_NOUN_MORPH1_CAT_UNIT_2->SINGULAR_CXN10_NOUN_6CAT_NOUN_MORPH1_CAT_UNIT_2->DETERMINEDNOUN_CXN8_NOUN_12CAT_NOUN_MORPH1_CAT_UNIT_2->CAT_NOUN_LEX5_CAT_UNIT_1THE0_DEFINITE_ARTICLE_1?definite-articleTHE0_DEFINITE_ARTICLE_1->DETERMINEDNOUN_CXN8_MODIFIER_1THE0_DEFINITE_ARTICLE_1->DETERMINER_OPERATION_CXN7_DETERMINER_1
applied constructions
resulting structure

Meaning:

gstruct0(jump-2?ev-3320?y-1582)struct1(jump-1?ev-3320?x-1591)struct0:varEVdash33201->struct1:varEVdash33202struct2(event-framejump?ev-3320)struct1:varEVdash33202->struct2:varEVdash33203struct6(referent-statusidentifiable-ref?x-1591?r-638)struct1:varXdash15912->struct6:varXdash15917struct3(semantic-functionevent?ev-3320)struct2:varEVdash33203->struct3:varEVdash33204struct10(qualify-eventnon-progressive?asp-ev-9?ev-3320)struct3:varEVdash33204->struct10:varEVdash332011struct4(distance-to-rpnear-distance?ev-3307)struct5(possible-worldvolition-or-prediction?ev-3307?perf-ev-16)struct4:varEVdash33075->struct5:varEVdash33076struct9(temporal-relationsimultaneous?perf-ev-16?asp-ev-9reference-point)struct5:varPERFdashEVdash166->struct9:varPERFdashEVdash1610struct11(sentence-topic?ev-3307?x-1591)struct5:varEVdash33076->struct11:varEVdash330712struct7(objectcat?r-638?x-3920?x-1591)struct6:varXdash15917->struct7:varXdash15918struct6:varRdash6387->struct7:varRdash6388struct8(number-valuesingular?r-638)struct7:varRdash6388->struct8:varRdash6389struct7:varXdash15918->struct11:varXdash159112struct9:varASPdashEVdash910->struct10:varASPdashEVdash911struct12(perform-speech-act?ev-3307assertion)struct11:varEVdash330712->struct12:varEVdash330713struct13(primary-perspective?ev-3307?x-1591)struct11:varXdash159112->struct13:varXdash159114struct12:varEVdash330713->struct13:varEVdash330714struct14(semantic-frameintransitive?ev-3307)struct13:varEVdash330714->struct14:varEVdash330715

The constructional dependencies graph contains 17 blue node clusters, one for each construc- tion that has been applied. On the left side of the graph, we can see that there are four entry points, i.e. node clusters with no incoming edges. The comprehension locks of these four con- structions, jump-morph, will-morph, the and determiner-operation-cxn, only require strings that are found in the input utterance and do not need any features added by previous construction applications. They create one lexical unit each, which is shown on a green background. After the the construction has applied and created a ?definite-article unit, the determiner-operation- cxn can match its ?determiner unit on this unit and create a new ?np unit. The cat-noun-lex and jump constructions can respectively match on the units created by the jump-morph and cat-noun-morph constructions, adding information to these units, but not creating any new ones.

Then, we can see that the lexical units for the modal auxiliary and the lexical main verb are both affected by the marked-modality-cxn, which creates a new ?vp unit. This ?vp unit is then modified by the vp-cxn, non-perfect-cxn and the non-progressive-cxn. The determinednoun-cxn adds information into lexical units for the noun and the definite article, as well as to the ?np unit. The lexical unit for the noun is further affected by the singular-cxn.

After that, the subject and verb come together. The subject-verb-cxn matches on the ?np and ?vp units, and creates a new ?clause unit. These three units are then further extended by the declarative-main-clause-verb-cxn and the intrasitive-cxn.






The visualisation also works for formulation. When formulating "the lazy cat", we get the following trace:


Formulating 

gstruct0(categorylazyo-290r-638ref-638)struct1(referent-statusidentifiable-refref-638o-290)struct0:Odash2901->struct1:Odash2902struct0:REFdash6381->struct1:REFdash6382struct2(objectcatr-638x-3920ref-638)struct0:Rdash6381->struct2:Rdash6383struct1:REFdash6382->struct2:REFdash6383struct3(number-valuesingularr-638)struct2:Rdash6383->struct3:Rdash6384

Applying a large FCG CONSTRUCTION SET (37269) in formulation


initial structure
application process
constructional dependencies
gcluster_CAT_NOUN_MORPH7 cat-noun-morphcluster_SINGULAR_CXN6 singular-cxncluster_DETERMINEDNOUN_CXN5 determinednoun-cxncluster_DETADJ_CXN4 detadj-cxncluster_DETERMINER_OPERATION_CXN3 determiner-operation-cxncluster_CAT_NOUN_LEX2 cat-noun-lexcluster_THE1 thecluster_LAZY_ADJ_LEX0 lazy-adj-lexCAT_NOUN_MORPH7_CAT_UNIT_2?cat-unitSINGULAR_CXN6_NOUN_6?nounSINGULAR_CXN6_NOUN_6->CAT_NOUN_MORPH7_CAT_UNIT_2DETERMINEDNOUN_CXN5_MODIFIER_1?modifierDETERMINEDNOUN_CXN5_NOUN_12?nounDETERMINEDNOUN_CXN5_NOUN_12->CAT_NOUN_MORPH7_CAT_UNIT_2DETERMINEDNOUN_CXN5_NOUN_12->SINGULAR_CXN6_NOUN_6DETERMINEDNOUN_CXN5_NP_23?npDETADJ_CXN4_ADJ_MODIFIER_1?adj-modifierDETADJ_CXN4_ADJ_MODIFIER_1->DETERMINEDNOUN_CXN5_MODIFIER_1DETADJ_CXN4_PRE_MODIFIER_1?pre-modifierDETADJ_CXN4_NP_24?npDETADJ_CXN4_NP_24->DETERMINEDNOUN_CXN5_NP_23DETERMINER_OPERATION_CXN3_NP_22?npDETERMINER_OPERATION_CXN3_NP_22->DETERMINEDNOUN_CXN5_NP_23DETERMINER_OPERATION_CXN3_NP_22->DETADJ_CXN4_NP_24DETERMINER_OPERATION_CXN3_DETERMINER_1?determinerDETERMINER_OPERATION_CXN3_DETERMINER_1->DETADJ_CXN4_PRE_MODIFIER_1CAT_NOUN_LEX2_CAT_UNIT_1?cat-unitCAT_NOUN_LEX2_CAT_UNIT_1->CAT_NOUN_MORPH7_CAT_UNIT_2CAT_NOUN_LEX2_CAT_UNIT_1->SINGULAR_CXN6_NOUN_6CAT_NOUN_LEX2_CAT_UNIT_1->DETERMINEDNOUN_CXN5_NOUN_12THE1_DEFINITE_ARTICLE_1?definite-articleTHE1_DEFINITE_ARTICLE_1->DETADJ_CXN4_PRE_MODIFIER_1THE1_DEFINITE_ARTICLE_1->DETERMINER_OPERATION_CXN3_DETERMINER_1LAZY_ADJ_LEX0_LAZY_UNIT_1?lazy-unitLAZY_ADJ_LEX0_LAZY_UNIT_1->DETERMINEDNOUN_CXN5_MODIFIER_1LAZY_ADJ_LEX0_LAZY_UNIT_1->DETADJ_CXN4_ADJ_MODIFIER_1
applied constructions
resulting structure

Utterance: "The lazy cat"


3. Setting Visualisation Options

There are three options through which the visualisation can be customized: :labeled-paths, :colored-paths and :trace-units. These options can be set in the same manner as we did for :show-constructional-dependencies. When setting :colored-paths on and setting :labeled-paths to show the full edge labels, we obtain the following figure for comprehension of "the cat":

gcluster_SINGULAR_CXN5 singular-cxncluster_DETERMINEDNOUN_CXN4 determinednoun-cxncluster_DETERMINER_OPERATION_CXN3 determiner-operation-cxncluster_CAT_NOUN_LEX2 cat-noun-lexcluster_CAT_NOUN_MORPH1 cat-noun-morphcluster_THE0 theSINGULAR_CXN5_NOUN_6?nounDETERMINEDNOUN_CXN4_MODIFIER_1?modifierDETERMINEDNOUN_CXN4_NOUN_12?nounDETERMINEDNOUN_CXN4_NOUN_12->SINGULAR_CXN5_NOUN_6DETERMINEDNOUN_CXN4_NP_23?npDETERMINER_OPERATION_CXN3_NP_22?npDETERMINER_OPERATION_CXN3_NP_22->DETERMINEDNOUN_CXN4_NP_23subunits: {?modifier}{(the . ?modifier)}   syn-cat:     phrase-type: np{(t . t)}        agreement: ?agr{(?agr . ?agr)}   DETERMINER_OPERATION_CXN3_DETERMINER_1?determinerDETERMINER_OPERATION_CXN3_DETERMINER_1->DETERMINEDNOUN_CXN4_MODIFIER_1parent: ?np{(np . ?np)}   CAT_NOUN_LEX2_CAT_UNIT_1?cat-unitCAT_NOUN_LEX2_CAT_UNIT_1->DETERMINEDNOUN_CXN4_NOUN_12parent: ?np{(?phrase . ?np)}   CAT_NOUN_MORPH1_CAT_UNIT_2?cat-unitCAT_NOUN_MORPH1_CAT_UNIT_2->SINGULAR_CXN5_NOUN_6syn-cat:     categories: {noun}{(t . t)}        agreement: [-, -, +, -]{(t . t)}   CAT_NOUN_MORPH1_CAT_UNIT_2->DETERMINEDNOUN_CXN4_NOUN_12syn-cat:     categories: {noun}{(t . t)}        agreement: ?agr{([-, -, +, -] . ?agr)}   CAT_NOUN_MORPH1_CAT_UNIT_2->CAT_NOUN_LEX2_CAT_UNIT_1lex-id: cat{(t . t)}   syn-cat:     categories: {noun, common-noun}{(t . t)}        agreement: ?agr{([-, -, +, -] . ?agr)}   THE0_DEFINITE_ARTICLE_1?definite-articleTHE0_DEFINITE_ARTICLE_1->DETERMINEDNOUN_CXN4_MODIFIER_1parent: ?np{(?parent . ?np)}   syn-cat:     agreement: ?agr{([-, -, ?3sg, ?pl] . ?agr)}   THE0_DEFINITE_ARTICLE_1->DETERMINER_OPERATION_CXN3_DETERMINER_1parent: ?np{(?parent . ?np)}   syn-cat:     categories: {determiner}{(t . t)}   

Below is another example in which :labeled-paths and :colored-paths have been disabled, and :trace-units has been set to '("?VP"), for comprehension of "the cat will jump":

gcluster_INTRANSITIVE_CXN16 intransitive-cxncluster_DECLARATIVE_MAIN_CLAUSE_VERB_CXN15 declarative-main-clause-verb-cxncluster_SUBJECT_VERB_CXN14 subject-verb-cxncluster_NON_PROGRESSIVE_CXN13 non-progressive-cxncluster_NON_PERFECT_CXN12 non-perfect-cxncluster_VP_CXN11 vp-cxncluster_SINGULAR_CXN10 singular-cxncluster_MARKED_MODALITY_CXN9 marked-modality-cxncluster_DETERMINEDNOUN_CXN8 determinednoun-cxncluster_DETERMINER_OPERATION_CXN7 determiner-operation-cxncluster_JUMP6 jumpcluster_CAT_NOUN_LEX5 cat-noun-lexcluster_MODAL_WILL_LEX4 modal-will-lexcluster_JUMP_MORPH3 jump-morphcluster_WILL_MORPH2 will-morphcluster_CAT_NOUN_MORPH1 cat-noun-morphcluster_THE0 theINTRANSITIVE_CXN16_CLAUSE_24?clauseINTRANSITIVE_CXN16_SUBJECT_13?subjectINTRANSITIVE_CXN16_VP_30?vpDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36?npDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36->INTRANSITIVE_CXN16_SUBJECT_13DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15?vpDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15->INTRANSITIVE_CXN16_VP_30syn-cat: ¬copula: +{(t . t)}   syn-cat: ¬voice: passive{(t . t)}   DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1?main-clauseDECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1->INTRANSITIVE_CXN16_CLAUSE_24SUBJECT_VERB_CXN14_SUBJECT_7?subjectSUBJECT_VERB_CXN14_SUBJECT_7->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36SUBJECT_VERB_CXN14_VP_23?vpSUBJECT_VERB_CXN14_VP_23->INTRANSITIVE_CXN16_VP_30syn-valence:     subject: ?subject{(np . ?subject)}        object: -{(?object . -)}   SUBJECT_VERB_CXN14_VP_23->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15parent: ?main-clause{(clause . ?main-clause)}   syn-cat:     agreement: ?agr{([-, -, +, -] . ?agr)}   SUBJECT_VERB_CXN14_CLAUSE_17?clauseSUBJECT_VERB_CXN14_CLAUSE_17->INTRANSITIVE_CXN16_CLAUSE_24SUBJECT_VERB_CXN14_CLAUSE_17->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_MAIN_CLAUSE_1NON_PROGRESSIVE_CXN13_VP_6?vpNON_PROGRESSIVE_CXN13_VP_6->SUBJECT_VERB_CXN14_VP_23NON_PERFECT_CXN12_VP_4?vpNON_PERFECT_CXN12_VP_4->NON_PROGRESSIVE_CXN13_VP_6VP_CXN11_VP_2?vpVP_CXN11_VP_2->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15parent: ?main-clause{(?parent . ?main-clause)}   VP_CXN11_VP_2->SUBJECT_VERB_CXN14_VP_23head: ?head{(jump . ?head)}   parent: ?clause{(?parent . ?clause)}   VP_CXN11_VP_2->NON_PERFECT_CXN12_VP_4VP_CXN11_VERB_1?verbSINGULAR_CXN10_NOUN_6?nounMARKED_MODALITY_CXN9_MODAL_AUX_2?modal-auxMARKED_MODALITY_CXN9_BASE_FORM_1?base-formMARKED_MODALITY_CXN9_BASE_FORM_1->VP_CXN11_VERB_1MARKED_MODALITY_CXN9_VP_10?vpMARKED_MODALITY_CXN9_VP_10->INTRANSITIVE_CXN16_VP_30syn-cat:     phrase-type: vp{(t . t)}   MARKED_MODALITY_CXN9_VP_10->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_VP_15syn-cat:     phrase-type: vp{(t . t)}        agreement: ?agr{(?agr . ?agr)}   MARKED_MODALITY_CXN9_VP_10->SUBJECT_VERB_CXN14_VP_23syn-cat:     phrase-type: vp{(t . t)}        agreement: ?agr{(?agr . ?agr)}   MARKED_MODALITY_CXN9_VP_10->NON_PROGRESSIVE_CXN13_VP_6syn-cat:     phrase-type: vp{(t . t)}        tam:          tense: ?tense{(present . ?tense)}             aspect:               perfect: ?perf{(- . ?perf)}                  progressive: -{(t . t)}             modality: ?mod{(non-indicative . ?mod)}   MARKED_MODALITY_CXN9_VP_10->NON_PERFECT_CXN12_VP_4syn-cat:     phrase-type: vp{(t . t)}        tam:          tense: ?tense{(present . ?tense)}             aspect:               perfect: -{(t . t)}                  progressive: ?progr{(- . ?progr)}             modality: ?mod{(non-indicative . ?mod)}   MARKED_MODALITY_CXN9_VP_10->VP_CXN11_VP_2DETERMINEDNOUN_CXN8_MODIFIER_1?modifierDETERMINEDNOUN_CXN8_NOUN_12?nounDETERMINEDNOUN_CXN8_NOUN_12->SINGULAR_CXN10_NOUN_6DETERMINEDNOUN_CXN8_NP_23?npDETERMINEDNOUN_CXN8_NP_23->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36DETERMINEDNOUN_CXN8_NP_23->SUBJECT_VERB_CXN14_SUBJECT_7DETERMINER_OPERATION_CXN7_NP_22?npDETERMINER_OPERATION_CXN7_NP_22->INTRANSITIVE_CXN16_SUBJECT_13DETERMINER_OPERATION_CXN7_NP_22->DECLARATIVE_MAIN_CLAUSE_VERB_CXN15_NP_36DETERMINER_OPERATION_CXN7_NP_22->SUBJECT_VERB_CXN14_SUBJECT_7DETERMINER_OPERATION_CXN7_NP_22->DETERMINEDNOUN_CXN8_NP_23DETERMINER_OPERATION_CXN7_DETERMINER_1?determinerDETERMINER_OPERATION_CXN7_DETERMINER_1->DETERMINEDNOUN_CXN8_MODIFIER_1JUMP6_JUMP_UNIT_1?jump-unitJUMP6_JUMP_UNIT_1->VP_CXN11_VERB_1JUMP6_JUMP_UNIT_1->MARKED_MODALITY_CXN9_BASE_FORM_1CAT_NOUN_LEX5_CAT_UNIT_1?cat-unitCAT_NOUN_LEX5_CAT_UNIT_1->DETERMINEDNOUN_CXN8_NOUN_12MODAL_WILL_LEX4_WILL_5?willMODAL_WILL_LEX4_WILL_5->MARKED_MODALITY_CXN9_MODAL_AUX_2JUMP_MORPH3_JUMP_UNIT_2?jump-unitJUMP_MORPH3_JUMP_UNIT_2->VP_CXN11_VERB_1JUMP_MORPH3_JUMP_UNIT_2->MARKED_MODALITY_CXN9_BASE_FORM_1JUMP_MORPH3_JUMP_UNIT_2->JUMP6_JUMP_UNIT_1WILL_MORPH2_WILL_6?willWILL_MORPH2_WILL_6->MARKED_MODALITY_CXN9_MODAL_AUX_2WILL_MORPH2_WILL_6->MODAL_WILL_LEX4_WILL_5CAT_NOUN_MORPH1_CAT_UNIT_2?cat-unitCAT_NOUN_MORPH1_CAT_UNIT_2->SINGULAR_CXN10_NOUN_6CAT_NOUN_MORPH1_CAT_UNIT_2->DETERMINEDNOUN_CXN8_NOUN_12CAT_NOUN_MORPH1_CAT_UNIT_2->CAT_NOUN_LEX5_CAT_UNIT_1THE0_DEFINITE_ARTICLE_1?definite-articleTHE0_DEFINITE_ARTICLE_1->DETERMINEDNOUN_CXN8_MODIFIER_1THE0_DEFINITE_ARTICLE_1->DETERMINER_OPERATION_CXN7_DETERMINER_1

4. Beyond Language Processing

Finally, we can also visualise the constructional dependencies that occur during planning. Here is the figure we get for planning with the pancake grammar, setting :labeled-paths to 'no-bindings:

gcluster_MAKE_PANCAKES10 make-pancakescluster_MAKE_PANCAKE_DOUGH9 make-pancake-doughcluster_COLLECT_PANCAKE_INGREDIENTS8 collect-pancake-ingredientscluster_TAKE_EGGS7 take-eggscluster_TAKE_MILK6 take-milkcluster_PREPARE_PAN5 prepare-pancluster_TAKE_PAN4 take-pancluster_TAKE_FLOUR3 take-flourcluster_TAKE_BOWL2 take-bowlcluster_TAKE_WHISK1 take-whiskcluster_TAKE_BUTTER0 take-butterMAKE_PANCAKES10_PANCAKE_DOUGH_844?pancake-doughMAKE_PANCAKES10_PAN_5496?panMAKE_PANCAKES10_PANCAKES_6?pancakesMAKE_PANCAKE_DOUGH9_INGREDIENTS_37?ingredientsMAKE_PANCAKE_DOUGH9_BOWL_5190?bowlMAKE_PANCAKE_DOUGH9_WHISK_5209?whiskMAKE_PANCAKE_DOUGH9_PANCAKE_DOUGH_845?pancake-doughMAKE_PANCAKE_DOUGH9_PANCAKE_DOUGH_845->MAKE_PANCAKES10_PANCAKE_DOUGH_844args: [?d]meaning: {pancake-dough(?d, ?bowl, ?w, ?i)}status: ¬bakedCOLLECT_PANCAKE_INGREDIENTS8_PANCAKE_INGREDIENTS_4214?pancake-ingredientsCOLLECT_PANCAKE_INGREDIENTS8_PANCAKE_INGREDIENTS_4214->MAKE_PANCAKE_DOUGH9_INGREDIENTS_37args: [?i]meaning: {pancake-ingredients(?i, ?i1, ?i2, ?i3)}COLLECT_PANCAKE_INGREDIENTS8_FLOUR_5420?flourCOLLECT_PANCAKE_INGREDIENTS8_EGGS_5385?eggsCOLLECT_PANCAKE_INGREDIENTS8_MILK_5388?milkTAKE_EGGS7_EGGS_5386?eggsTAKE_EGGS7_EGGS_5386->COLLECT_PANCAKE_INGREDIENTS8_EGGS_5385referent: ?eobject: eggsstatus: {in-use}TAKE_MILK6_MILK_5387?milkTAKE_MILK6_MILK_5387->COLLECT_PANCAKE_INGREDIENTS8_MILK_5388referent: ?mobject: milkstatus: {in-use}PREPARE_PAN5_STOVE_5130?stovePREPARE_PAN5_PAN_5498?panPREPARE_PAN5_BUTTER_5510?butterPREPARE_PAN5_PREPARED_PAN_8064?prepared-panPREPARE_PAN5_PREPARED_PAN_8064->MAKE_PANCAKES10_PAN_5496meaning: {prepared-pan(?pp, ?p, ?b, ?s)}TAKE_PAN4_PAN_5497?panTAKE_PAN4_PAN_5497->PREPARE_PAN5_PAN_5498referent: ?pobject: panstatus: {in-use}TAKE_FLOUR3_FLOUR_5421?flourTAKE_FLOUR3_FLOUR_5421->COLLECT_PANCAKE_INGREDIENTS8_FLOUR_5420referent: ?fobject: flourstatus: {in-use}TAKE_BOWL2_BOWL_5191?bowlTAKE_BOWL2_BOWL_5191->MAKE_PANCAKE_DOUGH9_BOWL_5190referent: ?bobject: bowlstatus: {in-use}TAKE_WHISK1_WHISK_5210?whiskTAKE_WHISK1_WHISK_5210->MAKE_PANCAKE_DOUGH9_WHISK_5209referent: ?wobject: whiskstatus: {in-use}TAKE_BUTTER0_BUTTER_5509?butterTAKE_BUTTER0_BUTTER_5509->PREPARE_PAN5_BUTTER_5510referent: ?bobject: butterstatus: {in-use}

We can see that in total, 11 actions have been performed to make the pancakes. 7 actions were take-... actions that could be independently performed based on the initial state. Then, a collect-pancakes-ingredients action matched on the ?flour, ?eggs and ?milk units, creating a new ?pancake-ingredients unit. The make-pancake-dough action then matched on the ?pancake- ingredients, ?whisk and ?bowl units and created a new ?pancake-dough unit. The prepare-pan action matches on the ?pan, ?butter and ?stove units and creates a new ?prepared-pan unit. Finally, the make-pancakes action matches on the ?prepared-pan unit and the pancake-dough unit and creates a new pancakes unit. The arrows are labelled with the features on which the actions match, and the bindings of these features. When looking at the make-pancakes action for example, we can see that it matches on a ?pancake-dough unit that does not have baked among its properties (marked in red in the figure). The make-pancakes construction will add baked to the properties of this unit, and indeed, pancake dough can only be baked a single time.