首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改和推广间隔重复软件的最佳方法

修改和推广间隔重复软件的最佳方法
EN

Stack Overflow用户
提问于 2012-06-02 10:52:21
回答 2查看 1.9K关注 0票数 7

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

我研究间隔重复软件已经有一段时间了,并发现了以下问题:

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

与其被告知今天该学哪一张牌,我更愿意随心所欲地拿起牌,看我有多少时间去看几张牌。

我理解后一点与间隔重复的逻辑有些冲突,但也许可以找到一种折衷办法。

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

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

由于我是一个编程新手,任何关于如何实现这样的算法的帮助都将是非常感谢的。

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

代码语言:javascript
复制
#! /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

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

第一,我有兴趣拥有某物。对于命令行(这是一个尽可能简单的第2行),我希望避免基于日期的逻辑,即使这与SRS 3相比,我希望有一个简单的脚本,可以黑入许多不同的应用程序,如todo-list管理、读-列表管理、播放列表管理(如http://imms.luminal.org/)等。

因此,我希望有一个通用脚本,它可以随意地呈现项目,但按重要性、易用性、紧迫性、趣味性等进行加权。

EN

回答 2

Stack Overflow用户

发布于 2014-03-30 00:29:07

关于这个话题有丰富的文献。我推荐的一篇论文是Lindsey、Shroyer、Pashler和Mozer的“通过个性化评论提高学生的长期知识保持”:https://web.archive.org/web/20140331061418/http://laplab.ucsd.edu/articles/LindseyShroyerPashlerMozer2013.pdf (如果链接死了,请确保得到一个带有附录和补充在线材料的版本,其中详细介绍了他们描述的机器学习算法)。

本文描述了一种机器学习算法,给出了一组学生对问题列表的时间标记正确和不正确的回答,估计了每个(学生,问题)-pair的正确响应概率。这正好回答了你的一个子问题。在任何时候,这样的算法都可以告诉你最容易被遗忘的问题(正确回答的概率最低)。更重要的是,它给出了一个排序的问题列表,以减少遗忘的风险。但更重要的是,它会给出一个介于0到1之间的数字,表示遗忘的风险,这样你就可以设定一个阈值,比如“不要问我那些遗忘概率小于5%的问题”。

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

另一个小问题:请随意尝试非Anki学习策略。除了受欢迎之外,没有其他证据表明Anki的工作流是做任何事情的最佳方法,事实上,我非常怀疑它对所有学习者都有效。

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

票数 6
EN

Stack Overflow用户

发布于 2012-06-09 13:58:30

您可以以您想要的方式使用安基。你不需要做所有的卡片,每一天到期,同时你有一个选择,审查卡早于他们是到期的。它甚至应该可以写一个Anki插件隐藏的数量的到期卡,并自动审查之前,他们是到期的卡片,如果没有到期卡。

不过,作为一个实际问题,我建议不要改变这一进程。拥有一定数量的到期卡意味着当你完成你每天的一堆卡片时,你会感到成功。这种成就感有助于你养成定期使用闪存卡的习惯。

在你的卡片到期的时候不去做,也会增加你的学习时间。如果你稍后复习卡片,你会增加你会忘记的卡片的数量。如果你早点复习,你就会浪费时间。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10865535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档