-
Notifications
You must be signed in to change notification settings - Fork 4
JacyGeneration
[wiki:JacyTop JACY] generates using the mtr rule formalism developed in the LOGON project. Three files control the process mt.lsp, mtr.lsp and trigger.mtr. They are loaded by the script file.
This file controls when to add predicates with empty semantics. If they were all added all the time then the generator chart gets too big.
- example of a rule for the past tense ending:
ta-end_gr := arg0e_gr &
[ CONTEXT [ RELS <! [ ARG0.E.TENSE past ] !> ],
FLAGS.TRIGGER "ta-end" ].
- example of a rule for the past tense ending:
-- You can use regular expressions in the strings: "~.*_a_"
;; should use lexical type for na-adj
na-cop-lex_gr := arg0e_gr &
[ CONTEXT [ RELS <! [ PRED "~_a_"] !> ],
FLAGS.TRIGGER "na-cop-lex" ].
* Example of a case marker:
;;; ARG1 is ga
ga_gr_1 := arg0e_gr &
[ CONTEXT [ RELS <! [ ARG0.E.PASS -, ARG1 individual & #i ] !> ],
FLAGS [SUBSUME < #i >,
TRIGGER "ga" ]].
;;;
;;; automatically generated rules for all semantically empty lexical entries:
;;;
;;; (loop
;;; with *package* = (find-package :lkb)
;;; for id in mrs::*empty-semantics-lexical-entries*
;;; do
;;; (format
;;; t
;;; "~(~a~)_gr := generator_rule &~%~
;;; [ CONTEXT [ RELS <! [ PRED \"non_existing_rel\" ] !> ],~% ~
;;; FLAGS.TRIGGER \"~(~a~)\" ].~%~%"
;;; id id))
;;; (25-dec-04; oe)
- JACY really needs to access the CONTEXT to decide whether to generate formal or informal versions of words.
- It would be nice to have a feature showing orthographic variation
- - maybe this could be done by convention in the predicate names: block everything with "chasen" in the id-name
- It would be nice to be able to access the grammar's type hierarchy when writing trigger rules.
You can block generation of non-empty predicate by putting it in the list *duplicate-lex-ids* in globals.lisp. Jacy currently does this to block informal and variant forms for which we have no available filter. Note that this is a list of lex-ids, not predicate names.
(setf *duplicate-lex-ids*
'(;; s-end1-decl-lex - emphatic sentence enders
ga-sap keredomo-send kedomo-send ga-sap kedo-send shi-send
yo-2 yo-3 keredo-send exclamation-mark ze zo zo-2
;; s-end1-decl-minusahon-lex - emphatic sentence enders
i-emp
;; variant forms of numbers (hankaku)
zero_card_a one_card_a two_card_a three_card_a four_card_a
five_card_a six_card_a seven_card_a eight_card_a nine_card_a
;; variant forms of numbers (zenkaku)
zero_card one_card two_card three_card four_card
five_card six_card seven_card eight_card nine_card
;;; indefinite pronouns FIXME - improve semantics
donna douiu dono-det
))
(setf *gen-packing-p* t)
(setf *gen-filtering-p* t)
(setf *packing-restrictor* '(RELS HCONS ORTH STEM RULE-NAME))
;;; Filter out uninformative information on the MRS attributes
;;; This will probably change soon
(setf %mrs-extras-filter%
(list
(cons (mrs::vsym "SORT") (mrs::vsym "semsort"))
(cons (mrs::vsym "E.ASPECT") (mrs::vsym "aspect"))
(cons (mrs::vsym "E.PASS") (mrs::vsym "bool"))))
;;; Fix defaults for unspecified attributes
(defparameter %mrs-extras-defaults%
(list
(list (vsym "E")
(cons (vsym "E.ASPECT") (vsym "default_aspect"))
(cons (vsym "E.PASS") (vsym "-")))))
This is useful when you are debugging.
(progn
(mt:initialize-transfer)
(mt:read-transfer-rules
(list
"~/delphin/grammars/japanese/generation.mtr")
"Generator Triggger Rules"
:filter nil :task :trigger :recurse nil :subsume nil))
Home | Forum | Discussions | Events