When building a spaced repetition toy, the most satisfying algorithm I found was:
* Model the forgetting curve as p = 2 ^ (−∆/h) (p = probability of recall, ∆ = time since last review, h = forgetting half-life for a particular card and user) (see https://research.duolingo.com/papers/settles.acl16.pdf)
* Numerically fit this curve to the last ~10 recent reviews of the card by the user to give an estimate for h (the half-life but effectively the intrinsic "difficulty" of the card for that user)
* Schedule the next review of the card at the time when a particular recall probability is reached. This probability should be configurable by the user: >90% for an "easy" session, <70% for a "hard" session.
* Use the "due date" to queue up cards for review. If a user reviews a card _before_ the due date, ensure that the half-life is never reduced after a succesful review. Provide some feedback to the user to suggest they stop the session when there are no pending cards left ("10 more cards due today, 100 cards due tomorrow, 1000 cards due next week")
* Don't schedule the same card twice in a row as this is annoying for the user. If it has just been reviewed and is due next, move it back to second place in the queue.
I found this works well once there are 2 or more reviews of a particular card for a particular user. For scheduling the _second_ review of the card I had to invent a heuristic like: if first review failed, schedule again in 1 minute, if first review passed schedule again tomorrow. However in apps where many users are reviewing the same cards, you could probably build a good model of the difficulty of a card for a user before 2 reviews by considering the performance of other users on that card.
I never got try the algorithm - I simply don’t get the UI in spite of all my best efforts. I’m looking for a wanikani like tool, with the same srs , and same excellent and simple ui.
I’ll have a look at supermemo ( I don’t mind paying ).
I did. It gave me absurdly long intervals. It kind of assumed that since I can remember some things easily (usually because I learned them outside of Anki), it totally makes sense to assume that about everything.
I tried anki multiple times, ended up disliking it each time. FSRF did not made it better.
In my experience, the long intervals can freak you out at the beginning. You might think that it's just stupid and not possible to have that long intervals ("I will remember that in 3 years!?").
But in practice long intervals are shortened when you answer wrong once or more, or when you mark the answer as "hard" when it actually takes time for you to recall a card.
For me FSRF really work well, sometimes I see cards that I feel are really showing quite often and when I check the card history it usually shows that I had some "again"/"hard" answers in some recent past, and because of that these intervals and not increasing that much.
Plus you can also always increase "desired retention" from default 90%. You will have shorter intervals, but it will of course increase number of the reviews too.
The big interval was something like 3-6 months. Mostly 3 months, but some had 6.
I just concluded I am better off without algorithm that assumes once I have seen a word on flashcard once, it is reasonable to see it next time in months.
It's a new algorithm that was integrated into the Anki codebase from a very popular add-on, maybe around 2023 or so. I switched over to it basically immediately, and it works like a charm.
It basically works by optimizing parameters of the "memory model" against your review history, thus fitting against your particular memory instead of using a one-size-fits-all approach.