写在前面
学习了很久的英文,但是迟迟没有进步,学过了但不知道怎么用,分析原因,可能是没有及时巩固记忆,所以自己希望去找一个能够适合自己使用的APP,但是花费了很多时间都没有找到合适的APP,最后没有办法,只能自己使用脚本开发一个可以自己使用的工具,分析需求主要包含以下三点:
- 容易上手,不用花费很多时间在学习使用教程上
- 支持网页端和mobile端,网页端进行规划和操作,mobile查看具体的计划
- 主要是提供提醒的功能,需要在哪个时间节点复习。自己更喜欢根据上下文复习内容,比如:重点单词和词组,笔记喜欢记在原文上,这样可以更好的关联上下文复习,记忆会更高效
- 符合艾宾浩斯记忆曲线
艾宾浩记忆曲线是指人类在学习新知识后,遗忘的速度如何随时间发展的曲线。
该曲线由德国心理学家艾宾浩提出,他通过多次实验发现,人类在学习新知识后,短时间内遗忘的速度非常快。在24小时内,遗忘率达到了50%。但随着时间的推移,遗忘的速度逐渐减缓,并且到达一定时间后,基本停止了。
艾宾浩记忆曲线的目的是帮助人们了解记忆的过程,以便更好地学习和记忆新知识。根据该曲线,我们可以采取措施来减缓遗忘的速度,例如多次复习和记忆,以及将新知识与已知的概念相关联。复习的时间节点为:
- 第一次学习后,复习时间节点为24小时后。
- 第二次学习后,复习时间节点为1-2天后。
- 第三次学习后,复习时间节点为4-7天后。
- 第四次学习后,复习时间节点为2周后。
- 第五次学习后,复习时间节点为1个月后。
实现逻辑
- 首先确定复习目标
- 确定复习的时间节点 1, 2, 4, 7, 15天
- 编写python代码生成复习计划
- 确定复习计划的展现载体
具体实现
自己目前学习的是超实用英语口语1000句这本书,每天学习是1小节,学习过程中的重点和笔记是记在书上的,复习时根据上下文会对复习的内容有更深刻的理解,且会比较省时。
python脚本主要包含两个:
- 以复习的内容为维度,根据复习内容生成需要复习的时间
- 以复习的时间为维度,根据时间确定每天需要学习哪些内容
分别对应的python脚本如下
- 展示复习目标和复习的时间节点
from datetime import date, timedelta
import openpyxl
from openpyxl.utils import get_column_letter
# 打开目标文件的sheet页
word_target = r'E:\target\english1000_memory.xlsx'
sheet_name = 'arrange'
target_book = openpyxl.load_workbook(word_target)
target_sheet = target_book.get_sheet_by_name(sheet_name)
# 获取文件最大的行数,可以增量叠加
nrows = target_sheet.max_row
# 需要复习的目标,根据自己的需求调整
target = ['英语1000句复习part2']
# 复习间隔,以天数为单位,根据自己的需求调整
times = [1, 2, 4, 7, 15]
# 把复习的时间节点放到一个list里面
time_list = []
for a in times:
review_time = date.today() + timedelta(0) + timedelta(a) # 应复习的时间点
time_list.append(review_time)
# 生成复习计划并保存在excel表格中
for i in range(0, len(target)):
target_sheet[f'A{nrows + i + 1}'].value = target[i]
for j in range(0, len(time_list)):
column = get_column_letter(j + 2)
target_sheet[f'{column}{nrows + i + 1}'].value = time_list[j]
target_book.save(word_target)
- 展示每天的复习计划
import openpyxl
from openpyxl.utils import get_column_letter
word_target = r'E:\target\english1000_memory.xlsx'
sheet_name = 'arrange'
# 打开excel中的arrange sheet,获取复习的内容和时间节点,生成每天的时间复习计划
# 生成时间的set
arrange_book = openpyxl.load_workbook(word_target)
arrange_sheet = arrange_book.get_sheet_by_name(sheet_name)
nrows = arrange_sheet.max_row
ncols = arrange_sheet.max_column
time_list = []
for i in range(2, nrows + 1):
for j in range(2, ncols + 1):
column = get_column_letter(j)
time_list.append(arrange_sheet[f'{column}{i}'].value.strftime("%Y-%m-%d"))
time_list = sorted(set(time_list))
print(time_list)
# 生成复习的dict,key是时间,value是每天的复习内容的list
review_dict = {}
for time in time_list:
review_dict_list = []
for i in range(2, nrows + 1):
for j in range(2, ncols + 1):
column = get_column_letter(j)
if arrange_sheet[f'{column}{i}'].value.strftime("%Y-%m-%d") == time:
review_dict_list.append(arrange_sheet[f'A{i}'].value)
review_dict[time] = list(sorted(set(review_dict_list)))
print(review_dict)
time_sheet_name = 'time'
time_sheet = arrange_book.get_sheet_by_name(time_sheet_name)
p = 2
# 把刚刚的字典保存在excel中,column A是字典的key,其他的column是字典的value
for time in review_dict.keys():
time_sheet[f'A{p}'].value = time
q = 2
for value in review_dict.get(time):
column = get_column_letter(q)
time_sheet[f'{column}{p}'].value = value
q += 1
p += 1
arrange_book.save(word_target)
最后使用稻壳的同步文件夹功能,保存到目标文件夹的内容可以随时同步到手机上,可以随时访问
文件链接:
链接:https://pan.baidu.com/s/1iy6qKs8Hv_Y_0hCtkatCLA?pwd=abw5
提取码:abw5
写在后面
尝试了一段时间,发现及时严格按照记忆曲线也没有取得很显著的效果。后来是充分利用在公司的英文环境,及时反思,并主动与别人交流英文,取得了一定的进步。可能对于英文来说,理解和环境可能更重要,在理解的基础上进行复习,会取得事半功倍的效果。在学习后的一天内及时对知识进行反馈、复习、理解、消化。然后可以借助该方法和Microsoft to do等计划软件的提醒功能提醒自己复习。
备注:从布洛卡区的脑科学理解英文学习
学习英文和大脑额叶布洛卡区之间存在密切的关系。布洛卡区是人类大脑皮层中的一个重要区域,主要负责语言的产生和理解。学习英文需要通过听、说、读、写等各种方式进行交流和理解,这些过程都需要借助大脑额叶布洛卡区来进行加工和存储信息。具体来说,听、说和阅读英文需要使用布洛卡区中的语言产生和理解机制,而写英文则需要借助布洛卡区中的运动意图和运动控制机制。因此,英语学习的质量和效果与大脑额叶布洛卡区的发育和功能状态有着密切的关系。