Mercurial > hg > amuse
changeset 52:e0acd4c37121
n-gram fix
darcs-hash:20070620160515-f76cc-af8dd2c245deac5551ef880abd8afe8b39f7c1e9.gz
author | David Lewis <d.lewis@gold.ac.uk> |
---|---|
date | Wed, 20 Jun 2007 17:05:15 +0100 |
parents | 894fb5156603 |
children | ce4a90427366 |
files | utils/n-grams.lisp |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/utils/n-grams.lisp Wed Jun 20 15:15:51 2007 +0100 +++ b/utils/n-grams.lisp Wed Jun 20 17:05:15 2007 +0100 @@ -2,7 +2,7 @@ (defun get-n-grams (state-sequence start-n &optional (finish-n nil) (test-for-duplicates nil)) (let ((memory (make-array (or finish-n start-n) :initial-element :BLANK)) - (pointer 0) (step 0) (prev-state) + (pointer 0) (step 1) (prev-state) (n-grams (make-array (or finish-n start-n) :initial-element nil)) (current-sequence) (last-time)) @@ -13,8 +13,7 @@ (setf (aref memory pointer) state prev-state state current-sequence nil - last-time nil - step (1+ step)) + last-time nil) (do ((i (mod (1+ pointer) (length memory)) (mod (1+ i) (length memory)))) (last-time (setf current-sequence (reverse current-sequence))) (when (= pointer i) @@ -22,7 +21,7 @@ (push (aref memory i) current-sequence)) (setf pointer (mod (1+ pointer) (length memory))) (loop for i from start-n to (or finish-n start-n) - do (when (> step i) + do (when (>= step i) (unless (aref n-grams (1- i)) (setf (aref n-grams (1- i)) (make-hash-table :test #'equal))) (if (gethash (subseq current-sequence (- (or finish-n start-n) i)) @@ -31,7 +30,8 @@ (aref n-grams (1- i)))) (setf (gethash (subseq current-sequence (- (or finish-n start-n) i)) (aref n-grams (1- i))) - 1)))))))) + 1))))) + (incf step)))) (defun get-n-gram (state-sequence n) (aref (get-n-grams state-sequence n) (1- n)))