;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: composite.lisp,v 1.5 2002/10/14 15:03:43 kevin Exp $
+;;;; $Id: composite.lisp,v 1.6 2002/10/16 16:05:23 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
(:fields (tui :string fmt-tui) (freq :fixnum) (sty :string))
(:documentation "Composite object of usty/freq"))
+(defmethod tui ((s usty_freq))
+ (usty-tui (usty_freq-usty s)))
+
+(defmethod sty ((s usty_freq))
+ (usty-sty (usty_freq-usty s)))
+
+
(defun find-usty_freq-all ()
(let ((usty_freqs '()))
(dolist (tuple (mutex-sql-query "select distinct TUI from MRSTY"))
(push (make-instance 'usty_freq :usty (find-usty-tui tui) :freq freq) usty_freqs)))
(sort usty_freqs #'> :key #'freq)))
-(defun usty_freq-tui (s)
- (tui (usty s)))
-
-(defun usty_freq-sty (s)
- (sty (usty s)))
(defclass usrl_freq (umlsclass)
((usrl :type usrl :initarg :usrl :reader usrl)
(:fields (sab :string) (freq :commainteger) (srl :fixnum))
(:documentation "Composite object of usrl/freq"))
-(defun usrl_freq-sab (s)
+(defmethod sab ((s usrl_freq))
(sab (usrl s)))
-(defun usrl_freq-srl (s)
+(defmethod srl ((s usrl_freq))
(srl (usrl s)))
;; Frequency finding functions
+
+(defun find-usrl_freq-all ()
+ (let ((freqs '()))
+ (dolist (usrl (find-usrl-all))
+ (let ((freq (ensure-integer
+ (caar (mutex-sql-query
+ (format nil "select count(*) from MRSO where SAB='~a'"
+ (sab usrl)))))))
+ (push (make-instance 'usrl_freq :usrl usrl :freq freq) freqs)))
+ (sort freqs #'> :key #'usrl_freq-freq)))
+
(defun find-ucon2_freq-coc-tui (ucon tui)
"Return sorted list of tuples with ucon and freq that have co-occuring concepts of semantic type tui"
(let ((ucon_freqs '()))
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: sql.lisp,v 1.4 2002/10/16 15:22:28 kevin Exp $
+;;;; $Id: sql.lisp,v 1.5 2002/10/16 16:05:23 kevin Exp $
;;;;
;;;; This file, part of UMLisp, is
;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
:srl (ensure-integer (nth 1 tuple))) usrls))
usrls))
-;; already reversed by sql
-
-(defun find-usrl_freq-all ()
- (let ((freqs '()))
- (dolist (usrl (find-usrl-all))
- (let ((freq (ensure-integer
- (caar (mutex-sql-query
- (format nil "select count(*) from MRSO where SAB='~a'"
- (sab usrl)))))))
- (push (make-instance 'usrl_freq :usrl usrl :freq freq) freqs)))
- (sort freqs #'> :key #'usrl_freq-freq)))
-
-
-(defun find-ucon-normalized-multiword (str &key (srl *current-srl*))
- "Return sorted list of ucon's that match a multiword string"
- (let* ((words (delimited-string-to-list str #\space))
- (ucons '())
- (nwords '()))
- (dolist (word words)
- (let ((nws (lvg:process-terms word)))
- (dolist (nword nws)
- (push nword nwords))))
- (dolist (word nwords)
- (setq ucons (append ucons (find-ucon-word word :srl srl))))
- (umlisp::sort-score-ucon-str str (delete-duplicates ucons :test #'eql :key #'cui))))
-(defun find-ustr-normalized-multiword (str &key (srl *current-srl*))
- "Return sorted list of ustr's that match a multiword string"
- (let* ((words (delimited-string-to-list str #\space))
- (ustrs '())
- (nwords '()))
- (dolist (word words)
- (let ((nws (lvg:process-terms word)))
- (dolist (nword nws)
- (push nword nwords))))
- (dolist (word nwords)
- (setq ustrs (append ustrs (find-ustr-word word :srl srl))))
- (umlisp::sort-score-ustr-str str (delete-duplicates ustrs :test #'eql :key #'ustr-cui))))
-
-(defun a (str)
- (find-normalized-matches-for-str str #'find-ustr-normalized-word #'ustr-sui))
-
-(defun find-normalized-matches-for-str (str lookup-func key-func)
- "Return list of objects that normalize match for words in string,
-eliminate duplicates."
- (let ((objs '())
- (nwords '()))
- (dolist (word (delimited-string-to-list str #\space))
- (dolist (nword (lvg:process-terms word))
- (unless (member nword nwords :test #'string-equal)
- (push nword nwords))))
- (dolist (nw nwords)
- (setq objs (append objs (funcall lookup-func nw))))
- (delete-duplicates objs :key key-func :test #'eql)))
+