Spaced repetition and Leitner boxes
inge at lysator.liu.se
Tue Mar 4 23:56:20 UTC 2014
The scientific theory behind the learning approach in Parley and KWordQuiz and
maybe also other applications in KDE Edu is so called "Spaced Repetition
Training". This means that when you are learning a new concept, like a word or
similar, you are shown it repeatedly with varying time intervals. The better
you know the concept the less often you are shown it. But with each repetition
you get the concept deeper ingrained into the long-term memory and finally
after some number of times it is permanently imprinted and you will never
When you have lots of similar concepts to learn at the same time it makes
sense to concentrate on those that you have difficulties with and not
concentrate on those you already know or have an easier time learning. This is
handled by making the time until next showing longer (often doubling it) if
you remember correctly during training and bringing it down to a minimum if
you get it wrong. After some time all the words have been repeated enough to
bring the interval up towards the maximum even if some words went there easily
and some had to be repeated many times.
One way to handle this in a practical way is the use of so called Leitner
boxes. The idea is that you have physical flashcards with words in two
languages, one language on either side. You train by looking at one side of
the card and try to come up with the correct translation. To find out if you
are correct you look at the other side.You sort your flashcards into one of
several boxes with numbers on it. The first box contains those cards that you
haven't studied yet and/or those you got wrong at some point during the
training. When you take a card from one of the boxes and you remember word on
the card correctly you move it up to the next box. If you get it wrong you
move it down to box number 1. You repeat this until all of the cards are in
the box with the highest number.
This is of course very easy to implement using a computer and many training
programs use this exact way of implementing the ideas behind spaced repetition
training. In Parley we have 7 different virtual boxes where all the virtual
cards are sorted. The interval until the next showing is configurable but the
default is that those in the first box are shown again after 1 day, the second
after 2 days, then 4 days, 1 week, 2 weeks, 1 month and 2 months. Basically a
doubling for each consecutive step.
This works nicely when you already have a learned the words in a very basic
way and only needs to repeat them. The first time you see a new word you don't
know it of course and should be shown it again in seconds, not one day later.
Parley gets around this by showing you the card again during the same training
session until you get it right the first time. Then the card goes into box 1
and is shown again after a day. This means that when you try to learn new
vocabulary you either have to work around Parley and train again on the new
words, bypassing the automatic blocking, or you have to wait for a day and
then have to relearn most new words because you already forgot them.
I can see several ways of fixing this problem and I would like to have a short
discussion here about which of them to choose.
1. More boxes.
In the theory behind spaced repetition training it is not fully established
which intervals are optimal at the beginning of the process. One researcher,
Pimsleur, recommended a first interval of 5 seconds. Another implementation I
worked with used 3.5 minutes but they repeated the word until I got it right
the first time.
It would be very easy to fix the problem by just introducing more boxes. The
first box would then have a repetition time of, say, 3 minutes and then have
boxes with 6, 12, 30 minutes, 1, 2, 4, 8 hours and finally 1 day and so on.
This means that we would use 15 boxes instead of 7, other than that it would
be exactly the same. UI wise this could be a challenge but other than that
this approach would require no changes.
2. A separate learning stage
We could use the same system as today but add a learning stage where the cards
are not regarded as being in any box at all. During this stage, we could
implement the pure time-based repetition system which means we would end up
with the same solution as in alternative 1 but it wouldn't show all the boxes.
Visually it would be the same as before.
3. A pure time based solution.
This alternative would be to skip the boxes altogether and only focus on when
it is time to show a particular card again. Learning wise it would be the same
as alternative 1 and 2 but visually in the UI it would mean less clutter (no
boxes) and a more uniform way of choosing the cards. However, it would also
mean the biggest step away from the current working of Parley.
So, there it is. My gut feeling is that approach 3 is the best. If you reread
my initial mail about reworking the language applications you will find a
description of one of the websites that I have been using that I think worked
better than anything else that I tried. That was thaipod101.com. It used times
only and it was simply awesome. But as I said, it would also mean the biggest
deviation from what we have now.
And to add to that, our current file format kvtml2 does not support a time-
based approach. It does store the time of the last time the card was shown and
which "grade" the word has - i.e. which leitner box the word currently belongs
to. But since the time for each leitner box is configurable in the UI, it is
not possible to implement a pure time-based solution using the current format.
Adding a time interval until the next showing is a trivial fix to
keduvocdocument but it means that if you load your file into an old parley you
will lose your training status. If we add more boxes instead (alternative 1)
then it would still be backwards compatible but also much uglier.
So which approach is best? Comments?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the kde-edu