delph-in / matrix

The Grammar Matrix
https://matrix.ling.washington.edu/index.html
Other
12 stars 6 forks source link

Morphotactics validation #244

Open goodmami opened 4 years ago

goodmami commented 4 years ago

Migrated from Trac:

The attached choices file leads to a grammar that won't load. I think this is something to be checked in validation, but it could be that it's really customization that needs to be fixed. At any rate, the heart of the matter is the interaction between the requires constraints (and flag features) from morphotactics and the ability to define a type hierarchy for nouns. More specifically, if the "requires" constraint points to only one dimension of a cross-classification, we don't want the types from the other dimensions to get the na-or-- value for that constraint.

goodmami commented 4 years ago

Still an issue. Compiling (with ACE) the customized grammar using the choices file from the Trac issue, I see this:

$ ace -g ace/config.tdl -G mar.dat
reading configuration       from `ace/config.tdl'
grammar version             Marathi (2020-07-29_09:19:28_UTC)
reading grammar             from `ace/../marathi-pet.tdl'
reading types               from `ace/../head-types.tdl'
reading types               from `ace/../matrix.tdl'
reading types               from `ace/../marathi.tdl'
reading types               from `ace/../mtr.tdl'
reading lexical entries     from `ace/../lexicon.tdl'
reading rules               from `ace/../rules.tdl'
reading lexical rules       from `ace/../lrules.tdl'
reading lexical rules       from `ace/../irules.tdl'
reading instance            from `ace/../labels.tdl'
reading instance            from `ace/../roots.tdl'
checking for glbs...        57 ms
tdl: requested unification failed
unify failed at path: INFLECTED COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG 
  might have been trying to unify types + + na-or--
lhs: #D[pronoun_lexeme-noun-lex ARGS: #D[list] STEM: #D[list] SYNSEM: #D[synsem LOCAL: #D[mod-local CONT: #D[*top* RELS: #D[diff-list LIST: #D[cons FIRST: <1>= #D[noun-relation PRED: #D[predsort] WLINK: #D[list] LBL: <2>= #D[handle INSTLOC: #D[string] ] ARG0: <3>= #D[ref-ind INSTLOC: #D[string] SORT: #D[semsort] COG-ST: #D[cog-st] SPECI: #D[bool] PNG: #D[png PERNUM: #D[pernum] GEND: #D[gender] ] ] ] REST: <4>= #D[list] ] LAST: <4> ] HOOK: #D[*top* INDEX: <3> LTOP: <2> ] HCONS: #D[diff-list LIST: <5>= #D[list] LAST: <5> ] ICONS: #D[diff-list LIST: <6>= #D[list] LAST: <6> ] ] COORD: #D[-] CAT: #D[*top* HEAD: #D[noun MOD: #D[null] PRD: #D[bool] KEYS: #D[keys_min] PRON: #D[bool] AUX: #D[bool] FORM: #D[form] CASE: #D[case] ] VAL: #D[*top* SPR: #D[cons FIRST: <7>= #D[*top* LOCAL: #D[*top* CAT: #D[*top* HEAD: #D[det MOD: #D[list] PRD: #D[bool] KEYS: #D[keys_min] PRON: #D[bool] AUX: #D[bool] FORM: #D[form] ] ] ] OPT: #D[+] NON-LOCAL: #D[*top* SLASH: <8>= #D[*top*] REL: <9>= #D[*top*] QUE: <10>= #D[*top*] ] ] REST: #D[null] ] SPEC: #D[null] COMPS: #D[null] SUBJ: #D[null] ] ] ] LKEYS: #D[*top* KEYREL: <1> ] OPT: #D[bool] OPT-CS: #D[cog-st] NON-LOCAL: #D[non-local-min SLASH: <8> REL: <9> QUE: <10> ] L-PERIPH: #D[luk] R-PERIPH: #D[luk] ] KEY-ARG: #D[bool] INFLECTED: #D[inflected TOBE_AUX_INFLECTION-FLAG: #D[luk] TOBECOME_AUX_VERB_LEXEME-AUX-FLAG: #D[luk] PRESENT_LEXICAL_RULE-FLAG: #D[luk] CASE-FLAG: #D[-] TOBECOME_AUX_INFLECTION-FLAG: #D[luk] FUTURE_LEXICAL_RULE-OR-PAST_LEXICAL_RULE-FLAG: #D[luk] F_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] M_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] N_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] VERB_TENSE-FLAG: #D[luk] AUX-FLAG: #D[luk] COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG: #D[+] INTRANS_VERB_LXM-VERB-OR-TRANS_VERB_LXM-VERB-FLAG: #D[luk] VERB_GENDER_FUTURE-OR-VERB_GENDER_PAST-OR-VERB_GENDER_PRESENT-FLAG: #D[luk] TOBE_AUX_VERB_LEXEME-AUX-FLAG: #D[luk] ] ALTS: #D[alts-min] ARG-ST: #D[cons FIRST: <7> REST: #D[null] ] ]
rhs: #D[*top* INFLECTED: #D[*top* F_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] M_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] N_NOUN_LEXEME-NOUN-FLAG: #D[na-or--] COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG: #D[na-or--] ] ]
hint: dagify failed
tdl: top-level error occured near ace/../marathi.tdl:159

Here are the relevant parts from marathi.tdl:

1sg_pronoun_lexeme-noun-lex := 1sg_noun_lexeme-noun-lex & pronoun_lexeme-noun-lex &
  [ INFLECTED [ COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG na-or--,
                M_NOUN_LEXEME-NOUN-FLAG na-or--,
                F_NOUN_LEXEME-NOUN-FLAG na-or--,
                N_NOUN_LEXEME-NOUN-FLAG na-or-- ] ].

pronoun_lexeme-noun-lex := no-spr-noun-lex &
  [ INFLECTED [ COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG +,
                M_NOUN_LEXEME-NOUN-FLAG na-or--,
                F_NOUN_LEXEME-NOUN-FLAG na-or--,
                N_NOUN_LEXEME-NOUN-FLAG na-or-- ] ].

The values for INFLECTED.COMMON_NOUN_LEXEME-NOUN-OR-PRONOUN_LEXEME-NOUN-FLAG are incompatible.