[ACT-R-users] Help with typing

Dan Bothell db30 at andrew.cmu.edu
Tue Oct 5 16:15:15 EDT 2004


--On Tuesday, October 05, 2004 3:11 PM -0400 Bonnie John <Bej at cs.cmu.edu> 
wrote:

>
> Folks,
>
> We are trying to recreate old Keystroke-Level Models and replicate their
> match to human data using CogTool, a new tool that uses ACT-R 5 as its
> underlying cognitive engine (with ACT-RPM 2.1.2 which may be a bit newer
> than what is currently packaged with ACT-R 5).
>
> Has anyone validated how ACT-R 5 does transcription typing? Our times are
> not matching human data.
>
> We are following the ACT-RPM motor module documentation, using press-key
> like it says to do for typing. But we keep getting an inter-keystroke
> time that averages about 0.5 sec, which is far slower than Card, Moran &
> Newell's estimate for touch typists (200 to 280 msec depending on how
> skilled). Of course, our models are coming out way too slow to match
> human data.
>

The current ACT-R 5 has RPM version 2.2, so it's actually newer than that,
but that shouldn't make a difference.

Press-key isn't really a "good" typist as indicated in the docs for the
motor module, "The press-key command is included primarily as a programming
convenience and does not represent an ACT-R theory of typing."  After
describing a learning mechanism which could be used to generate a theory of
typing it says, "Until then, press key should be able to handle most
normal typing assuming a fairly skilled typist."  So, at some level it's
not surprising that you can't use it to model expert performance.

However, since the thing that you're indicating is an issue is the inter-key
time I'd guess that you may be able to improve on that.  The question is
what are you using to check for the availability of the motor module?  If
you are testing the module's modality then there's room for improvement
because it can pipeline commands.  If you instead test that the preparation
is free you should be able to get things going as fast as possible.

As a quick test below is a model that uses press-key to type "the" as fast
as possible which has inter-key times of 300ms.  So, that may help some
if you aren't doing it already.

If that's not fast enough though, then I think you may need to look into
motor learning issues which just aren't handled with the current RPM, or
at least to add in what could be considered end results of such learning.
For example, a new motor style for "chords" which could prepare and initiate
multiple finger actions as a single unit, instead of the current press-key
style that only allows one finger to be in operation at a time.


Dan

;;; Quick and dirty model to press three keys using press-key as fast
;;; as it can.

(clearall)
(pm-reset)

(chunk-type goal key)
(add-dm (g isa goal key t))
(goal-focus g)

(p press-t
   =goal>
   isa goal
   key t
   =manual-state>
   isa module-state
   preparation free
   ==>
   +manual>
   isa press-key
   key "T"
   =goal>
   key h
   )

(p press-h
   =goal>
   isa goal
   key h
   =manual-state>
   isa module-state
   preparation free
   ==>
   +manual>
   isa press-key
   key "H"
   =goal>
   key e
   )

(p press-e
   =goal>
   isa goal
   key e
   =manual-state>
   isa module-state
   preparation free
   ==>
   +manual>
   isa press-key
   key "E"
   =goal>
   key nil
   )

(pm-install-device (open-exp-window "test" :visible nil))

#|
CG-USER(2): (pm-run 4)
 Time  0.000: Press-T Selected
 Time  0.050: Press-T Fired
 Time  0.050: Module :MOTOR running command PRESS-KEY
 Time  0.300: Module :MOTOR running command PREPARATION-COMPLETE
 Time  0.300: Press-H Selected
 Time  0.350: Module :MOTOR running command INITIATION-COMPLETE
 Time  0.350: Press-H Fired
 Time  0.350: Module :MOTOR running command PRESS-KEY
 Time  0.450: Device running command OUTPUT-KEY

<< Window "test" got key #\t at time 450 >>

 Time  0.550: Module :MOTOR running command PREPARATION-COMPLETE
 Time  0.550: Press-E Selected
 Time  0.600: Module :MOTOR running command FINISH-MOVEMENT
 Time  0.600: Press-E Fired
 Time  0.600: Module :MOTOR running command PRESS-KEY
 Time  0.650: Module :MOTOR running command INITIATION-COMPLETE
 Time  0.750: Device running command OUTPUT-KEY

<< Window "test" got key #\h at time 750 >>

 Time  0.800: Module :MOTOR running command PREPARATION-COMPLETE
 Time  0.900: Module :MOTOR running command FINISH-MOVEMENT
 Time  0.950: Module :MOTOR running command INITIATION-COMPLETE
 Time  1.050: Device running command OUTPUT-KEY

<< Window "test" got key #\e at time 1050 >>

 Time  1.200: Module :MOTOR running command FINISH-MOVEMENT
 Time  1.200: Checking for silent events.
 Time  1.200: * Nothing to run:  No productions, no events.
1.2
1.2

|#





More information about the ACT-R-users mailing list