-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can this be used as a passive review scheduler? #56
Comments
Hmm, interesting question! I'm not familiar with what theory is being invoked by Supermemo for these topics elements, but after thinking about it for a few minutes, I can't think of anything in the Ebisu modeling framework analogous to topics. However, as you may have guessed, there's absolutely nothing stopping you from just calling Let me know if this answers your question or if I've misunderstood! |
Yeah, I think I'll go the pretend review route. I've misunderstood how the algorithm works. From #42, you wrote that this algorithm doesn't actually schedule anything but just spit out the probability of recall and the developer decides the cutoff for review correct? So I guess I would do something like show the user a topic that have low recall probability? Also, In Supermemo, each topic can be assigned a "priority" value by the user. There is some info about it here.
Can this be incorporated to the algorithm? I saw this paragraph on the README:
So I guess high priority topics will have a low initial half-life while low priority topics will a higher value so they don't get reviewed too soon right? |
Right on. I pick the flashcard in the lowest predicted recall (or something similar; often I like to find the 5% of cards with the lowest recall probability and pick a random card from that set, etc.). Others use
Wow, I am totally out of date on Supermemo and didn't know about its priority system. Hmm! Your proposal could work, but it's not a perfect replacement 😕. Here's why I say that: if you learn two new things that are equally new to you and therefore equally hard to remember, Ebisu would like both flashcards to start with the same model (same numbers, same predicted probability of recall at the starting halflife). If one of those facts is more important than the other, and you give the less important one a higher initial halflife, sure, in practice you will review the less important one less frequently, but you would be underreviewing in some sense (since our assumption was that both were equally hard to remember when you first learned them)? But it might be fine! This is the kind of functionality that I think might need to live in the app level (one level above Ebisu), because I can't right now think of anything that I can add to the Ebisu model to mimic Supermemo's priority idea. Because, again, Ebisu's core idea is that quizzes are binomial/binary random variables whose underlying probability is Ebbinghaus' exponential decay. And I don't know how to add priority to that model (where some probabilities are more important than others). But I'll keep thinking about it! So here's another proposal: maybe in the app level, you can assign flashcards to priorities, and then apply some kind of heuristic whereby the predicted recalls for higher-priority cards are reweighted to have lower probability of recall, and therefore get selected sooner…? That way, Ebisu's memory model stays coherent (you don't lie to Ebisu by claiming a low priority card has a higher halflife) but you do differentiate between cards that have the same As a very rough suggestion, if there were N priorities (I'd try to restrict N<5 in the app?), where priority=1 is the normal and priority=5 is highest, you might try
What do you think? Let me know if something in the above doesn't make sense. The difference between your proposal and mine may be hard to see and maybe I'm overstating its importance, so thanks for bearing with me 😅! |
Minor suggestion: I think a slightly better def applyPriority(rawProbabilityRecall: float, priority: int|float) -> float:
return rawProbabilityRecall / priority I think what I suggested in my previous comment, Both are just very rough suggestions, from me thinking about this question for only a few minutes, feel free to think outside the box here! Happy to give feedback on any schemes you might think of. |
This problem can be solved at the application level. |
Closing this but please feel free to reopen or add more comments! |
Hello. Today I added some additional info in Language Reactor saved item list, to show the current halflife. I did some reviews, and immeadiatly noticed an issue. The word review feature (PhrasePump) uses passive reviews heavily (2 passive reviews for every explicit test), using a new example sentence for the word most of the time. When a word is reviewed in a session, I do an update on the ebisu model for the word once (the user actually sees three example sentences for a word), ebisu.updateRecall() is called with a pretend "success". The problem: Say I didn't study for one month. An item is shown to me that has halflife 0.5 days, way overdue. ebisu.updateRecall() is called with "success", ebisu say, wow, you're awesome, you remembered this word after one month, I'm going to bump it right up to halflife 8.3 days! But, I probably didn't really remember it. We're on ebisu 2.0. As a fix on our end, I'm thinking to cap tnow to the items halflife (0.5 days) when doing passive exposure, as if the item was reviewed on-schedule. This results in halflife climbing to only 0.63 days, which seems better. Any thoughts? :) I'm sending you an email btw. |
Hi @hobodrifterdavid thanks for the note, always happy to hear from Language Reactor!
In this situation, I would not call Does that make sense? |
In Supermemo, there're 4 types of element: Items, topics, concepts, and tasks. I want to develop an incremental reading app so I'm mainly interested in how to schedule the topics properly. If you don't know what a topic is, here is the description from this article:
So it's just a passage of text but somehow Supermemo knows when to show it to you.
Also, from the same article:
This sounds similar to the much older SM-2 algorithm but it doesn't need user's grade to determine the interval.
So the question is: Is there a way for ebisu to function like this? Schedule this type of card that have 0 feedback?
The text was updated successfully, but these errors were encountered: