;;; ;;; First, load a number of LKB-specific settings; typically no need to look ;;; too closely here ;;; (lkb-load-lisp (parent-directory) "Version.lsp" t) (setf *grammar-directory* (parent-directory)) (lkb-load-lisp (this-directory) "globals.lsp") (lkb-load-lisp (this-directory) "user-fns.lsp") (load-lkb-preferences (this-directory) "user-prefs.lsp") ;;; ;;; Optionally, load a set of irregular morphological patterns ;;; ;; (load-irregular-spellings (lkb-pathname (parent-directory) "irregs.tab")) ;;turn on the preprocessor rules ;;(read-preprocessor ;; (lkb-pathname (parent-directory) "preprocessor.fsr")) ;;; ;;; Now the core grammar, which will typically be spread out ;;; across multiple files. The Matrix provides matrix.tdl, ;;; defining most of the matrix types and head-types.tdl, which ;;; contains the intermediate types in the subhierarchy under head ;;; (as they would unnecessarily clutter matrix.tdl). You should ;;; rename my_language.tdl to something appropriate, and enter ;;; language-specific types there. In larger grammars, it is common ;;; to separate out e.g. lexical types from construction types ;;; into distinct files. All files containing types used in ;;; the grammar should be mentioned in the following command. ;;; ;;; (2004-06-08) transfer.tdl includes some types which support ;;; transfer rules. Still under development -- ignore for the ;;; time being. ;;; ;;;(lkb-pathname (parent-directory) "head-types.tdl") (read-tdl-type-files-aux (list (lkb-pathname (parent-directory) "matrix.tdl") (lkb-pathname (parent-directory) "korean.tdl") (lkb-pathname (parent-directory) "types-ph.tdl") (lkb-pathname (parent-directory) "types-lex.tdl") )) ;;; ;;; Next, the lexicon itself, instantiating (lexical) types of the grammar ;;; (some grammars with larger lexica organize them into multiple files). ;;; (read-tdl-lex-file-aux (list (lkb-pathname (parent-directory"/lex") "lexicon.tdl") )) ;;; For grammars with small lexicons, no need to use a cache file: ;;; Once your lexicon has >1000 words or so, consider using the ;;; cache file: ;(read-cached-lex-if-available (lkb-pathname (parent-directory/lex) "lexicon.tdl")) ;;; ;;; Finally, the grammar rules, lexical rules (given special treatment in the ;;; parser in that they can apply _prior_ to `inflectional' rules), and the ;;; `inflectional' rules themselves (rules with an associated orthographemic ;;; alternation of the surface string). ;;; (read-tdl-grammar-file-aux (lkb-pathname (parent-directory) "rules.tdl")) (read-tdl-lex-rule-file-aux (lkb-pathname (parent-directory) "lrules.tdl")) (read-tdl-lex-rule-file-aux (lkb-pathname (parent-directory) "irules.tdl")) ;;;(read-tdl-lex-rule-file-aux (lkb-pathname (parent-directory) "irules-small.tdl")) ;;; ;;; The `start symbol(s)' of the grammar. ;;; (read-tdl-psort-file-aux (lkb-pathname (parent-directory) "roots.tdl")) ;;; ;;; Optionally, a set of types providing labels for nodes in parse trees ;;; (read-tdl-parse-node-file-aux (lkb-pathname (parent-directory) "labels.tdl")) ;;; ;;; A few more LKB-specific settings, this time for MRS post-processing and ;;; generation; also, we always compute the generation index (while we have ;;; small lexica) in the hope that the generator will be used frequently. ;;; (lkb-load-lisp (this-directory) "mrsglobals.lisp" t) ;;; ;;; Matrix-derived grammars often have stable enough semantic ;;; representations that the grammar can usefully be tested ;;; by generating from them. The function index-for-generator() ;;; must be called for generation to be enabled. In grammars with ;;; small lexica, this takes a trivial amount of time. If ;;; generation is not being used regularly, and the indexing ;;; is taking too long, comment out the following. index-for-generator() ;;; can also be run from the expanded LKB top menu, under ;;; Generate. ;;; (index-for-generator) ;;; ;;; For the MMT system. Uncomment semi.vpm line when adding such ;;; a file. ;;; ;(mt:read-vpm (lkb-pathname (parent-directory) "semi.vpm") :semi) (lkb-load-lisp (this-directory) "mt.lsp" t) ;;; ;;; The following overwrites the LKB's default for what ;;; appears in the parse input dialog box. Putting a ;;; short list of basic sentences from your language ;;; in that position may be helpful. ;;; (if (eq (length *last-parses*) 1) (setf *last-parses* '("개가 짖다" "개가 이 빵을 먹다")))