Anki理解笔记
Anki是我从2013年开始使用的卡牌软件,用于学习一门外语,或者突击复习材料繁多的考试。Anki自定义卡牌非常强大。近期花时间阅读了官方英文文档,在这里写下自己的翻译和理解。
本文最后更新于:2020年2月29日
简介
在背英语单词时,相信有人使用过一种“纸卡片”的方法:找一叠扑克牌大小的卡片,正反两面写上英文和中文意思,然后不断翻阅卡片,从正面英文思考背面中文,或者从背面中文思考正面英文,反复记忆,通常能达到比“机械地记忆”更好的效果。
Anki就是一个类似于纸卡片工作原理的软件,可以制作几乎所有类型的卡片,方便随时随地复习。
Anki is a program which makes remembering things easy. Because it is a lot more efficient than traditional study methods, you can either greatly decrease your time spent studying, or greatly increase the amount you learn.
Anki应用领域非常广
- 语言学习:Arabic(阿拉伯语),Chinese(汉语),English(英语)...
- 备考:高考,USMLE(美国执业医师执照考试),司法考试...
- 科学:解剖,病理学,化学,地理,音乐...
- 琐事:练习吉他和弦,温习唐诗宋词,生活记事本...
Anki主要特点
- 免费、开源,基于python+Qt
- 使用流行的SuperMemo算法记忆曲线
- 自定义卡片的CSS,支持Javascript,支持音频图片导入,LeTex公式
- 卡片组支持导入导出纯文本(为使用Excel批量制作卡片组提供了思路)
- 跨平台,支持windows/linux/macOS/Android/iOS(收费)
- 支持同步到AnkiWeb云端
Anki凭借自己独特的应用方式和使用思路已经完爆Anki的师傅/父亲:SuperMemo!!全球各地的前辈们自己使用着的卡片已经分享到了AnkiWeb了!!
让我搜集一下大家都在怎么使用Anki学习/复习的:
有网友认为Anki适合收集零碎知识:
日常学习就是看到一些零散的知识点,想快速地记下来。最常用的方法就是,写文档或记在笔记中(印象笔记、OneNote),然而这些记录大多都石沉大海,少有重温之时。
既然是零碎的知识,有时就很难作为一篇笔记,分类上就很纠结。作为知识的最小单元,一张卡片可能真的是最合适的。但是不能花过多时间在制作卡片上,否则不就是本末倒置。
关于零碎知识,可以拿它来当作随时摘录英语句子的笔记本
有人拿它来当作一个小词典
有人拿它来准备地理考试
甚至还有人读医的在用Anki,是不是要做与2019-nCoV有关的研究呢?
有人闲的蛋疼还恶搞川帝。。。
看来Anki这个软件简直就是通用的记忆/复习软件,我们也有必要去学习一下它是怎么使用,先从基本的术语开始。
术语
Anki中基本名词定义
英文 | 中文 | 备注 |
---|---|---|
Card | 卡片 | 带有正反两面(含有问题和答案)的卡片,即"a question and answer pair" |
Deck | 卡牌集合(卡片组) | 一个集合,里面装有很多卡片,可以导出为apkg文件 |
Note | 笔记 | 生成卡片的一条数据库记录,一个笔记可以生成一张或者多张卡片 |
Field | 字段 | 一个笔记的字段,类似于数据库的字段,常用的字段:"FrontContent","BackContent","ImageFile" |
Note Type | 笔记类型 | 利用笔记生成卡片所用到的模板(Template),类似于PowerPoint的母版 |
Interval | 复习间隔 | 概念不是学习步骤(learning step)中的"时间",Interval是卡片毕业后,该卡片下次出现的时间间隔 |
Collection | 收藏集 | Anki中所有的资料,包括笔记、卡片、牌组、卡片类型 |
Due | 到期的卡片数目 | 到期=正在学习+复习队列,也就是卡片组三个数字中的棕色+绿色之和 |
添加卡片组
获取卡片组
可以下载别人已经制作好的(pre-made)卡片组合,也可以自己创建(self-made)卡片组合。
Decks | Pros | Crons |
---|---|---|
pre-made | 方便快捷,来源广泛 | 词库庞大,不一定适合每一个人 |
self-made | 自定义,符合个人记忆思路,效果更好 | 制作卡片花费时间较长 |
'Self-made' vs 'pre-made'
Creating your own deck is the most effective way to learn a complex subject. Subjects like languages and the sciences can’t be understood simply by memorizing facts — they require explanation and context to learn effectively. Furthermore, inputting the information yourself forces you to decide what the key points are, leading to a better understanding.
"Do not learn if you do not understand." -- SuperMemo
总之,要“基于理解地记忆”,绝对不能是机械的记忆!对于记忆方法,强烈推荐看一下这篇文章Effective learning: 20 rules of formulating knowledge,我花了不少时间理解其中的精髓!
如果您正在学习某本课本,而刚好有人分享了该课本的卡片组,这可以让你节省一些制作卡片的时间。不提倡直接拿别人的卡片,因为把别人的卡片组打开后会发现卡片很难懂,因为缺少相关背景资料和介绍。
我的通常做法是,先去社区找找有没有pre-made卡片组,有的话就可以参考别人,筛选自己认为有用的卡片,根据记忆的上下文,增加适合的字段或删除不必要的字段,改造成self-made的卡片组。
学习
Anki采用"Learning Steps"概念进行卡片的学习,每点击Show Answer按钮,出现几个"Again","Good","Easy"按钮进行"Reset Step","Next Step","Graduate"的步骤。
每出现一次卡片,称为一个Learning Step,默认情况下只有;2个Step:"1m, 10m"(意思Step1会卡片每1分钟出现一次。只要进入了step 2,那么大约10分钟后卡片再现。)
Learning Step是可以自定义的,比如我最近在学习日语记忆日文生词时,采用了这个自定义步骤(单位:分钟):
2 5 10 30 60
这里就有5个步骤,时间间隔如下
Step | 设置时间(分钟) | 意义 |
---|---|---|
1 | 2 | 初始步骤(点击Again会进入该步骤),在此步骤点击Good后,会约2分钟后卡片再现 |
2 | 5 | Step1->Step2,在此步骤点击Good后,约5分钟后卡片将再次出现 |
3 | 10 | Step2->Step3,在此步骤点击Good后,约10分钟后卡片将再次出现 |
4 | 30 | Step3->Step4,在此步骤点击Good后,约30分钟后卡片将再次出现 |
5 | 60 | Step4->Step5,在此步骤点击Good后,约60分钟后卡片将再次出现 |
如果在Step5记住了卡片(点击了"Good"或者"Easy"),那么卡片毕业了(Card is graduated),卡片进入Review队列。Anki默认在下一天会再次出现(或者复习),随后将逐步增加出现的间隔(符合记忆曲线)。
建议每个人根据学习材料的难度,修改自定义步骤,不采用默认的"1 10"步骤
每张卡片都会经理三个阶段:新卡片、学习中、毕业。他们转换的关系如下:
- 对新卡片点击Good会进入学习中,点击Easy会直接毕业
- 对学习中的卡片点击Easy会直接毕业
- 对学习中的卡片完成所有学习步骤,卡片毕业
- 毕业后的卡片会按照一定的算法在将来重新出现,若点击Again会进入学习中
- 毕业后的卡片可以通过卡片浏览器中的Reschedule操作,重新变成学习中的卡片
Learning
对于新卡片,才有学习模式(Learning Mode或Learning Phrase)这个概念。
已经毕业的卡片不属于学习模式,在下文Reviewing小节会单独介绍毕业卡片,其打分界面会有所不同。
学习模式下从左到右有三个打分按钮:Again,Good,Easy,桌面版的Anki,这三个按钮的快捷键是:1,2,3
下面分别介绍按钮的意义,对应的Learning Step处理方式。
Again
点击后将回到Step 1,没有任何副作用,生疏的卡片谁能一眼就记住呢?大家都是从不断的Again走过来的。
Anki旧版本这个按钮是"Soon"
Good
点击后将进入Next Step,当处于Last Step时,卡片毕业(card is graduated),卡片被放入待复习的队列。
Easy
点击后将使得卡片毕业(card is graduated),卡片被放入待复习的队列。
Reviewing
对于已经学习的卡片(已经毕业的卡片)复习。
从左到右有四个打分按钮:Again,Hard,Good,Easy。桌面版的Anki,这三个按钮的快捷键是:1,2,3,4
Again
标记该卡片为回答错误(incorrect),并且要求Anki在未来尽可能地再现此卡片。
回答错误称为失误(card was lapsed),关于失误后的默认处理是Anki将卡片的interval更改为1,即明天到期,并在接下来的10分钟内进入学习队列。
对失误(lapses)的处理,可以有更多的自定义:
点击:Deck Option(卡片组选项) -> Lapses(失误)
- New interval(新间隔)设定的是Anki对于回答失误的卡片的新复习时间间隔(interval)的百分值,基数是卡片的上一个时间间隔(last interval)。举个例子:一张卡片上一次的复习间隔是100天,New interval设置为20表示20%,那么失误后,新的interval被设定为20天。
- Min interval(最小间隔)有效值值为不少于1的整数。默认值是1,表示Anki先通过New interval百分比计算得出的interval值,若该计算值大于Min interval,则被设定为Min interval值。
- Leech threshold(难点阈值)指定连续"Again"失误的阈值,超过阈值将采取特定动作。
- Leech action(难点动作)默认是到达记忆难点阈值后暂停卡片。(其实可以选择另一个选项:标记该卡片)
如果一张卡片进入了记忆难点(多次按Again达到难点阈值)被暂停,建议:
- Waiting,等到真正学习机会再学
- Delete it,删掉它,花时间学点简单的比死扣牛角尖更值得
- Edit it,修改笔记,也许改一下Hint,加几个图片,或者重新排版一下CSS,让大脑接受新的学习环境再去攻克它
Hard
设定该卡片的新interval值为稍大于Good的interval值。效果是要求Anki在未来尽可能地再现此卡片(频率没有Again按钮高)。
Good
标记卡片的难度尚可,符合记忆曲线,告诉Anki不需要修正卡片的难度曲线(the card easiness doesn’t need to be adjusted down or up)。Anki默认将下次复习的间隔(interval)设定为250%乘以上一次的interval值。举例:上次看见卡片是10天前,今天看到后标记卡片Good,那么25天后才能再次看到这卡片。
Easy
标记卡片的难度变简单了,让Anki加长interval来让Anki在未来尽可能地不显示此卡片。通常对“确实特别简单的卡片”才这么做。一般建议点击Good即可。
Overview数值
学习过程中有从左到右的三个带颜色数值:
12 + 34 + 56
数字 | 颜色 | 说明 |
---|---|---|
12 | 蓝色 | 是新卡片数量 |
34 | 棕色 | 正在学习的卡片数量 due to be studied today which are currently in the learning phase |
56 | 绿色 | 待复习卡片数 due for review. (i.e. cards which have already graduated from the learning phase) |
卡片动作
- Mark Note(标记笔记),将卡片所对应的笔记添加标签"Marked",以便于在卡片浏览器中快速筛选。
- Bury Card(隐藏卡片),将当前的笔记隐藏,下一天将自动取消隐藏。目的是留给明天学习(复习),至于手动取消隐藏,可以通过Deck Overview下的Unbury取消。隐藏卡片用于那些自己暂时不想学习的卡片。
- Suspend Car(暂停卡片)将当前的笔记暂停,直到手动取消暂停。常用于确实不想学习的卡片(或者特别难记的卡片,没学过的卡片...)
笔记类型
预置笔记
Basic
最基本的卡片,只有两个字段:正面反面。Basic(Reverse)
可以从一个Note中生成两张卡片Card1,Card2,正反面能互相映射。Basic(Optional R.)
可控地从一个Note中生成两张卡片Card1,Card2。只需往Add Reverse字段填入任意字符就能生成Card2。如果Add Reverse为空则不生成Card2。Cloze
产生如下的填空题,用法详见知乎专栏《cloze模板》
自建笔记
因为最近自学日语,以建立日语生词卡片为例。
新建一个卡片类型
add new from basic,名字“标准日语初级生词”。
字段我自订为如下表
字段 | 意义 |
---|---|
Chinese | 中文意思 |
AudioFile | 媒体文件 |
Japanese_1 | 假名 |
Japanese_2 | 日本繁体汉字 |
Hint_ch2jp | 自己写的提示,从中文联想出日文,或者写上自己的 理解,书中出现的页码数,也可以是例句等等 |
Part_of_speech | 词性 |
这里有个勾选某个字段作为卡片浏览器的主键(卡片浏览器中只显示该字段,并进行排序),如果在卡片浏览器很难找到对应的卡片,可能需要重新勾选合适的字段,这里我选用了Chinese作为主键字段。
下一步就是自定义卡片的模板了
右上方有个加号,点一下可以添加一张新的卡片Card2,这样就可以利用一条Note记录产生正反对应的两张卡片,方便自己复习。
注意对Card1和Card2都要修改正反面的模板,不能两张卡都是单向映射对吧!要做到"中->日"和"日->中"的两张映射。
- Anki支持HTML+CSS的布局渲染,加上Javascript(内嵌,不能外部引用)也是很好的
- 通过不同div class渲染不同的颜色
- 使用{ {hint:Hint_ch2jp} }能创建一个提示,当Hint字段不为空时候可以在学习卡片中显示Tips
- 使用Conditional Replacement可以生成不同的卡片,比如判断Part_of_speech为非空内容时候显示该词的词性
最后关闭卡片界面,到主菜单中添加卡片,卡片类型记得选中“标准日语初级生词”哦!
开始学习了,可以设置自动播放音频
通过设置卡片
卡片浏览器
浏览器的目的用于选中某些卡片进行修改等,或者调用正则表达式的批量替换。
侧栏
左侧显示了所有的Deck和Tag,卡片状态等
侧栏支持按键多选的逻辑:
- 按住Ctrl多选:产生逻辑AND
- 按住Shift多选:产生逻辑OR
- 按住Alt多选:产生逻辑 '-',即排除
搜索语法
在查找栏输入特定的查找命令匹配collection里面的所有卡片
更多搜索语法,请参考anki文档的"Searching"小节。
普通词如下
查找命令 | 匹配 | 匹配举例 |
---|---|---|
dog | 含有dog | 'doggy' 'underdog' |
dog cat | 一句话里面含有dog和cat | 'a dog and a cat' |
dog or cat | 要么含有dog,要么含有cat | 'doggy' 'catttt' |
dog(cat or mouse) | dog和cat同时出现或者dog和mouse同时出现 | - |
-cat | 不含cat | 'mouse' |
-cat -mouse | 既不含猫也不含老鼠 | 'dog' |
"a dog" | 精确匹配a dog | 'a dog' |
-"a dog" | 精确排除a dog | 'a cat' |
d_g | 等价于正则表达式d[a-z]g | 'dig' 'dzg' |
d*g | 等价于正则表达式d.?g | 'd2g' 'dzzzg' 'dg' |
限定搜索字段:
查找命令 | 匹配 |
---|---|
front:dog | 字段front含有dog |
front: | 字段front为空 |
front:_* | 字段front非空 |
tag:animal | 标签为animal |
tag:ani* | 标签开头为ani |
tag:none | 没有标签 |
deck:french -deck:french::* | 属于french卡片组,但不属于french子卡片组 |
deck:filtered | 已过滤卡片 |
card:1 | 卡片1 |
note:basic | 卡片类型为basic |
限定卡片状态:
查找命令 | 匹配 |
---|---|
prop:ivl>=10 | 卡片的复习间隔>=10天 |
prop:due=1 | 明天到期的卡片 |
prop:due=-1 | 昨天到期的卡片,也就是没有及时复习的卡片 |
prop:due>-1 prop:due< 1 | 介于昨天和明天过期的卡片 |
prop:reps< 10 | 回答次数少于10次 |
prop:lapses>3 | 失误大于3 |
added:1 | 今天添加的卡片 |
added:7 | 上周添加的卡片 |
rated:1 | 今天回答过的卡片 |
rated:1:2 | 今天回答过的卡片中选过Hard(2)的卡片 |
rated:7:1 | 近7天回答过的卡片中选过Again(2)的卡片 |
is:suspended | 是否暂停 |
is:due | 是否到期的卡片(即将学习或复习) |
选中某卡片后的选项
电脑版与Android版这个界面稍有不同,可以参考对应客户端的文档。下图为AnkiDroid 2.9版本的选中几个卡片后点击菜单键的界面:
英文 | 中文 | 备注 |
---|---|---|
Reposition | 重新定位 | 仅对新卡片有效:改变卡片出现顺序,如让B出现在A前面 |
Reschedule | 重新计划 | 会询问用户设定一个天数N,将卡片设定未来N天内进入学习队列末尾,不改变revision history |
Reset progress | 重设进度 | (Android版独有)立即放入复习队列末尾(不是学习队列,是复习队列哦) |
对于Reschedule卡片设定新的学习进度,我从这篇reddit帖子看到一种说法是:
你想快速复习(强调re-review)一下曾经记住过的卡片吗?那么可以创建过滤卡片组,方法举例:
- 从CardBrowser中找出你要复习的卡片,全部创建一个标签,比如ToBeReviewed
- 创建过滤卡片组,使用
deck: "XXX" tag: "ToBeReviewed"
将其挑选出来 - 可选步骤:重新设定过滤卡片组的顺序、学习步骤。然后Rebuild重建
你想重新学习(强调re-learn)卡片吗?那么可以使用Reschedule将卡片变成新卡片,如:设定2天后作为新卡片。
注意:Reschedule不会改变某张卡片的回答历史(revision history)。历史是指:用户点击Good、Again的次数,历史会参与数据统计。Reschedule仅仅改变了卡片的状态(已毕业的卡片变成新卡片),如果确实需要重置某卡片的回答历史,则需要导出该笔记,然后删掉该笔记,重新导入。
附上AnkiDroid的统计图,均是从卡片的回答历史生成的(感觉比PC版统计的要好用)
过滤卡片组
过滤卡片组(Filtered Deck)可以从某个Deck中抽取一部分卡片,用于特殊的学习目的
- 突击考试,不能全部复习,只能随机复习卡片
- 只复习特定的tag
- 累积已久老卡片复习
- 提前复习
已过滤的卡片不能使用已暂停(suspended)或者已隐藏(buried)的卡片。也不能使用已经被加入其它filtered deck的卡片。某个时刻一张卡片只能放在一个deck中。
删除filtered deck时候卡片被归回原来的卡片组(Home Deck)。
卡片选择排序(Filtered Deck Option选项下):
排序 | 说明 |
---|---|
Oldest seen first | 按某卡片距离上次你看见它的时间排序,最长时间的优先 |
Random | 随机,没有任何优先顺序 |
Increasing interval | 按复习间隔从小到大排序 |
Decreasing intervals | 按复习间隔从大到小排序 |
Most lapases | 失误最多的卡片排前面 |
Ordered due | 最近到期的优先,对正在学习、处于复习队列中的卡片优先展示 |
Ordered added | 添加顺序:从旧到新 |
Latest(Ordered) added first | 添加顺序:从新到旧 |
Relative overdueness | 相关已过期,比如考虑如下2张卡片:卡片A的interval为5d,已经过期了2天还没复习;卡片B的interval为400d,已经过期7天,按照本排序算法,那么卡片A优先于B。这种排序方式通常用于筛选出最处于濒临忘记状态,但是只要抓住机会就有可能记起来的卡片。此策略将那些最可能牢牢记住的卡片尽量忽略 |
Excel导入
首先创建合适的笔记类型,还是以上面的“标准日语初级生词”卡片类型为例。
导入目的是含有所需笔记(Note)的TXT文档,若该文档满足卡片类型字段要求,Anki会自动映射字段并添加到特定Deck中。
字段
- Chinese
- AudioFile
- Japanese_1
- Japanese_2
- Hint_ch2jp
- Part_of_speech
- 标签
因为我电脑没有安装Office,故暂时使用LibreOffice代替表格处理软件。
将该表格另存为TAB分割的txt纯文本,编码为utf-8。直接导入到Anki即可,注意指定合适的字段。
有时候由于词条重复(即便导入的词条不属于这个待导入的deck),Anki忽略某些笔记。此时可以勾选”Import even if existing notes has same first field“(中文翻译:即便现有笔记含有相同字段仍然导入)强制导入到Deck。
媒体文件(mp3,jpg)放入collection.media下,不应该有子目录(官方文档是这么说的)
打开Deck即可看到新导入的卡片
可选步骤:定制不同的卡片,定制CSS显示样式(可能绿色背景对眼镜更舒服??)
其它杂碎
- 删除某个deck不会自动删除其对应的媒体文件,需要手动执行“Check Media”检查媒体才能彻底删掉没有被引用的媒体文件。
- Anki同步失败时,需要间隔几分钟才能重试,否则被服务器拒绝。
- 在定制卡片过程中,CSS功能很强大,本文虽然没有介绍,但仍然值得大家学习。Anki可以灵活使用
div/span/table/a
实现不同的显示样式(包括表格、latex、超链接)。具体操作可以参考官方文档的Card Styling章节。它甚至给出了卡片生动效果的YouTube效果视频。
参考资料
Anki官方文档
AnkiDroid官方文档
Anki设置自定义学习步骤:Software Review Redux: Anki
翻譯Anki用戶指南@大學生活紀事 - blogspot
Effective learning: Twenty rules of formulating knowledge
知乎专栏:Anki-近乎完美的神器