[HN Gopher] Content-Aware Spaced Repetition
___________________________________________________________________
Content-Aware Spaced Repetition
Author : ran3000
Score : 53 points
Date : 2025-08-04 19:32 UTC (3 hours ago)
(HTM) web link (www.giacomoran.com)
(TXT) w3m dump (www.giacomoran.com)
| ran3000 wrote:
| I explored memory models for spaced repetition in my master's
| thesis and later built an SRS product. This post shares my
| thoughts on _content-aware_ memory models.
|
| I believe this technical shift in how SRS models the student's
| memory won't just improve scheduling accuracy but, more
| critically, will unlock better product UX and new types of SRS.
| IncreasePosts wrote:
| I've been playing with something similar, but far less thought
| out than what you have.
|
| I have a script for it, but am basically waiting until I can
| run a powerful enough LLM locally to chug through it with good
| results.
|
| Basically like the knowledge tree you mention towards the end,
| but attempt to create a knowledge DAG by asking a LLM "does
| card (A) imply knowledge of card (B) or vice versa". Then, take
| that DAG and use it to schedule the cards in a breadth first
| ordering. So, when reviewing a new deck with a lot of new
| cards, I'll be sure to get questions like "what was the primary
| cause of the civil war", before I get questions like "who was
| the Confederate general who fought at bull run"
| ran3000 wrote:
| I'd love to see it.
|
| What I like about your approach is that it circumvents the
| data problem. You don't need a dataset with review histories
| and flashcard content in order to train a model.
| pessimizer wrote:
| > [....] Ignoring the following factors means we are leaving
| useful information on the table:
|
| > 1. The review histories of related cards. Card semantics allow
| us to identify related cards. This enables memory models to
| account for the review histories of all relevant cards when
| estimating a specific card's retrievability.
|
| > 2. [...]
|
| I've been thinking that card semantics shouldn't be analyzed at
| all, and just treated as a black box. You can get so much data
| off of just a few users of a flashcard deck that you could build
| your own map of the relationships between cards, just by noticing
| the ones that get failed or pass together over time. Just package
| that map with the deck and the scheduler might get a lot smarter.
|
| That map could give you good info on which cards were redundant,
| too.
|
| edit: this may be interesting to someone, but I've also been
| trying to flesh out a model where agents buy questions from a
| market, trade questions with each other, and make bets with each
| other about whether the user will be able to recall the question
| when asked. Bankrupt agents are replaced by new agents. Every
| incentive in the system is parameterized by the user's learning
| requirements.
| ran3000 wrote:
| Yes, that reminds me of knowledge tracing and methods like 1PL-
| IRT.
|
| I think you can do both and get even better results. The main
| limitation is that the same flashcards must be studied by
| multiple students, which doesn't generally apply.
|
| I also love the idea of the market, you could even extend it to
| evaluate/write high-quality flashcards.
| rahimnathwani wrote:
| You mention that FSRS treats each card independently, even if
| they derive from the same note. I wonder whether you've tried
| this Anki plugin, which tries to increase the interval between
| reviews of 'sibling' cards:
| https://ankiweb.net/shared/info/759844606
| ran3000 wrote:
| Ah, I totally missed this, thanks for sharing it.
|
| Since in Anki the "note" is the editing unit, that works for
| some cloze deletions but not for QA cards (only for double-
| sided QA cards). A content-aware memory model would allow you
| to apply "disperse siblings" to any set of cards, independently
| of whether they were created together in the same editing
| interface.
| joshdavham wrote:
| I've been thinking about this for a while too as an FSRS
| developer [1].
|
| In general, we can think of a spaced repetition system as being
| (i) Content-aware vs. Content-agnostic and (ii) Deck-aware vs.
| Deck-agnostic
|
| Content-aware systems care about what you're studying (language,
| medecine, etc) while Content-agnostic systems don't care about
| what you're studying.
|
| Deck-aware systems consider each card in the context of the rest
| of the cards (the "deck") while Deck-agnostic systems consider
| each card in pure isolation.
|
| Currently, FSRS is both Content-agnostic as well as Deck-
| agnostic. This makes it extremely easy to integrate into a spaced
| repetition system, but this also means the model will underfit a
| bit.
|
| It it interesting to note that you could in practice optimize
| seperate FSRS models for each deck covering different topics,
| which would make it Content-aware in a sense. Additionally,
| "fuzz" is a somewhat Deck-aware feature of the model in that it
| exists specifically to reduce interactions between other cards in
| the deck.
|
| [1] https://github.com/open-spaced-repetition/py-fsrs
| ran3000 wrote:
| Being easy to integrate is an underappreciated feature of FSRS.
|
| Using decks to draw semantic boundaries is likely overly
| constraining. I think we want to account for finer differences
| between cards. Decks are coarse and people differ in the ways
| they use them, some people recommend having just one global
| deck. Notes are too fine. We explored something in between: a
| note capturing an idea or concept, plus an associated set of
| cards. Turns out it's hard to draw idea boundaries. That's why
| I think it's easier to relate cards by semantic embeddings or
| more rigid but clearer structures, like the DAG of dependencies
| suggested elsewhere in this thread.
| daft_pink wrote:
| After reading this, I would really like to know what other spaced
| repetition software there is for things like ai driven speech?
|
| I love Anki and used it before when I needed to memorize things,
| but would love to know what other options on the market exist.
| mabster wrote:
| On the scheduling end, I'm surprised the article didn't mention
| https://github.com/fasiha/ebisu which uses Bayesian statistics.
|
| When I was studying Japanese, I was thinking how it's always best
| to learn words in sentences and that it would be good if the
| sentences for a particular word were random.
|
| Extending that, the sentences could be picked such that the other
| words are words scheduled for today meaning much more bang for
| buck per learning hour.
| cosmic_cheese wrote:
| > When I was studying Japanese, I was thinking how it's always
| best to learn words in sentences and that it would be good if
| the sentences for a particular word were random.
|
| >Extending that, the sentences could be picked such that the
| other words are words scheduled for today meaning much more
| bang for buck per learning hour.
|
| Just the other day I was thinking about how there's a good
| chunk of vocab that could be "mined" from the sentences in my
| vocab deck.
|
| I think that this idea would work well, but would probably
| require a whole new SRS program to be able to implement it
| cleanly. It's too dynamic for a traditional SRS app like Anki
| which is pretty static in nature.
| kebsup wrote:
| I'm building a SRS language learning app [1] so I've thought
| about this topic a bit, but I've come to a conclusion that srs
| algorithms might be just a nerd optimization obsession. My app
| has "stupid" 1,3,7,15,30 or something like that intervals, and
| the reality is that if I know a card, I can swipe it within 2
| seconds, and if I just barely know it, I can spend 30 seconds on
| it.
|
| So optimizing the algorithm such that every card comes at the
| exact right moment might cause all cards to feel too hard or too
| easy. I think having a mix of difficult and easy cards is
| actually a feature, not a bug.
|
| [1] https://vocabuo.com
| jeffalyanak wrote:
| In the language learning world there are some great tools already
| for adding content-awareness.
|
| AnkiMorphs[1] will analyze the morphemes in your sentences and,
| taking into account the interval of each card as a sign of how
| well you know each one, will re-order your new cards to, ideally,
| present you with cards that have only one unknown word.
|
| It doesn't do anything to affect the FSRS directly--it only
| changes the order of new, unlearned cards--but in my experience
| it's so effective at shrinking the time from new card to
| stable/mature that I'm not sure how much more it would help to
| have the FSRS intervals being adjusted in this particular domain.
|
| 1: https://mortii.github.io/anki-morphs/intro.html
___________________________________________________________________
(page generated 2025-08-04 23:00 UTC)