;;; -*- Mode: tdl; Coding: utf-8; -*- ;;; Verbs: near-equivalence ;; like_enjoy_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. like_love_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. shower_bathe_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. bathe_wash_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. takeaway_steal_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. takeaway_take_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. return_go_back_mt := word_hcons_mtr & [ INPUT.RELS , OUTPUT [ RELS , HCONS ] ]. ;; Exclude conjoined NP subjects by constraining PRED value agentless_passive_name_mt := agentless_passive_omtr & [ INPUT.RELS.LIST < [ ], [ PRED named_rel ], ... > ]. agentless_passive_pron_mt := agentless_passive_omtr & [ INPUT.RELS.LIST < [ ], [ PRED pron_rel ], ... > ]. agentless_passive_noun_mt := agentless_passive_omtr & [ INPUT.RELS.LIST < [ ], [ PRED "~._n_" ], ... > ]. drop_cause_mt := causative-inchoative_omtr & [ INPUT.RELS.LIST < [ PRED "_drop_v_cause_rel" ], ... >, OUTPUT.RELS ]. break_cause_mt := causative-inchoative_omtr & [ INPUT.RELS.LIST < [ PRED "_break_v_cause_rel" ], ... >, OUTPUT.RELS ]. drop_fall_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. travel_go_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. drive_go_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. eat_have_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. buy_get_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. house_home_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. pizza_food_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. steak_meat_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. meat_food_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. cheese_food_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. sailor_man_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. ;;; Verbs - object restriction ;; make_cook_br_mt := word_mtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS ]. make_cook_dn_mt := word_mtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS ]. make_cook_steak_mt := word_mtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS ]. make_build_fort_mt := word_mtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS ]. work-on_do_homework_mt := word_mtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS ]. feed_give_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. ;; "spicy food" => "food that is spicy" ;; mod_word_rel_clause_mt := norm_monotonic_omtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS , FLAGS.EQUAL < #e2, #lbl > ]. ;; "small flower" => "flower" ;; "three flowers" => "flowers" ;; ;; DPF 2013-10-16 - The [ARG2 event] on the input rel is a trick to block ;; applicability to two-argument modifiers such as compound_rel, taking ;; advantage of there being no predications that take an ARG2 of type event. ;; The alternative would be to restrict by PRED value, somehow including ;; "*_a_*" and card_rel but excluding compound_rel. Or have two or more ;; rules to enumerate the permissible PRED values. ;; mod_word_deletion_mt := norm_monotonic_omtr & [ CONTEXT.RELS , INPUT.RELS , OUTPUT.RELS , FLAGS.EQUAL < #e2, #lbl > ]. ;; "flower in the pot" => "flower" ;; "flower pot" => "pot" mod_phrase_deletion_mt := np_deletion_omtr & [ FILTER.RELS , CONTEXT.RELS , INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ], FLAGS.SUBSUME < #x2, #h1 > ]. pet_animal_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_pet_n_1_rel" ], ... > ]. shepherd_boy_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_shepherd_n_1_rel" ], ... > ]. turkey_friend_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_turkey_n_1_rel" ], [ ], [ PRED "_friend_n_1_rel" ], ... > ]. mother_bear_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_mother_n_of_rel" ], ... >, OUTPUT.RELS ]. baby_bear_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_baby_n_1_rel" ], ... > ]. bear_cub_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_bear_n_1_rel" ], ... > ]. chile_plant_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_chile_n_1_rel" ], ... > ]. tomato_plant_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED "_tomato_n_1_rel" ], ... > ]. ;; |Xhosa people| => |Xhosa| named_people_ch_deletion_mt := compound_head_deletion_omtr & [ INPUT.RELS.LIST < [ PRED named_rel, CARG #carg ], [ ], [ PRED "_people_n_of_rel" ], ... >, OUTPUT.RELS ]. ;; "Wednesday night" => "Wednesday" morning_deletion_mt := day_part_deletion_omtr & [ INPUT.RELS.LIST.FIRST.PRED "_morning_n_of_rel" ]. afternoon_deletion_mt := day_part_deletion_omtr & [ INPUT.RELS.LIST.FIRST.PRED "_afternoon_n_of_rel" ]. evening_deletion_mt := day_part_deletion_omtr & [ INPUT.RELS.LIST.FIRST.PRED "_evening_n_of_rel" ]. night_deletion_mt := day_part_deletion_omtr & [ INPUT.RELS.LIST.FIRST.PRED "_night_n_of_rel" ]. poss_ppof_mt := possessive_ppof_omtr & [ INPUT.HOOK.INDEX #ind, OUTPUT.HOOK.INDEX #ind ]. appos_2_deletion_mt := appos_deletion_omtr & [ INPUT.RELS , OUTPUT.RELS ]. appos_1_deletion_mt := appos_1_deletion_omtr & [ INPUT.RELS.LIST.FIRST.PRED "~._n_", OUTPUT.RELS.LIST.FIRST.ARG0.PNG.GEN real_gender ]. appos_1_named_deletion_mt := appos_1_deletion_omtr & [ INPUT.RELS.LIST.FIRST [ PRED named_rel, CARG #carg ], OUTPUT.RELS.LIST.FIRST.CARG #carg ]. ;; |we baked Kim a cake.| => |we baked a cake.| ;; dative_deletion_mt := dative_object_deletion_omtr & [ INPUT.RELS.LIST < [ ARG2 #x2, ARG3 #x3 ], [ ARG0 #x3 ], ... >, OUTPUT.RELS ]. ;; This one seems dubious: don't want |we baked him|, |we sent her| ;; So block for now, and remind ourselves of where it is useful, if at all. #| dative_dobj_deletion_mt := dative_object_deletion_omtr & [ INPUT.RELS.LIST < [ ARG2 #x2, ARG3 #x3 ], [ ARG0 #x2 ], ... >, OUTPUT.RELS ]. |# ;; "the flowers" => "flowers" determiner_deletion_pl_mt := quantifier_substitution_omtr & [ INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ] ]. determiner_deletion_ms_mt := quantifier_substitution_omtr & [ INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ] ]. ;; "both flowers" => "the flowers" ;; ? "both flowers" => "both (of) the flowers" ;; both_the_subst_mt := quantifier_substitution_omtr & [ INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ] ]. the_a_subst_mt := quantifier_substitution_omtr & [ INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ] ]. ;; "in the summer" => "in summer" the_season_subst_mt := quantifier_substitution_omtr & [ CONTEXT.RELS , INPUT [ HOOK.INDEX #ind, RELS ], OUTPUT [ HOOK.INDEX #ind, RELS ] ]. ;; "the flowers" => "they", "the book" => "it" ;; DPF 2015-04-03 - Divided into two rules, one for singular that preserves ;; GEN, and one for plural that drops gender, so we can still generate with ;; |they, them, their| with GEN unspecified. ;; pronoun_sg_subst_mt := pronoun_substitution_omtr & [ INPUT.RELS.LIST < [ PRED "~._n_", ARG0.PNG.PN sg ], ... >, OUTPUT.RELS.LIST < [ ARG0.IND bool ], ... > ]. ;; Drop gender for plurals pronoun_pl_subst_mt := pronoun_substitution_omtr & [ INPUT.RELS.LIST < [ PRED "~._n_", ARG0.PNG.PN pl ], ... >, OUTPUT.RELS.LIST < [ ARG0 [ PNG.GEN real_gender, IND bool ] ], ... > ]. ;; family: they pronoun_grp_subst_mt := pronoun_substitution_omtr & [ INPUT.RELS.LIST < [ PRED "_family_n_of_rel", ARG0.PNG.PN sg ], ... >, OUTPUT.RELS.LIST < [ ARG0 [ PNG [ PN 3p, GEN real_gender ], IND bool ] ], ... > ]. pronoun_name_subst_mt := norm_monotonic_omtr & [ FILTER.RELS , INPUT.RELS , OUTPUT.RELS , FLAGS.EQUAL < #h1 > ]. ;; "are growing" => "are" verb_ellipsis_mt := norm_monotonic_omtr & [ INPUT.RELS , OUTPUT.RELS , FLAGS.EQUAL < #e2, #h1 > ]. ;; "in the garden" => "there" locative_anaphora_mt := norm_monotonic_omtr & [ INPUT.RELS , OUTPUT.RELS ]. prog_nonprog_mt := norm_monotonic_omtr & [ INPUT.RELS , OUTPUT.RELS , FLAGS.EQUAL < #e2 > ]. coord_vp_prop_mt := coord_vp_named_mtr. coord_vp_pron_mt := coord_vp_pron_mtr. coord_vp_noun_mt := coord_vp_noun_mtr. #| ;;; Verbs - full lexical congruence start_commence_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. shower_bathe_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. bathe_wash_mt := word_mtr & [ INPUT.RELS , OUTPUT.RELS ]. |# and_reverse_mt := conj_reverse_mtr & [ INPUT.RELS , OUTPUT.RELS ]. or_reverse_mt := conj_reverse_mtr & [ INPUT.RELS , OUTPUT.RELS ]. but_reverse_mt := conj_reverse_mtr & [ INPUT.RELS , OUTPUT.RELS ]. pro_subj_noconj_mt := pro_subj_mtr. pro_subj_conj_mt := conjnct_pro_coord_subj_mtr.