Ling 567: Lab 9
Nigel Kilmer and Woodley Packard

-----------------------------------------------
1. Manual translations of English MMT sentences
-----------------------------------------------

The translations are in the file "frr.txt".

We couldn't find a translation of "park", so we compromised by using 'guart'/"garden".

There are several sentences with unexpressed complements.  The reference grammar that we are working from does not allow optional complements.

To process the sentences involving "eat" with an unexpressed complement, we introduced an intransitive version of the "eat" verb.  This enabled us to translate sentences like "Dogs eat."

The verb "ask" is ditransitive; its ARG2 is the individual being asked a question, and its ARG3 is the question being asked.  In the MMT sentences it is used with an unexpressed ARG2.  We considered adding a singly transitive "ask" lexeme, but this would have put the clausal complement as ARG2 instead of ARG3.  Instead, we added an overt object pronoun 'di'/"you" to fill this role. 

-----------------------------------------------
2. Grammar Cleanup
-----------------------------------------------

a. Splitting of head-complement constructions

Following Sanghoun's advice on GoPost, we split head-complement constructions into scopal and nonscopal versions.  This was to address the problem that the main verb's event variable and the subordinated verb's event variable were being conflated in clause-embedding sentences.

This firstly involved keeping track of the feature SCOPE-ARG:

lex-rule :+  
 [ SYNSEM.SCOPE-ARG #scope, 
   DTR.SYNSEM.SCOPE-ARG #scope ]. 

headed-phrase :+ 
 [ SYNSEM.SCOPE-ARG #scope, 
   HEAD-DTR.SYNSEM.SCOPE-ARG #scope ]. 

noun-lex := .... [ SCOPE-ARG -, ....
verb-lex := .... [ SCOPE-ARG +, ....
complementizer-lex-item := .... [ SCOPE-ARG +, ....

We have several head-complement constructions, so we introduced hc-scopal and hc-nonscopal supertypes [ the constraints for hc-scopal are just what Sanghoun suggested ]:

hc-nonscopal := basic-head-comp-phrase & [ NON-HEAD-DTR.SYNSEM.SCOPE-ARG - ].

hc-scopal := head-valence-phrase & head-compositional & basic-binary-headed-phrase &
  [ SYNSEM phr-synsem-min & [ LOCAL [ CAT [ VAL [ SUBJ #subj, 
                                                                        SPR #spr ], 
                                                                POSTHEAD #ph, 
                                                                HC-LIGHT #light ], 
                                                       CONT.HOOK.INDEX #clause ], 
                                            LIGHT #light ], 
    HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ #subj, SPR #spr ], 
                                                  HC-LIGHT #light, 
                                                  POSTHEAD #ph ] ],  
   NON-HEAD-DTR.SYNSEM canonical-synsem & [ SCOPE-ARG +,                                                                                                                LOCAL.CONT.HOOK.CLAUSE-KEY #target ], 
   C-CONT [ RELS <! !>, 
                 HCONS <! !>, 
                 ICONS  <! info-str & [ CLAUSE #clause, TARGET #target ] !> ] ].

Next we needed types for scopal head-complement phrases for 1st complements and 2nd complements:

hc1-scopal := hc-scopal &
  [ SYNSEM.LOCAL.CAT.VAL.COMPS #comps,
    HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < #comp1 . #comps >, 
    NON-HEAD-DTR.SYNSEM #comp1 ].
hc2-scopal := hc-scopal &
  [ SYNSEM.LOCAL.CAT.VAL.COMPS < #skip . #comps >,
    HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS [ FIRST #skip, REST < #comp2 . #comps > ],
    NON-HEAD-DTR.SYNSEM #comp2 ].

FInally, we cross-classified all these to get the actual rule types (and of course instantiated them):

head-comp-phrase := basic-head-1st-comp-phrase & head-initial-head-nexus & hc-nonscopal.
head-comp-phrase-2 := basic-head-2nd-comp-phrase & head-initial-head-nexus & hc-nonscopal.
head-sc-comp-phrase := head-initial-head-nexus & hc1-scopal.
head-sc-comp-phrase-2 := head-initial-head-nexus & hc2-scopal.
comp-head-phrase := basic-head-1st-comp-phrase & head-final-head-nexus & uninverted & hc-nonscopal.
comp-head-phrase-2 := basic-head-2nd-comp-phrase & head-final-head-nexus & uninverted & hc-nonscopal.
comp-head-phrase-emb := basic-head-1st-comp-phrase & head-final-head-nexus & uninverted & embedded & hc-nonscopal.
sc-comp-head-phrase := head-final-head-nexus & uninverted & hc1-scopal.
sc-comp-head-phrase-2 := head-final-head-nexus & uninverted & hc2-scopal.
sc-comp-head-phrase-emb := head-final-head-nexus & uninverted & embedded & hc1-scopal.

Sanghoun suggests splitting the scopal variant yet again, with one version for CP complements and another version for VP complements, apparently to eliminate an extra ICONS element that appears when we use a complementizer.  Due to the sheer number of head complement phrase types, we did not (yet?) complete that secondary split.

b. Reimplementation of relative clauses using SLASH

Last week, we had a dubious implementation of relative clauses treating relative pronouns as complement-taking adjectives.  This week, we've redone the analysis to follow the ERG model more closely.  Relative pronouns are now semantically vacuous [ HEAD noun ] lexemes:

relative-pronoun := no-rels-hcons-icons-lex-item &
  [ SYNSEM [ LOCAL [ CAT [ HEAD noun & [ MOD < > ],
                       VAL [ SPR < >, SUBJ < >, COMPS < >, SPEC < > ] ],
                     CONT.HOOK #hook ],
             NON-LOCAL [ REL <! #hook !> ] ] ].

The nonempty REL list allows ordinary valence constructions to block relative pronouns from filling subject or complement positions, and also serves as a way to connect the INDEX of the gapped constituent with the INDEX of the modified constituent.

Our analysis assumes the argument position filled by the relative pronoun is SLASHed and then filled back in, in a two-rule process.  We only implemented subject extraction (but complement extraction would be a very similar rule):

extracted-subj-phrase := basic-extracted-subj-phrase & no-ccont-rule.

The relative clause constituent is built by a basic-filler-phrase derived rule:

relative-clause := basic-filler-phrase & no-ccont-rule &
  [ SYNSEM [ LOCAL [ CAT [
		HEAD adj & [ MOD < [ LOCAL intersective-mod & [ CAT [ HEAD noun, VAL.SPR <> ],
                                          CONT.HOOK [ INDEX #subjind ] ] ]
                                  > ],
		VAL [ SPR < >, SUBJ < >, COMPS < >, SPEC < > ],
		POSTHEAD + ] ] ],
    ARGS < relative-pronoun & [ SYNSEM.NON-LOCAL.REL <! [ INDEX #subjind ] !> ],
           [ SYNSEM.LOCAL.CAT [
               HEAD verb & [ FORM finite ],
               VAL [ SUBJ < > ] ] ] > ].

In this construction, a relative-pronoun subtype fills a SLASH in a finite verbal projection, resulting in (again) a [ HEAD adj ] constituent which can MOD-ify a noun.  The rule identifies the relative pronouns REL...INDEX with the MOD...INDEX, yielding the desired semantics.

To avoid admitting SLASHed analyses as sentences, we added [ NON-LOCAL non-local-none ] to the root condition.

Finally, in order to keep the diff-lists all happy, we added [ SLASH <! !> ] on our adjectives, adverbs, and prepositions lexical types.

There is some remaining spurious ambiguity in the relative order of application of xsubj vs adverb attachment and complement attachment.  This probably would not be hard to constrain, but we did not get around to it yet.

c. Lexical additions

We added a number of entries to our lexicon in order to be able to parse the MMT sentences, but they all used existing lexical types.

Last week, we had analysed the multi-word preposition 'uk aur'/"out over" by adding a period, transforming it into the pseudoword 'uk.aur'.  This week, we've revised that lexical entry to make use of the words-with-spaces support in the formalism:

uk-aur := prep-lex &
  [ STEM < "uk", "aur" >,
    SYNSEM.LKEYS.KEYREL.PRED "_out_over_p_rel" ].

We also re-added the lexical entry for 'luki', which is used in one of our corpus sentences but had been lost due to version control mishaps last week:

luki := intrans-verb-verb-lex &
  [ STEM < "luki" >,
    SYNSEM.LKEYS.KEYREL.PRED "_look_v_rel" ].

d. Miscellaneous constraint tightening

We added the constraint [ FORM finite ] to the COMPS specification for our clause-embedding verb type, which reduces ambiguity by blocking (for example) modal infinitive forms (which sometimes look just like finite forms) from building embedded clauses.

We added the 'uninverted' supertype to comp-head-phrase-emb and sc-comp-head-phrase-emb, to prevent the inv-lr from applying inside of embedded clauses.  Verb-initial word order is never legal in embedded clauses, and the other word orders that were showing up with inv-lr had alternate analyses without it.

We required S coordination structures to be [ FORM finite ] both on the mother and on the daughters, preventing coordinates of non-finite verbal projections from masquerading as finite:

s-coord-phrase :+ [ SYNSEM.LOCAL.CAT.HEAD.FORM finite ].
s-coord-phrase :+ [ SYNSEM.LOCAL.CAT.HEAD.FORM #f, LCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD.FORM #f, RCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD.FORM #f ].
s-bottom-coord-phrase :+ [ SYNSEM.LOCAL.CAT.HEAD.FORM #f, NONCONJ-DTR.SYNSEM.LOCAL.CAT.HEAD.FORM #f ].


-----------------------------------------------
3. Transfer rules we instantiated
-----------------------------------------------

We instantiated pro-insert-arg1-mtr, pro-insert-arg2-mtr, and pro-insert-arg3-mtr in order to produce overt pronoun semantics when translating from prodrop languages like Italian.

We also instantiated hurt-mtr in order to rewrite hurt_v_rel(e,x1,x2) as make_v_rel(e,x1,x3,x2) ^ exist(x3) ^ harm(x3)


-----------------------------------------------
4. Transfer rules we wrote -- and other harmonization
-----------------------------------------------

We wrote one additional transfer rule, which rewrites "_eat_v_rel" to have no ARG2 when the thing being eaten is uninstantiated:

eat-intr := monotonic_mtr &
[ INPUT [ RELS <! [ PRED "_eat_v_rel",
                     LBL #lbl, ARG0 #arg0, ARG1 #arg1,
		     ARG2 #arg2 & x ] !> ],
  FILTER [ RELS <! [ ARG0 #arg2 ] !> ],
  OUTPUT [ RELS <! [ PRED "_eat_v_rel",
                     LBL #lbl, ARG0 #arg0, ARG1 #arg1 ] !> ],
  FLAGS [ EQUAL < #arg2 > ]].

This rule was necessary when translating with KNOPPIX+LKB, but unnecessary when translating with the LOGON tree.  We aren't sure why there's a difference in behavior between these systems.

Our translation could also benefit from a transfer rule to instantiate the ARG2 of "ask" when it is missing, but we did not pursue this.

We had to make changes to several predicate names in our grammar, to harmonize them with the `eng' and `ita' grammars:

"pronoun_rel" => "_pronoun_n_rel".
"neg_rel"     => "_neg_r_rel"
"_give_v_rel" => "_make_v_rel" [ to accommodate the accommodation transfer rule, and the Italian semantics of "It doesn't hurt me." ]
"_quickly_a_rel" => "_quick_a_rel" [ also in `eng' and `ita', as per GoPost ]

We improved our VPM to default PNG.NUM to `singular' for referential indices even when the feature is missing on the input.

We also improved our VPM to default the SF feature to `prop' for events even when SF is not present.  Last week we only defaulted to `prop' when `prop-or-ques' was given on the input.

-------------------------------------------------
5, 6. Translation from `eng' and `ita' into `frr'
-------------------------------------------------

We successfully translate 18 of the 19 `eng' sentences and 15 of the 16 `ita' sentences. The sentences that we could not translate were the ones involving 'ask' with the second argument dropped.

There is systematic ambiguity in Frisian as to which determiner to use: a bare NP is completely underspecified for COG-ST, and hence can appear in translations of both definite and indefinite NPs.  Indefinite NPs additionally can appear with the determiner "en", and definite NPs can appear with either "di" or "de" (or "dit" for neuter gender).  This results in a factor of 2 ambiguity for each indefinite NP, and a factor of 3 ambiguity for each definite NP.  That fans out pretty quickly!

Additionally, we currently analyse both SVO and OVS (in addition to adverb-V-S-O and adverb-V-O-S) as acceptable word orders for declarative main clause.  After re-reading the relavent section of our reference grammar, we are considering changing this analysis to disallow OVS word order.  For now, we are considering this additional factor of two in transitive sentence realisations legitimate.

A few sentences warrant individual comments:

eng->frr: "it doesnt hurt me."
  For this sentence, we produce realizations with three different pronouns for the subject, corresponding to the three different genders.  We would like to be able to default the incoming gender to, say, neuter, but this would break translations of other nouns, where English will have nothing to say about the gender, but Frisian demands the correct lexeme-by-lexeme GENDER values.

eng->frr: "I think that you know that dogs chase cars."
ita->frr: "Pens-o che sai che cani insegu-ono macchine"
  The behavior is the same whether coming from English or from Italian.  This sentence cannot be generated in Frisian with an edge limit of 10,000 edges.  With an edge limit of 40,000, we can successfully translate it -- with 2592 results!  A cursory inspection suggests that they are all valid, but there are some duplicated results.  Clicking on them seems to produce identical trees for more than one copy of a result, so we aren't sure how to resolve this.

eng->frr: "I ask whether you know that dogs chase cars."
  We are unable to translate this sentence, since the ARG2 of "ask" is uninstantiated in the English MRS, but obligatory in Frisian.  We probably could address this with a transfer rule.
