基于艾宾浩斯遗忘曲线的英语词汇学习微信小程序——一些思路和想法

之前想做一个利用艾宾浩斯遗忘曲线规律来背单词的小程序,但是不太知道这么做,参考查阅了很多文章,这里整理一下思路。

一、艾宾浩斯遗忘曲线

艾宾浩斯遗忘曲线的具体应用是利<复习点>来重复学习单词。

百度百科里面写的<复习点>分为八个周期,如下图:

890098cd70864061a9998b5855540f8d.png

其中,人的记忆周期分为短期记忆长期记忆

故,短期记忆周期:5分钟、30分钟、12小时。

长期记忆周期:1天、2天、4天、7天、15天。

在这里采用长期记忆这个周期来复习单词。

二、每个单词应该有两个重要的字段/属性,分别为<时间戳>、<学习次数>。

单词名称

单词释义

...

时间戳

学习次数

abandon

放弃

...

2023-2-10

0

时间戳:时间戳代表最近一次学习该单词的日期时间。(上次学习该单词的时间)

学习次数:用来表示对该单词的熟练程度。如下表。

0次

1

2

3

4

5

6

未学习

已学习1次

已学习2次

已学习3次

已学习4次

已学习5次

已掌握

三、艾宾浩斯实现的过程(一些思路)

所有单词初始的时间戳为空,学习次数为零。

1.用户选择单词本后,根据单词本的单词生成一个该用户的<单词列表>;

2.用户设置学习计划(例如,每日学习10个新单词,复习20个单词(复习的单词可不设置数量,即复习所有应复习单词))

3.用户每日学习时,应该根据<单词列表>生成<今日单词列表>、<需复习单词列表>。

<今日单词列表>应该随机从<单词列表>中抽取10个新单词(学习次数为0次),再从需复习单词(学习次数为1~5次)中随机抽取20个单词。

需复习单词的判断(重要!体现艾宾浩斯遗忘曲线的地方):

用户学习过单词后,学习次数+1,最高为6。根据时间戳、学习次数、当前日期来判断需复习单词。复习时间点( 1天、2天、4天、7天、15天 )

单词学习次数为1,当前日期 - 时间戳 > 1 天,该单词放入<需复习单词列表>。

单词学习次数为2,当前日期 - 时间戳 > 2 天,该单词放入<需复习单词列表>。

单词学习次数为3,当前日期 - 时间戳 > 4 天,该单词放入<需复习单词列表>。

单词学习次数为4,当前日期 - 时间戳 > 7 天,该单词放入<需复习单词列表>。

单词学习次数为5,当前日期 - 时间戳 > 15 天,该单词放入<需复习单词列表>。

考虑到用户不太可能都按规律学习,所以应该给单词熟练程度降级。(学习次数为1时,代表单词已学过,不再降级。学习次数为6时,代表已掌握,不再降级)

单词学习次数为1,当前日期 - 时间戳 > 1 天,该单词放入<需复习单词列表>。

单词学习次数为2,当前日期 - 时间戳 > 4 天,该单词学习次数 - 1 ,放入<需复习单词列表>。

                                当前日期 - 时间戳 > 2 天,该单词放入<需复习单词列表>。

单词学习次数为3,当前日期 - 时间戳 > 7 天,该单词学习次数 - 1 ,放入<需复习单词列表>。

                                当前日期 - 时间戳 > 4 天,该单词放入<需复习单词列表>。

单词学习次数为4,当前日期 - 时间戳 > 15 天,该单词学习次数 - 1 ,放入<需复习单词列表>。

                                当前日期 - 时间戳 > 7 天,该单词放入<需复习单词列表>。

单词学习次数为5,当前日期 - 时间戳 > 30 天,该单词学习次数 - 1 ,放入<需复习单词列表>。

                                当前日期 - 时间戳 > 15 天,该单词放入<需复习单词列表>。

四、用户学习进度以及单词的存储(一些想法)

用户的学习进度用单词的<时间戳>和<学习次数>来体现。

一开始我打算把用户单词数据保存在MySQL数据库中,但考虑到多个用户的单词数据保存,思路有些混乱,不知道数据库怎么设计比较好,所以采用一种其他的方式。

采用JSON格式或txt文本格式等来保存用户单词数据。个人认为JSON格式是一个比较好的方式。JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

1.这种文本数据可以存储在小程序的缓存文件中;也可以存储在服务器中,然后把该文件的路径添加到MySQL数据库的用户表中。

2.数据库中只保存单词本的单词,用户选择单词本后,就给他生成一个专属的单词数据文本文件。

3.用户每天学习时,先读取这些文本数据,结束后再写入新的文本数据。

其他:单词语音可以调用有道或扇贝的语音API。单词数据可以从这个链接获得GitHub - kajweb/dict: 英语字典 英语词库 字典词库 四级单词 六级单词 考研单词 雅思 托福 SAT GMAT TOEFL GRE

以上,就是我的一些思路和想法,如果有什么错误,欢迎大家指出。如果大家有其他的方式或思路来实现,欢迎大家指教。


版权声明:本文为m0_71181165原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。