;;; Hey, emacs(1), this is -*- Mode: TDL; Coding: utf-8; -*- got it? ;;; ;;; Rule types used by jaen but not sharable for all other language pairs ;;; ;; ;; reversible rules ;; - should they be a seperate type witth CONTEXT set to null? monotonic_mtr := mrs_transfer_rule & [ CONTEXT [ LTOP #h, INDEX #i ], INPUT #j & [ LTOP #h, INDEX #i ], OUTPUT #e &[ LTOP #h, INDEX #i ], JA #j, EN #e]. n_conj_mtr := monotonic_mtr & [ INPUT [ RELS < [ LBL #h1, ARG0 #i1, L-INDEX #i3, R-INDEX #i5 ] >], OUTPUT.RELS < [ LBL #h1, ARG0 #i1, L-INDEX #i3, R-INDEX #i5 ] > ]. n_conj_omtr := n_conj_mtr & optional_mtr. conj_subord_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, ARG0 #e1, L-HNDL #hl, R-HNDL #hr, R-INDEX #e1 ] >, OUTPUT.RELS < [ LBL #h1, ARG0 #e1, ARG1 #hr, ARG2 #hl ] > ]. ;; Take an arg1 predicate with an argument and make an arg0 predicate. ;; eg 雨が降る -> it rains arg1+np_arg0_v_mtr := monotonic_mtr & [ INPUT [ RELS < [ ARG0 #ame, LBL #h4 ], [ ARG0 #ame, RSTR #h7 ], [ ARG0 #furu, ARG1 #ame, LBL #h ] >, HCONS < qeq & [ HARG #h7, LARG #h4 ] > ], OUTPUT.RELS < [ ARG0 #furu, LBL #h ] >, FLAGS.EQUAL < #ame > ]. arg1+np_arg0_v_omtr := arg1+np_arg0_v_mtr & optional_mtr. adj+n_adj+n_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, ARG0 #e2, ARG1 #x3 ], [ LBL #h4, ARG0 #x3 ] >, OUTPUT.RELS < [ LBL #h1, ARG0 #e2, ARG1 #x3 ], [ LBL #h4, ARG0 #x3 ] >]. adj+n_adj+n_omtr := adj+n_adj+n_mtr & optional_mtr. n_adj+n_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, ARG0 #x2 ] >, OUTPUT.RELS < [ LBL #h1, ARG0 e_untensed, ARG1 #x2 ], [ LBL #h1, ARG0 #x2 ] > ]. n_adj+n_omtr := n_adj+n_mtr & optional_mtr. ; Experimental rule types for Ja-En MT system -- eric-n 2006/8/30 n_adj_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h, ARG0 #x ] >, OUTPUT.RELS < [ LBL #h, ARG0 e & [ TENSE UNTENSED, MOOD INDICATIVE ], ARG1 #x ] > ]. n_adj_omtr := n_adj_mtr & optional_mtr. n_adj+time_n_rel-mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h, ARG0 #x ] >, OUTPUT.RELS < [ LBL #h, ARG0 e & [ TENSE UNTENSED, MOOD INDICATIVE ], ARG1 #x ], [ PRED time_n_rel, LBL #h, ARG0 #x ] > ]. ; vn_mtr := monotonic_mtr & ; [ CONTEXT.RELS < [ PRED udef_rel, ARG0 #x0, RSTR #h2 ] >, ; INPUT [ RELS < [ LBL #h0, ARG0 #x0 ], ; [ PRED proposition_m_rel, LBL #h4, ARG0 #x0, MARG #h5 ], ; [ PRED "noun-relation", LBL #h6, ARG0 #x0, ARG1 #h4 ] >, ; HCONS < qeq & [ HARG #h5, LARG #h0 ], ; qeq & [ HARG #h2, LARG #h6 ] > ], ; OUTPUT [ RELS < [ LBL #h0, ARG0 #x0 ] >, ; HCONS < qeq & [ HARG #h2, LARG #h0 ] > ] ]. ; vn_omtr := vn_mtr & optional_mtr. pn_mtr := noun_mtr & [ INPUT.RELS < [ PRED "ja:named_rel" ]>, OUTPUT.RELS < [ PRED named_rel ] > ]. pn_omtr := proper_noun_mtr & optional_mtr. ; adj_n_mtr := monotonic_mtr & ; [ INPUT [ RELS < [ LBL #h4, ARG0 #e2 ] ; [ PREP "ja:proposition_m_rel", LBL #h1, ARG0 #e2, MARG #h3 ] >, ; HCONS < qeq & [ HARG #h3, LARG #h4 ] > ], ; OUTPUT [ RELS < [ LBL #h4, ARG0 x & #x5 ], ; [ PRED udef_q_rel, LBL h & #h6, ; ARG0 #x5, RSTR h & #h7, BODY h ] >, ; HCONS < qeq & [ HARG #h7, LARG #h4 ] > ] ]. adj_n_mtr := monotonic_mtr. adj_n_omtr := adj_n_mtr & optional_mtr. ;;; 1 50 残念 : 2 0 bad luck -- adj_adj+n_mtr adj_adj+n_mtr := monotonic_mtr. adj_adj+n_omtr := adj_adj+n_mtr & optional_mtr. adj_n+n_mtr := monotonic_mtr. adj_n+n_omtr := adj_adj+n_mtr & optional_mtr. n+n_adj+n_mtr := monotonic_mtr & [ INPUT [ RELS < [ LBL #h1, ARG0 #x2 ], [ LBL #h3, ARG0 #x4 ], [ PRED compound_rel, LBL #h3, ARG1 #x4, ARG2 #x2 ], [ PRED "ja:udef_rel", ARG0 #x2, RSTR #h5 ] >, HCONS < qeq & [ HARG #h5, LARG #h1 ] > ], OUTPUT [ RELS < [ LBL #h3, ARG0 e_untensed, ARG1 #x4 ], [ LBL #h3, ARG0 #x4 ] > ] ]. n+n_adj+n_omtr := n+n_adj+n_mtr & optional_mtr. ; experimental rules for verb<->adjective. alias to arg1_v for now -- eric-n adj_v_mtr := arg1_v_mtr. adj_v_omtr := arg1_v_omtr. v_adj_mtr := arg1_v_mtr. v_adj_omtr := arg1_v_omtr. ;; 日本 の -> Japanese pp-adj_mtr := monotonic_mtr & [ INPUT [RELS < [ LBL #h1, ARG0 #x1 ], [ LBL #h0, ARG0 #e0, ARG1 #ext, ARG2 #x1 ], [ ARG0 #x1, RSTR #hr ] >, HCONS < qeq & [ HARG #hr, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #h0, ARG0 #e0, ARG1 #ext ] >]. pp-adj_omtr := pp-adj_mtr & optional_mtr. pp-adjest_mtr := monotonic_mtr & [ INPUT [RELS < [ LBL #h1, ARG0 #x1 ], [ LBL #h0, ARG0 #e0, ARG1 #ext, ARG2 #x1 ], [ ARG0 #x1, RSTR #hr ]>, HCONS < qeq & [ HARG #hr, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #h0, ARG0 #e0, ARG1 #ext ], [ LBL #h0, ARG0 e, ARG1 #e0, PRED superl_rel]>]. pp-adjest_omtr := pp-adj_mtr & optional_mtr. ;; の 後ろ の/に - > behind pp+p-p-mtr := monotonic_mtr & [ INPUT [RELS < [ ARG1 #local, ARG2 #int ], [ LBL #h1, ARG0 #local ], [ LBL #hp, ARG0 #ep, ARG1 #ext, ARG2 #local ], [ ARG0 #local, RSTR #hr ] >, HCONS < qeq & [ HARG #hr, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #hp, ARG0 #ep, ARG1 #ext, ARG2 #int ] > ]. ;LBL #h0, ARG0 #e0, ARG1 #local, ARG2 #int ] > ]]. ; [ INPUT [RELS < [ LBL #h0, ARG0 #e0, ARG1 #local, ARG2 #int ], ; [ LBL #h1, ARG0 #local ], ; [ LBL #hp, ARG0 #ep, ARG1 #ext, ARG2 #local ], ; [ ARG0 #x1, RSTR #hr ] >, ; HCONS < qeq & [ HARG #hr, LARG #h1 ] > ], ; OUTPUT.RELS < [ LBL #hp, ARG0 #ep, ARG1 #ext, ARG2 #int ] >]. pp+p-p-omtr := pp+p-p-mtr & optional_mtr. ;;; ;;; Not really universal is it? ;;; n+n_n_mtr := monotonic_mtr & [ INPUT [ RELS < [ LBL #h1, ARG0 #x2 ], [ LBL #h3, ARG0 #x4 ], [ PRED compound_rel, LBL #h3, ARG1 #x4, ARG2 #x2 ], [ PRED "ja:udef_rel", ARG0 #x2, RSTR #h5 ] >, HCONS < qeq & [ HARG #h5, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #h3, ARG0 #x4 ] > ]. n+n_n_omtr := n+n_n_mtr & optional_mtr. n+pn_n_mtr := monotonic_mtr & [ INPUT [ RELS < [ LBL #h1, ARG0 #x2 ], [ LBL #h3, ARG0 #x4 ], [ PRED compound_rel, LBL #h3, ARG1 #x4, ARG2 #x2 ], [ PRED "ja:def_rel", ARG0 #x2, RSTR #h5 ] >, HCONS < qeq & [ HARG #h5, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #h3, ARG0 #x4 ] > ]. n+pn_n_omtr := n+pn_n_mtr & optional_mtr. ;;; REDEFINE THIS s/"unspec_rel"/unspec_rel n+n_n+n_mtr := monotonic_mtr & [ CONTEXT.RELS < [ PRED compound_rel, LBL #h3, ARG1 #x4, ARG2 #x2 ] >, INPUT.RELS < [ LBL #h1, ARG0 #x2 ], [ LBL #h3, ARG0 #x4 ] >, OUTPUT.RELS < [ LBL #h1, ARG0 #x2 ], [ LBL #h3, ARG0 #x4 ] > ]. mofy-mtr := monotonic_mtr & [ INPUT.RELS < [ PRED "ja:card_rel", LBL #h5 ], [ PRED "ja:mofy_rel", LBL #hm, ARG0 #xm, ARG1 #h5 ], [ PRED "ja:udef_rel", LBL #h9, ARG0 #xm, RSTR #r, BODY #b ] >, OUTPUT.RELS < [ PRED mofy_rel, LBL #hm, ARG0 #xm ], [ PRED proper_q_rel, LBL #h9, ARG0 #xm, RSTR #r, BODY #b ] > ]. dofw-mtr := noun_mtr & [ INPUT.RELS < [ PRED "ja:dofw_rel", CARG string ] >, OUTPUT.RELS <[ PRED dofw_rel, CARG string ] > ]. n_named_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, ARG0 #x1 ], [ PRED "ja:udef_rel", ARG0 #x1 ] >, OUTPUT.RELS < [ PRED named_rel, LBL #h1, ARG0 #x1 & x & [ DIV - ] ], [ PRED proper_q_rel, ARG0 #x1 ] > ]. n_named_omtr := n_named_mtr & optional_mtr. time_n_adj+n_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, ARG0 #x2 ], [ PRED "ja:udef_rel", LBL #h9, ARG0 #x2, RSTR #r, BODY #b ] >, OUTPUT.RELS < [ LBL #h1, ARG0 e_untensed, ARG1 #x2 ], [ LBL #h1, ARG0 #x2 ], [ PRED def_implicit_q_rel, LBL #h9, ARG0 #x2, RSTR #r, BODY #b ] > ]. ;;; 女 の 人 -> woman ;;; FIXME --- need to reattach modifiers n+p+n_n_mtr := monotonic_mtr & [ INPUT [ RELS < [ LBL #h0, ARG0 #x1 ], [ ARG0 #x1, RSTR #h5 ], [ LBL #h3, ARG0 e_untensed, ARG1 #x4, ARG2 #x1 ], [ LBL #h3, ARG0 #x4 ] >, HCONS < qeq & [ HARG #h5, LARG #h0 ] > ], OUTPUT.RELS < [ LBL #h3, ARG0 #x4 ] > ]. ;; に いく -> go to (fix the preposition translation along with the verb) arg1+pp_arg1+pp_mtr := monotonic_mtr & [ INPUT.RELS < [ LBL #h0, ARG0 #e1, ARG1 #x2 ], [ LBL #h0, ARG0 e_untensed, ARG1 #e1, ARG2 #x3 ] >, OUTPUT.RELS < [ LBL #h0, ARG0 #e1, ARG1 #x2 ], [ LBL #h0, ARG0 e_untensed, ARG1 #e1, ARG2 #x3 ] > ]. arg1+pp_arg1+pp_omtr := arg1+pp_arg1+pp_mtr & optional_mtr. ; 〜 の 面倒 を 見る -> look after ~ p+n+arg12_arg12 := monotonic_mtr & [ INPUT [ RELS < [ LBL #h2, ARG0 e_untensed, ARG1 #x2, ARG2 #x ], [ LBL #h2, ARG0 #x2 & [PERS 3] ], [ ARG0 #x2, RSTR #h3 ], [ LBL #h1, ARG0 #e1, ARG1 #x1, ARG2 #x2 ] >, HCONS < qeq & [ HARG #h3, LARG #h2 ] >], OUTPUT.RELS < [ LBL #h1, ARG0 #e1, ARG1 #x1, ARG2 #x ] >].