Report Top | Up a Node | Prev | Next | Up a Map | TOC | Node Index | File Index | Page Bottom |
Presentation Three Overview : Suggestions | published Wed, Apr 17, 2002 - 20:51 EDT |
Results of Suggestions
Below are two code excerpts for defn_verb: the revised function and original function. In the original code the call to defn_verb reported the results of the verb in question as being:
Bitransitive - Transitive - Reflexive - Intransitive
with the first category that a single instance of the verb fit being the category for which all results were reported.
The new scheme reports information for each category as long as a single instance of the verb's use qualifies for that category. There are problems with the new representation that need to be addressed:
/***********************************************************************************/ /***********************************************************************************/ /** REVISED CODE REVISED CODE REVISED CODE **/ /***********************************************************************************/ /***********************************************************************************/ (defun defn_verb (verb) (defn_bitrans verb) (defn_trans verb) (defn_reflex verb) (defn_intran verb) ) ;; If any one of the following is true, evaluate it. The result is that the last ;; type chosen is the type reported. I need a refresher on Lisp. ;; Possible design: ;; Have lists for objects, agents, consequences, etc. for each verb category ;; (transitive, intransitive, bitransitive, reflexive). Call a functions similar ;; to report_bitransitive for each instance of a verb that is used in the ;; bi-transitive sense. Have it append to the lists for that category. ;; ;; At the end, return the results for each type of verb category. ;; ;; This is one way to avoid report_bitransitive lumping its results. (defun defn_bitrans (verb) (setq czs (cause verb)) (setq efs (car (effect verb))) (if #3! ((deduce property (build lex "bitransitive") object (build lex ~verb))) (report_bitransitive verb czs efs) ) ) (defun defn_trans (verb) (setq czs (cause verb)) (setq efs (car (effect verb))) (if #3! ((deduce property (build lex "transitive") object (build lex ~verb))) (report_transitive verb czs efs) ) ) (defun defn_reflex (verb) (setq czs (cause verb)) (setq efs (car (effect verb))) (if #3! ((deduce property (build lex "reflexive") object (build lex ~verb))) (report_reflexive verb czs efs) ) ) (defun defn_intran (verb) (setq czs (cause verb)) (setq efs (car (effect verb))) (if t (report_intransitive verb czs efs) ) ) /***********************************************************************************/ /***********************************************************************************/ /** ORIGINAL CODE ORIGINAL CODE ORIGINAL CODE **/ /***********************************************************************************/ /***********************************************************************************/ ;---------------------------------------------------------------------------- ; ; function: defn_verb ; input: a verb to be defined ; output: predicate structure of, with categorization of arguments; ; causal/enablement information; eventually to include primitive ; act of which is a type (if any). ; calls: report_bitransitive, or report_transitive, or report_reflexive, ; or report_intransitve, as appropriate. ; NOTE: #3! is a macro which allows snepsul commands to be invoked from ; within lisp functions; obviates need for references to pkgs, etc. ;------------------------------------------------------------------------------ (defun defn_verb (verb) (setq czs (cause verb)) (setq efs (car (effect verb))) (cond (#3! ((deduce property (build lex "bitransitive") object (build lex ~verb))) (report_bitransitive verb czs efs)) (#3! ((deduce property (build lex "transitive") object (build lex ~verb))) (report_transitive verb czs efs)) (#3! ((deduce property (build lex "reflexive") object (build lex ~verb))) (report_reflexive verb czs efs)) (t (report_intransitive verb czs efs))))
Problems
1. Defining a verb with the revised implementation requires four calls to four seperate method. The original defn_verb function still exists but for some reason when it is used the problem is reversed and the last function called (defn_intrans in this case) is the only one to report results. This could be resolved with more investigation into Lisp.
2. Note that each function makes a call to a method like: report_bitransitive, report_transitive, etc. In many ways this is the heart of the problem. These functions disregard the physical makeup of a proposition that includes an act arc (for instance a proposition with agent/act/object/indobj vs one with agent/act) and report all instances as being bitransitive, transitive, etc. when they are not. This would require some serious reworking.
Upon consideration it would seem like a worthwhile change to make the verb algorithm report each instance separately.
Presentation Three Overview : Suggestions | published Wed, Apr 17, 2002 - 20:51 EDT |
Report Top | Up a Node | Prev | Next | Up a Map | TOC | Node Index | File Index | Page Top |