我想知道如何修改和概括间隔重复软件。具体来说,我想知道如何改变要显示的卡片的数量,卡片的范围,以及指定一张特定牌牌的能力。
我研究间隔重复软件已经有一段时间了,并发现了以下问题:
很难确保在某一特定日期显示的卡片数量保持在一定范围内。
与其被告知今天该学哪一张牌,我更愿意随心所欲地拿起牌,看我有多少时间去看几张牌。
我理解后一点与间隔重复的逻辑有些冲突,但也许可以找到一种折衷办法。
这个程序必须解决的问题是“如果我现在被要求出示一张卡片,我应该根据每一张卡片的学习历史、重要性等来选择哪一张卡。”
我认为,这种方法可以很容易地推广到增量阅读和待办事项列表管理。
由于我是一个编程新手,任何关于如何实现这样的算法的帮助都将是非常感谢的。
下面是我试图解决这个问题的一个非常基本的尝试;这里最明显的问题是,代码没有考虑到卡文件随时间的增长。
#! /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/)等。
因此,我希望有一个通用脚本,它可以随意地呈现项目,但按重要性、易用性、紧迫性、趣味性等进行加权。
发布于 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/。
发布于 2012-06-09 13:58:30
您可以以您想要的方式使用安基。你不需要做所有的卡片,每一天到期,同时你有一个选择,审查卡早于他们是到期的。它甚至应该可以写一个Anki插件隐藏的数量的到期卡,并自动审查之前,他们是到期的卡片,如果没有到期卡。
不过,作为一个实际问题,我建议不要改变这一进程。拥有一定数量的到期卡意味着当你完成你每天的一堆卡片时,你会感到成功。这种成就感有助于你养成定期使用闪存卡的习惯。
在你的卡片到期的时候不去做,也会增加你的学习时间。如果你稍后复习卡片,你会增加你会忘记的卡片的数量。如果你早点复习,你就会浪费时间。
如果你仍然想重新发明轮子,你应该从阅读SM2算法的工作原理开始。
https://stackoverflow.com/questions/10865535
复制相似问题