l3kn / org-fc

Spaced Repetition System for Emacs org-mode
https://www.leonrische.me/fc/index.html
GNU General Public License v3.0
259 stars 31 forks source link

[Feature] Append fogotten cards to the review session #39

Closed l3kn closed 4 years ago

l3kn commented 4 years ago

The spacing algorithm in org-fc is based on SM2, with similar modifications as Anki, most notably reducing the number of ratings from 6 to 4.

It would be useful to append forgotten cards (rated "again") to the review session and repeat them until they are remembered correctly, especially when learning new items.

Quoting https://www.supermemo.com/en/archives1990-2015/english/ol/sm2:

After each repetition session of a given day repeat again all items that scored below four in the quality assessment. Continue the repetitions until all of these items score at least four.

In org-fc, each card/position has a "box" value counting how many times in a row it has been reviewed correctly. Anki treats all cards in box 0 and 1 as "learning", adding them to review sessions (that have only few cards?) even if they are not due yet.

I've only tried this with a small Anki deck, and it seems like cards rated "again" repeated in the same session until they are reviewed correctly.

Quoting the Anki docs:

If there are no other cards to show you, Anki will show learning cards again even if their delay has not elapsed completely.

Another open question is how the ease should change if a item is rated "again" multiple times in the same session.

l3kn commented 4 years ago

In org-drill failed items are collected in a again-entries list, which is reviewed in random order once all other cards are done.

                 ((<= result org-drill-failure-quality)
                  (if (oref session again-entries)
                      (setf (oref session again-entries)
                            (org-drill-shuffle (oref session again-entries))))
                  (org-drill-push-end m (oref session again-entries)))
l3kn commented 4 years ago

Another difference between SM2, org-drill and org-fc is how rating "again" affects the ease factor of a card:

SM2 specification:

If the quality response was lower than 3 then start repetitions for the item from the beginning without changing the E-Factor (i.e. use intervals I(1), I(2) etc. as if the item was memorized anew).

In org-drill:

      ;; When an item is failed, its interval is reset to 0,
      ;; but its EF is unchanged

In Anki (quoting https://faqs.ankiweb.net/what-spaced-repetition-algorithm.html):

The card is placed into relearning mode, the ease is decreased by 20 percentage points (that is, 20 is subtracted from the 'ease' value, which is in units of percentage points), and the current interval is multiplied by the value of 'new interval' (this interval will be used when the card exits relearning mode).

but

Successive failures while cards are in learning do not result in further decreases to the card’s ease. A common complaint with the standard SM-2 algorithm is that repeated failings of a card cause the card to get stuck in "low interval hell". In Anki, the initial acquisition process does not influence a card’s ease.

I think a good compromise would be to

  1. Add a configurable limit for which box values should be considered "learning"
  2. Not change the ease value of cards in the learning phase (org-fc already does this using a fixed value of box < 2)
  3. If a non-learning card is rated "again", decrement its ease factor (org-fc already does this)
  4. Add an option for repeating cards rated "again" in the same review session