7

我想知道如何修改和概括间隔重复软件。具体来说,我想知道如何更改要显示的卡片数量、卡片范围以及指定特定卡片组的能力。

一段时间以来,我一直在涉足间隔重复软件,发现以下问题:

很难保证特定日期将显示的卡片数量保持在一定范围内

与其被告知今天要学习哪张牌,我更愿意随时拿起牌组,根据我有多少时间来翻几张牌

我知道后一点与间隔重复的逻辑有些冲突,但也许可以找到折衷方案。

程序必须解决的问题是“假设我现在被要求出示一张卡片,我应该根据每张卡片的学习历史、重要性等选择哪张卡片。”

我认为这种方法可以很容易地推广到增量阅读和待办事项列表管理。

由于我是一名编程新手,因此将不胜感激有关如何实现这种算法的任何帮助。

请在下面找到我解决该问题的一个非常基本的尝试;这里最明显的问题是代码没有考虑卡片文件随时间的增长。

#! /usr/bin/env python

import random

box = []

class flashcard(object):
  def __init__(self, quest, answ, score):
    self.question = quest
    self.answer   = answ
    self.score    = score
# ------------------------------------------------------------------------------
f = open('list.txt','r')
for line in f:
  parts = line.split('\t')
  box.append(flashcard(parts[0],parts[1],int(parts[2])))
f.close()

# ------------------------------------------------------------------------------
keepgoing=True
while keepgoing:
  card = random.choice(box)
  if random.uniform(0,1) * card.score < 1:
    a = raw_input(str(card.score) + ' ' + card.question + ' ')
    if a == card.answer:
      card.score *= 3
    elif a == 'q':
      keepgoing = False
    else:
      card.score = 1
      print 'WRONG -->' + card.answer
  else:
    pass

# ------------------------------------------------------------------------------
f = open('list.txt','w')
for card in box:
  f.write("%s\t%s\t%s\n" % (card.question, card.answer, card.score))
f.close()

最佳,J


好的谢谢你!虽然您的观点完全有效,但直到现在我才意识到,我提出问题的动机实际上更广泛,因此有些观点对我来说仍然是开放的。

第一,我会对某事感兴趣。对于尽可能简单的命令行 2nd 我想避免基于日期的逻辑,即使这与 SRS 3nd 略有不同我想要一个简单的脚本,我可以破解许多不同的应用程序,例如 todo - 列表管理、阅读列表管理、播放列表管理(如 http://imms.luminal.org/)等

所以,我想要一个通用脚本,可以随机呈现项目,但按重要性、容易性、紧迫性、趣味性等加权

4

2 回答 2

6

关于这个主题有丰富的文献。我推荐的一篇论文是 Lindsey、Shroyer、Pashler 和 Mozer 撰写的“通过个性化审查提高学生的长期知识保留”:https ://web.archive.org/web/20140331061418/http://laplab.ucsd .edu/articles/LindseyShroyerPashlerMozer2013.pdf(如果链接失效,请务必获取带有附录和补充在线材料的版本,其中提供了他们描述的机器学习算法的详细信息)。

在这篇特别的论文中,描述了一种机器学习算法,给定一组学生对问题列表的正确和错误回答,估计每个(学生,问题)对的正确回答的概率。所以这正好回答了你的一个子问题。在任何给定时间,这样的算法都可以告诉您最有可能被遗忘的问题(正确回答的可能性最低)。更重要的是,它为您提供了一个排序的问题列表,以降低遗忘的风险。更重要的是,它会给你一个介于 0 和 1 之间的数字,表示忘记的风险,这样你就可以设置一个阈值,比如“不要问我忘记概率低于 5% 的问题”。

不是绝对初学者的项目,但请尝试一下!

另一个小点:随意尝试非 Anki 学习策略。除了受欢迎程度之外,没有任何证据表明 Anki 的工作流程是做任何事情的最佳方式,事实上我非常怀疑它是否适用于所有学习者。

编辑我为贝叶斯间隔重复设计了一个算法,并在 Python、JavaScript 等中实现了它,我称之为 Ebisu:https ://fasiha.github.io/ebisu/

于 2014-03-30T00:29:07.007 回答
1

您可以按照自己的方式使用Anki。您不必每天都完成所有到期的卡片,同时您可以选择在到期前查看卡片。甚至应该可以编写一个 Anki 插件来隐藏到期卡片的数量,如果没有到期卡片,它会在卡片到期之前自动审查卡片。

然而,作为一个实际问题,我建议不要改变这个过程。拥有一定数量的到期卡片意味着当您完成每天的卡片堆时您会感到成功。这种成功的感觉可以帮助你养成定期做抽认卡的习惯。

没有按时完成卡片也会增加您的总学习时间。如果您稍后查看卡片,则会增加您会忘记的卡片数量。如果你早点复习它们,你会浪费时间。

如果您仍然想重新发明轮子,您应该从阅读SM2 算法的工作原理开始。

于 2012-06-09T13:58:30.730 回答