ebisu  by fasiha

Bayesian spaced repetition algorithm for flashcard quiz scheduling

Created 8 years ago
331 stars

Top 82.7% on SourcePulse

GitHubView on GitHub
Project Summary

Ebisu is a public-domain Python library for intelligent quiz scheduling, designed for developers of flashcard applications. It uses Bayesian statistics and exponential forgetting to predict recall probability and update memory models based on quiz results, moving beyond rigid scheduling algorithms to optimize review efficiency and retention.

How It Works

Ebisu models recall probability using a Beta distribution, which is updated with quiz results via Bayesian inference. Time-based decay is handled by transforming the Beta distribution, resulting in a Generalized Beta of the First Kind (GB1) distribution. The library analytically computes moments of this distribution to approximate a new Beta distribution, enabling efficient and accurate scheduling.

Quick Start & Requirements

  • Install: pip install ebisu
  • Requirements: Python 3, SciPy, NumPy, nose (for tests), Pandoc, pydoc-markdown.
  • Demo/Docs: IPython Notebook crash course

Highlighted Details

  • Public-domain, with ports available in JavaScript, Java, and Dart.
  • Handles both binary and "soft-binary" (fuzzy) quiz results.
  • Allows explicit rescaling of a fact's half-life based on user feedback.
  • Provides functions for predicting recall probability, updating memory models, and calculating decay times.

Maintenance & Community

  • Developed by Fasiha.
  • Active development and testing, with a focus on numerical stability.
  • Community support via GitHub issues.

Licensing & Compatibility

  • Public Domain.
  • Fully compatible with commercial and closed-source applications.

Limitations & Caveats

  • The library may exhibit numerical instability for very small total values in updateRecall or when the algorithm is "extremely surprised" by results.
  • Monte Carlo simulations are computationally intensive and not recommended for production use.
Health Check
Last Commit

11 months ago

Responsiveness

Inactive

Pull Requests (30d)
0
Issues (30d)
1
Star History
1 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.