| 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 |