;;; ;;; 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") ;;; user-fns.lsp currently uses transduce(), so load ;;; David's code first. (load (lkb-pathname (this-directory) "tduce.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")) ;;; ;;; Now the core grammar: to preserve the fiction of separating the matrix ;;; from language-specific parts, we recommend at least one additional file; ;;; larger grammars have ended up organizing files roughly by content, e.g. ;;; fundamental types (similar to what comes with the matrix already), types ;;; for constructions, lexical types, semantic types, etc. If you have ;;; multiple such files, there should be a line for each in the following. ;;; Here we have included matrix.tdl and one other grammar file ;;; `my_language.tdl', which you might want to rename. ;;; ;;; (2004-06-08) transfer.tdl includes some types which support ;;; transfer rules. ;;; (read-tdl-type-files-aux (list (lkb-pathname (parent-directory) "matrix.tdl") (lkb-pathname (parent-directory) "head-types.tdl") (lkb-pathname (parent-directory) "slave.tdl") #+:mt (lkb-pathname (this-directory) "transfer.tdl") )) ;;; ;;; Next, the lexicon itself, instantiating (lexical) types of the grammar ;;; (some grammars with larger lexica organize them into multiple files). ;;; ;;; For grammars with small lexicons, no need to use a cache file: (read-tdl-lex-file-aux (lkb-pathname (parent-directory) "lexicon.tdl")) ;;; Once your lexicon has >1000 words or so, consider using the ;;; cache file: ;(read-cached-lex-if-available (lkb-pathname (parent-directory) "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-morph-file-aux (lkb-pathname (parent-directory) "irules.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 is enable. 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) ;;; ;;; Preliminary support for transfer rules in Matrix grammars. ;;; #+:mt (mt:initialize-transfer) #+:mt (lkb-load-lisp (this-directory) "mt.lsp" t) #+:mt (mt:read-transfer-rules (list (lkb-pathname (parent-directory) "paraphraser.mtr")) "MWE Paraphraser" :filter nil) ;;; ;;; 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* '("dene be@ she@ti~" "dene ?ela@ thehtsi~"))) ;;; Using Anya's xfst-produced FST for morphological analysis. (lkb::load-xducer-network (lkb-pathname (parent-directory) "xfst/slave.pro"))