OK, I’m really new to Linguistics and NL* (but not software engineering in general), so I’m sorry if this is naive: I’m trying to do a logic based analysis on English sentences using the MRS output of the ERG.
Currently, I’m just trying to convert the MRS output for a sentence into any logical (or semi-logical) form to get my head around the problem. I would appreciate any pointers to docs that describe how to do this, or how someone did it, in any domain.
Here’s where I’ve gotten and some issues I’ve had to illustrate what I’m looking for:
Producing Valid Trees from the MRS
I believe I am now currently putting together all valid forms of an MRS tree, in a predicate logic “ish” form:
Where are you?
pronoun_q(x5, which_q(x4, place_n(x4), pron(x5)), loc_nonsp(e3, x5, x4))
which_q(x4, place_n(x4), pronoun_q(x5, pron(x5), loc_nonsp(e3, x5, x4)))
which_q(x4, pronoun_q(x5, pron(x5), place_n(x4)), loc_nonsp(e3, x5, x4))
pronoun_q(x5, pron(x5), which_q(x4, place_n(x4), loc_nonsp(e3, x5, x4)))
First Issue: Logical form of General Qualifier Predicates
I’m now trying to drill down on implementing the predicates. What I really need is a definition of what each quantifier predicate is doing logically. I.e. the classic “Everyone” predicate might be defined like this:
Everyone → {X : a ∈ X}
My assumption (probably wrong) is that the quantifier predicates (the ones with RSTR and BODY) each represent a Generalized Quantifier which has a formal logic function of some kind and the people writing the rules of the grammar are effectively converting utterances into a structure that uses these to represent the logical form of the utterance.
Maybe all of these predicates just represent Generalized Quantifier forms that are “just known” in the linguistics community and listed in a bunch of academic publications? If so, I’d love any pointers you have to a good source that might compile them up as a reference…
Second Issue: evaluating Generalized Quantifier predicates
My (possibly very naive) confusion is in understanding how the scoping of quantifiers works. For a statement like this:
pronoun_q(x5, pron(x5), which_q(x4, place_n(x4), loc_nonsp(e3, x5, x4)))
I believe I should process the “pronoun_q” predicate (conceptually) like this:
- Start with the entire universe of things in x5.
- Restrict x5 down to be just those that have the property “pron”.
- Run the quantifier “pronoun_q” on that set to produce a quantified set by doing…whatever pronoun_q does…and place that into x5
- Finally, use the value of x5 in the body of the quantifier wherever that variable is specified.
If I’m just way off base with this, I’d love any pointers that will help me understand better.
Assuming I’m basically on the right track, I’m struggling with how to process the “which_q” predicate of this one:
pronoun_q(x5, which_q(x4, place_n(x4), pron(x5)), loc_nonsp(e3, x5, x4))
For this case, processing the restriction, place_n(x4), and the predicate, which_q, proceeds as before. But: I don’t understand how to think about the body since it doesn’t include the x4 variable in it at all. Does that mean it is simply not affected by the RSTR?
Again, could be way off track here, I’m swapping in a lot of background…
Sorry for the long post, appreciate any pointers in the right direction!
Eric