Skip to content
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

is the java version of ebisu same as the python one ? or is there Rust version one? #53

Open
conanchen opened this issue Nov 11, 2021 · 1 comment

Comments

@conanchen
Copy link

No description provided.

@fasiha
Copy link
Owner

fasiha commented Nov 11, 2021

Good questions!

No, the Java version is using the 2.0 version of the Ebisu API while the Python version is to 2.1, which just added some new features: see changelog.

As far as I know there isn't a Rust version but I would be very happy to help write one. @ttencate's Dart port cites the Java version as the main reference. You'll need a Rust implementation of gammaln and a 1D optimization function (for mathematical optimization, i.e., function minimization, like golden search).

I'd like to share that a major overhaul of Ebisu is coming in the next few weeks—I've been working on it every day 😅 (in this repo).

It addresses #43 and I'm hoping to write a request for comment (RFC) issue in a few days describing the new API, but in a nutshell,

  • Ebisu v3 will have a much faster and simpler predictRecall, which will just be an algebraic expression, (-(currentTime - lastSeenTime) / halflife), and you can do this in SQL.
  • predictRecall will also be more accurate because it will explicitly boost the memory's strength after each quiz (Anki calls this the "ease factor").
  • The model will be a lot bigger: instead of three numbers, it'll be a bigger JSON object.

If you're writing a new quiz app, Ebisu 2.0 and 2.1 are totally fine to use: we've detailed their flaws in #43 but if your quiz app doesn't need numerically-precise predictRecall, and just needs cards ranked from lowest to highest recall, then Ebisu 2.x will be fine. If you want to wait for v3, again, I'm hoping to publish it in a few weeks.

Happy to answer further questions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants