#spaced #learn #tui #supermemo

spaced-rs

一个实现受SM2启发的SR算法的小型库

5个不稳定版本

0.3.1 2022年8月28日
0.3.0 2022年6月24日
0.2.0 2022年6月20日
0.1.1 2022年5月26日
0.1.0 2022年5月22日

#503命令行界面

GPL-3.0-only

18KB
109

目标

这个Rust库旨在提供一种简单、高效且功能强大的间隔重复算法实现

设计

  • 简单易懂且易于修改的模型。
    • 我们将遗忘建模为具有“遗忘率”f的衰减指数函数
    • 这个比率被描述为项目难度(d)和记忆强度(s)的商

$$P(t) = e^{-ft} = e^{-\frac{d}{m}t}$$

  • 试图尽可能少地对项目内容/数据做出假设。

  • 尽管如此,它假设用户以某种方式评估了每次复习事件的结果。

  • 提供两种调整算法结果的方法

    • 对于每次复习事件,用户输入项目是否太难。然后这被用来调整项目难度值(这将影响下一个间隔的值)
    • 当几张卡片成熟时,可以比较预期回忆概率和实际回忆概率之间的比率。然后这被用来引入一个“调整因子”。这个因子用于计算下一个遗忘率。

为了更好地理解代码的工作原理,请阅读源代码!(它不到150行)

数据驱动与用户评估

建模遗忘曲线需要包含大量参数,这些参数可能相当任意。为了更好地设置这些值,人们希望有一组实际的复习事件数据集,然后尝试将这些模型拟合到表现最好的项目。然而,这种方法需要熟悉此类方法(我没有)。因此,我将尝试尽可能准确地猜测一些值,并引入一种让用户连续评估模型性能的方法。我希望通过这种方式,可以经验性地得出更好的默认值,直到我能够创建一个完全数据驱动的方法。

局限性

此库不

  • 处理失败的复习(遗忘的项目)。相反,库用户需要决定如何处理此类项目。
  • 自动更新所有参数以更好地模拟真实遗忘曲线

许可证

见 ./LICENCE

依赖项

~310KB