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

Suggestions



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:


Download this ASCII file.   (Instructions for downloading)
/***********************************************************************************/
/***********************************************************************************/
/**         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.


Node authored by Justin Del Vecchio

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