Skip to content

yuwash/hy-drill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Customisation

Org-Drill has several settings which you change using M-x customize-group org-drill <RET>. Alternatively you can change these settings by adding elisp code to your configuration file (.emacs).

Definition of old and overdue items

Org-Drill prioritises overdue items in each drill session, presenting them before other items are seen. Overdue items are defined in terms of how far in the past the item is scheduled for review. The threshold is defined in terms of a proportion rather than an absolute number of days. If days overdue is greater than

last-interval * (factor - 1)

and is at least one day overdue, then the item is considered 'overdue'. The default factor is 1.2, meaning that the due date can overrun by 20% before the item is considered overdue.

To change the factor that determines when items become overdue, use something like the following in your .emacs. Note that the value should never be less than 1.0.

(setq org-drill-overdue-interval-factor 1.1)

After prioritising overdue items, Org-Drill next prioritises young items. These are items which were recently learned (or relearned in the case of a failure), and which therefore have short inter-repetition intervals. "Recent" is defined as an inter-repetition interval less than a fixed number of days, rather than a number of repetitions. This ensures that more difficult items are reviewed more often than easier items before they stop being 'young'.

The default definition of a young item is one with an inter-repetition interval of 10 days or less. To change this, use the following:

(setq org-drill-days-before-old 7)

Spaced repetition algorithm

Choice of algorithm

Org-Drill supports three different spaced repetition algorithms, all based on SuperMemo algorithms. These are:

  • SM2: an early algorithm, used in SuperMemo 2.0 (1988), which remains very popular – Anki and Mnemosyne, two of the most popular spaced repetition programs, use SM2. This algorithm stores an 'ease factor' for each item, which is modified each time you rate your recall of the item.
  • SM5 (default): used in SuperMemo 5.0 (1989). This algorithm uses 'ease factors' but also uses a persistent, per-user 'matrix of optimal factors' which is also modified after each item repetition.
  • Simple8: an experimental algorithm based on the SM8 algorithm. SM8 is used in SuperMemo 8.0 (1998) and is almost identical to SM11 which is used in SuperMemo 2002. Like SM5, it uses a matrix of optimal factors. Simple8 differs from SM8 in that it does not adapt the matrix to the individual user, though it does adapt each item's 'ease factor'.

If you want Org-Drill to use the SM2 algorithm, put the following in your .emacs:

(setq org-drill-spaced-repetition-algorithm 'sm2)

Random variation of repetition intervals

The intervals generated by the SM2 and SM5 algorithms are pretty deterministic. If you tend to add items in large, infrequent batches, the lack of variation in interval scheduling can lead to the problem of "lumpiness" – one day a large batch of items are due for review, the next there is almost nothing, a few days later another big pile of items is due, and so on.

This problem can be ameliorated by adding some random "noise" to the interval scheduling algorithm. The author of SuperMemo actually recommends this approach for the SM5 algorithm, and Org-Drill's implementation uses his code.

To enable random "noise" for item intervals, set the variable org-drill-add-random-noise-to-intervals-p to true by putting the following in your .emacs:

(setq org-drill-add-random-noise-to-intervals-p t)

Adjustment for early or late review of items

Reviewing items earlier or later than their scheduled review date may affect how soon the next review date should be scheduled. Code to make this adjustment is also presented on the SuperMemo website. It can be enabled with:

(setq org-drill-adjust-intervals-for-early-and-late-repetitions-p t)

This will affect both early and late repetitions if the Simple8 algorithm is used. For the SM5 algorithm it will affect early repetitions only. It has no effect on the SM2 algorithm.

Adjusting the first interval (SM5 algorithm only)

In the SM5 algorithm, the initial interval after the first successful presentation of an item is always 4 days. If you wish to change this for some reason, you can do so with:

(setq org-drill-sm5-initial-interval 5.0)

note that this will have no effect if you are not using the SM5 algorithm.

Adjusting item difficulty globally

The learn fraction is a global value which affects how quickly the intervals (times between each retest of an item) increase with successive repetitions, for all items. The default value is 0.5, and this is the value used in SuperMemo. For some collections of information, you may find that you are reviewing items too often (they are too easy and the workload is too high), or too seldom (you are failing them too often). In these situations, it is possible to alter the learn fraction from its default in order to increase or decrease the frequency of repetition of items over time. Increasing the value will make the time intervals grow faster, and lowering it will make them grow more slowly. The table below shows the growth in intervals (in days) with some different values of the learn fraction (F). The table assumes that the item is successfully recalled each time, with an average quality of just under 4.

Repetition F=0.3 F=0.4 **F=0.5** F=0.6 F=0.7
1st 2 2 2 2 2
2nd 7 7 7 7 7
5th 26 34 46 63 85
10th 85 152 316 743 1942
15th 233 501 1426 5471 27868

To alter the learn fraction, put the following in your .emacs:

(setq org-drill-learn-fraction 0.45)   ; change the value as desired

Author

Org-Drill is written by Paul Sexton.