Translation mystery (with ace)

Hi all, but especially @sweaglesw!

I’m gearing up for the Ling 567 MMT extravaganza next week and have turned up a mystery (which feels kind of familiar, but I couldn’t quickly find any prior records of discussing it, either). When I have sentences with multiple clause embedding argument roles, something about the transfer step breaks a connection such that any clause is allowed in any of those spots:

ubuntu@lkb:~/mmt$ echo “Dogs sleep because cats eat” | ace -TF1 -g grammars/eng/eng.dat | ace -e -g grammars/eng/eng.dat
NOTE: 1 readings, added 223 / 119 edges to chart (40 fully instantiated, 35 actives used, 28 passives used) RAM: 994k
NOTE: parsed 1 / 1 sentences, avg 994k, time 0.01597s
Because cats eat dogs sleep
Dogs sleep because cats eat
NOTE: 109 passive, 576 active edges in final generation chart; built 131 passives total. [2 results]

NOTE: generated 1 / 1 sentences, avg 6013k, time 0.03843s
NOTE: transfer did 4 successful unifies and 6 failed ones
ubuntu@lkb:~/mmt$ echo “Dogs sleep because cats eat” | ace -g grammars/eng/eng.dat | ace -g tm/eng/eng.dat 2>/dev/null | ace -g grammars/eng/eng.dat -e --disable-subsumption-test 2>/dev/null | more
NOTE: 1 readings, added 223 / 119 edges to chart (40 fully instantiated, 35 actives used, 28 passives used) RAM: 994k
NOTE: parsed 1 / 1 sentences, avg 994k, time 0.01779s
Because dogs sleep cats eat
Because cats eat dogs sleep
Cats eat because dogs sleep
Dogs sleep because cats eat

Starting at the MRSes output from parsing (which when used directly as generator input doesn’t have this problem) v. transfer, I can’t see what might be causing this. Any ideas?

SENT: The dog sleeps because the cat eats

Parser output:

[ LTOP: h0 INDEX: e2 [ e SF: prop-or-ques TENSE: present ASPECT: aspect MOOD: mood ] RELS: < [ “exist_q_rel”<-1:-1> LBL: h4 ARG0: x5 [ x SPECI: bool COG-ST: uniq+fam+act PER: third NUM: sg ] RSTR: h6 BODY: h7 ] [ “_dog_n_rel”<-1:-1> LBL: h8 ARG0: x5 ] [ “_sleep_v_rel”<-1:-1> LBL: h9 ARG0: e2 ARG1: x5 ] [ “_because_subord_rel”<-1:-1> LBL: h1 ARG0: i10 ARG1: h11 ARG2: h12 ] [ “exist_q_rel”<-1:-1> LBL: h13 ARG0: x14 [ x SPECI: bool COG-ST: uniq+fam+act PER: third NUM: sg ] RSTR: h15 BODY: h16 ] [ “_cat_n_rel”<-1:-1> LBL: h17 ARG0: x14 ] [ “_eat_v_rel”<-1:-1> LBL: h18 ARG0: e19 [ e SF: prop-or-ques TENSE: present ASPECT: aspect MOOD: mood ] ARG1: x14 ARG2: x20 [ x SPECI: bool COG-ST: type-id ] ] > HCONS: < h0 qeq h1 h6 qeq h8 h11 qeq h9 h12 qeq h18 h15 qeq h17 > ICONS: < > ]

Transfer output:

[ LTOP: h0 INDEX: e1 [ e TENSE: present ASPECT: aspect SF: prop-or-ques ] RELS: < [ “exist_q_rel”<-1:-1> LBL: h2 ARG0: x3 [ x PER: third NUM: sg COG-ST: uniq+fam+act ] RSTR: h4 BODY: h5 ] [ “_dog_n_rel”<-1:-1> LBL: h6 ARG0: x3 ] [ “_sleep_v_rel”<-1:-1> LBL: h7 ARG0: e1 ARG1: x3 ] [ “_because_subord_rel”<-1:-1> LBL: h8 ARG0: i9 ARG1: h10 ARG2: h11 ] [ “exist_q_rel”<-1:-1> LBL: h12 ARG0: x13 [ x PER: third NUM: sg COG-ST: uniq+fam+act ] RSTR: h14 BODY: h15 ] [ “_cat_n_rel”<-1:-1> LBL: h16 ARG0: x13 ] [ “_eat_v_rel”<-1:-1> LBL: h17 ARG0: e18 [ e TENSE: present ASPECT: aspect SF: prop-or-ques ] ARG1: x13 ARG2: x19 [ x COG-ST: type-id ] ] > HCONS: < h0 qeq h8 h4 qeq h6 h10 qeq h7 h11 qeq h17 h14 qeq h16 > ICONS: < > ]

Because the dog sleeps the cat eats
Because the cat eats the dog sleeps
The cat eats because the dog sleeps
The dog sleeps because the cat eats

Something analogous happens with the input sentence I think that you know that dogs sleep, where “I think” and “you know” can swap positions.

I don’t recall seeing this problem before, although my memory has been surprisingly bad recently.

I don’t immediately see a difference between the two MRSes that would lead to that result. I do notice you used a different command-line to generate from them: one has --disable-subsumption-test and the other doesn’t. I assume you have checked that using --disable-subsumption-test on the MRS straight out of the parser does not cause the same problem? I will stare at the two MRSes a little bit longer and see if something else emerges.

I looked pretty carefully at those MRSes and I think the only difference is that the transferred one is missing the underspecified SPECI and MOOD variable properties. It doesn’t seem intuitive to me that that could cause the difference. I remain suspicious that --disable-subsumption-test is responsible for the difference. If that turns out to be the case, I’m not sure what your best path forward is. Ideally the grammar should let the generator block producing that hypothesis even without the subsumption test. I would expect this to be possible if the definition of qeq includes something like [ HARG.INSTLOC #1, LARG.INSTLOC #1 ].

You are right on both counts! Adding --disable-subsumption-check to the call reproed the output, and adding this to the grammar got rid of it:

qeq :+
[ HARG.INSTLOC #il,
LARG.INSTLOC #il ].