页面载入中...
首页 » 2012年04月

如何学得更快?

“Learn fast and forget about forgetting”这一句可算是SuperMemo World的slogan了。在SuperMemo官方新老两代网站中我们可以看到一个有意思的东西,老一代官方网站(以supermemo.com为代表,因为数据量太大,所以仍然保留老版本数据,且目前以SuperMemo 9x、2004、2006、2008 以及最新的SuperMemo 15为主)中主要讲“forget about forgetting”,而在新一代网站中(以supermemo.eu、supermemo,net、supermemo.pl为代表)则在首页的显著位置写着“Learn fast and forget about forgetting”。加上“Learn fast”并不是为了跟随潮流,而是为了告诉大家,SuperMemo这个产品的特性除了“forget about forgetting”,还有“Learn fast”。

怎样才能做到“Learn fast”?我们可以从SuperMemo所依据的几个核心理论看出端倪,这些理论包括:

关于上面提到的这些理论,我们可以把它分作两个部分:

  • 软件相关:主要是复习算法,其理论支撑包括艾氏遗忘曲线和间隔复习等相关理论;
  • 课程相关:主要涉及到课程设计,其理论支撑包括莱特纳的卡片盒系统以及沃兹纳克的“主动回忆”、“最小化信息”理论;

今天我们重点讲一讲与课程设计相关的这些理论。

莱特纳1972年出版的《So lernt man lernen》(中文版是2007年出的,叫《学习这回事》)很有意思,书中介绍的“卡片式学习系统”,从骨架上看,应该就是SuperMemo的软件原型了。而书中提出的“将学习内容分解为最小的单元”,则可算是“最小化信息”理论的雏形。

现在在SuperMemo的课程制作中,最明显的误区是一个页面内(对于单词学习是一个词条)信息量过大,以一个单词为例,从制作者到学习者都试图把与这个词有关的所有内容塞到一个页面里,整得跟本辞典似的……用这种“辞典式”的课程来背单词,看上去这样效率挺高,所有与这词有关的内容都可以在个页面内“一站式”完成,其实不然!这样做的弊端是相当明显的:

  • 信息量过大不好评分;
  • 信息量过大,记忆时间大大增加,对注意力要求更高;
  • 信息量过大,不容易记忆,记忆周期大大延长;
  • 由于周期延长,无法产生大量的小成就感,不利于坚持;
  • 由于周期延长,对耐心将是巨大的考验,会比较容易放弃;

大家不妨想一下,我们从小到大母语是怎么学会的,难不成老妈把你叫过来说,孩子,今天我们来学习“爱”这个词,它一共有18种意思,31个常见的搭配……然后你妈再甩给你一堆关于爱的例句,让你把这些东西通通背下来……不要觉得这很可笑,这正是好多童鞋现在准备采用甚至已经在用的学习方法。

汉字据说有5万多个,1995年发布的GBK1.0版字库中有21886个汉字。请问这2万多个汉字大家掌握了多少?等等,先别说掌握,会读的有多少?知道意思的有多少?依稀见过的又有多少?等你思考完这个问题,回过头来再想想,汉语辞典你背过没有?舍得想绝大多数人没背过吧?既然母语辞典都不背,为什么要花这么多时间,用背辞典的方式来背单词呢?
因此,对于单词的学习来说,释义和例句并不是越多越好。如果我们根据“最小化信息量”的原则来组织学习素材,
就像SuperMemo官方的Extreme English课程那样,一个单词往往对应的只是一条释义和一个例句,这样的信息量相对比较合适。由于信息量小,好掌握,而且节奏快,容易形成一连串的小成就感,从长远看,这种方式才是效率更高的,才能让你学得更快、更好。

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

为毛背了单词在阅读时还用不上?

有一回学苑中有一童鞋问舍得,为毛背了单词在阅读时还用不上?言下之意是,背单词有嘛用?

这一问题提得真好。

舍得的回答是:用得上才怪。

用和练是相对的。你“怎么练”,必然会影响到“怎么用”。

看看现在大家背单词的方式,最常见的是以下两种:

  • 看单词->回忆释义
  • 看释义->回忆单词

然后是它的几个变种:

  • 根据单词,从一堆释义(三或四个比较常见)中找出正确的释义;
  • 根据释义,从一堆单词中找出正确的单词;
  • 加上音频,顺带练练听力;
  • 加上图片,可以强化单词和释义间的联系,或让单词直接与“概念”(画面)挂钩;
  • 加上例句……这个呆会讨论;

先把例句撇在一边,我们从“编码->解码”的角度来分析上面这种练习,可以很清晰地看到:

  • “看单词回忆释义”:将文字码解析成概念,注意,中文只是概念的提示,重点是文字背后所代表的概念;
  • “看释义回忆单词”:将概念编成文字码;
  • 加入音频:将音频流解析成概念,或将概念编成音频码,主要用于练习听和说;

接下来我们再看阅读的过程,我们假设当前文章的所有单词你都熟悉,也就是说,在单词的解码上你没有障碍——当然这是一个理想化的状态。这个时候,问题就来了,当人家把熟悉的单词放在一起组成一个句子的时候,你不一定能了解这个句子的意思!换句话说,你对这个句子的解码碰到了障碍。

这就是那位童鞋觉得诧异的地方,明明单词我都认识,为啥阅读还是不顺畅?

原因很简单,因为你只练习了单词的解码。英语就是这么个东西,除了单词本身有大量的一字多义之外,不同的单词搭在一起的时候还会产生类似“化学反应”的现象。或者说,在不同的句子的结构下,单词会呈现出不同的含义。你怎能指望用那种简单地编码练习来应付句子解码这种相对技术含量更高的操作呢?

这时有童鞋要说了,那我在学习的时候加上例句!

这不失为一个比较折中的解决方案。

但要注意的是,在这个方案中,主体仍是“单词+释义”,例句仅仅是点缀,这正是目前大多数背单词软件所采用的方式。要搞句子解码这种技术活,训练强度还是低了些。换句话说,这个方案还是治标不治本的。

在背单词的课程中加入例句,充其量是为后期进入句子解码热热身而已,真正的句子解码训练应该这样来做:

  • 大量的阅读,根据自己的基础选择相对应的材料来读。初学者建议从简易读物开始,比如书虫系列或early reader之类的材料;
  • 用针对性的句库式课程来进行训练,例如舍得制作的《英语会话辞典》、《六人行》等课程,这个相当于精读;优点是音频和句子一一对应,在训练了句子的文字流编、解码的同时,还能训练音频流的编、解码;
  • 做一些基础的语法训练,推荐使用《剑桥中级语法》课程,或做Tell Me More中的语法练习;

单词当然还要背,但要尽可能缩短花在这上面的时间,并尽早过渡到句子解码训练。另外,在背单词课程的设计上,应遵循“最少信息量”的原则,尽量不要搞成那种“用一个词条搞定所有释义”的方式,乍一看效率挺高,其实对于记忆来说,有害无益。

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

从核心开始

当你开始任何新事物时,方向很多。有你可以做的,你想做的,还有你必须做的。你要从你不得不去做的事开始。从核心开始。  
例如,你开一家热狗摊,你要担心调味品,手推车,名字,装饰。但第一要务是热狗。热狗是核心。其他的都是次要的。  
找到核心的方法是问你自己:“如果我这样做,我正在销售的东西还存在吗?”热狗摊没了热狗就不叫做热狗摊。你可以拿走洋葱,调味品,芥末等等。有人会不喜欢你的简易热狗,但是你仍然拥有热狗摊。但是你就是不能让热狗摊没有热狗本身。  
那么找出你的核心。哪一部分是不能被移除的?如果你离开了这件事或者那件事还能继续的话,这些事情都不是核心。一旦你找到了,你就知道了。集中精力把它做到最好。其他所有事情都是基于此。

对于转换精灵来说,不能被移除的是SuperMemo课程的制作……这就是转换精灵的核心,其它的功能都得围绕这个核心来设计;

对于舍得学苑来说,看上去核心是SuperMemo,其实不然。舍得学苑的核心是倡导一种学习态度和学习方式,一种用计算机辅助学习的方式。如果把学习比作生产的话,SuperMemo、Tell Me More、Aboboo、Rosetta就是其中最先进的生产工具。当越来越多的人使用这些先进的生产工具来不断提升自己的时候,那些使用相对比较原始工具的人会逐渐觉察到这种差距。

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

以旧带新学词汇

有一个叫Anita Sokmen的作者提到了一个例子,展示了教师如何引导学习者在猜测词义的同时将新知识融入旧知识中:

有一个课程我已经教了几年。在这个课程中经常出现innate这个词,学生既不知道这个词的意思,也不知道它的词根“nat”。但是,有一次我们复习前缀“in-”的意思,我引导学生说出其他含有“nat”这个词根的词(native,natural,nation,nationality,prenatal),班里有些学生根据他们对脑中存储的词汇的理解,推断出innate的意思是birth。在这个过程中,词汇的分析需要学生对比新词汇和他们已知的词汇,来获取它们的核心词义。由于这个过程需要学生对已知词汇和新词汇的加工,并用新词汇激活已知词汇,因此提高了长时记忆的可能性。

有两种方式可以去尝试这种“以旧带新”的学习方法:

1.掌握单词变化的规律,用词根去拓展词汇,就像上面这个例子中所采用的方式;

2.利用形近、音近的熟悉词汇去掌握新词汇,这是记忆高手们常用的技巧。在熟词和生词之间,创建一个奇特、有趣的联想,用熟词作为跳板,来加深新词的记忆;

在记忆一个生词的时候,如果你采用SuperMemo的方式,那么先去尝试回忆这个词——这与你被动地看“单词+释义”相比,记忆要深刻地多。接下来检查答案,评分。然后就是一个关键的环节了,相当一部分童鞋在碰到生词的时候在评了分之后就急匆匆进入下一个词了,千万别这么做。

这个环节如果“轻松跳过”,那你就错过了一个强化记忆的机会。

舍得建议的做法是:

1.看看这个词的形状,有没有与它接近的熟词?用差一到两个字母的词去记忆它,是最轻松的方法;

2.里面有自己熟悉的词根么?

3.读起来像什么词?不一定是读音完全接近的,也可以是几个词连起来的读音;

4.在单词和释义之间,能否想像出一个画面呢?

5.这个词所代表的概念,尝起来有味道吗?摸上去是什么感觉?能引发什么样的情绪?根据不同的词,尽可能调动更多的感官来参与,找找看哪一块会令你印象更深。

你对一个生词所做的工作越多,对这个词的理解程度就越深。在以后复习的时候会越来越轻松。

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

[编程心得]用Python给汉字加上带音调的拼音

作为一个南方人,拼音没学好那似乎已是一件非常正常的事。什么卷舌音、鼻音,也只有在近几年才算是分清了一部分。但尴尬的事情仍在继续,发短信的时候,总有些字拼得不准;说话的时候,总有些字没有卷舌、或忘了加鼻音……痛定思痛,于是有了一个用SuperMemo来强化拼音的训练方案。

要实现这个方案,得具备两个条件,一是选定汉字范围——舍得选的是一级国标汉字,共计3700余个;二是利用程序将这些汉字转化为拼音,要求拼音带上音调,这个就需要对转换精灵进行适度的改造。

舍得以HzqGhost(小强)童鞋的代码为蓝本,进行了如下的改造:

  1. 编码部分采用这份码表:下载地址
  2. 源代码为python2.x的,改造为python 3.x;
  3. 在给韵母添加声调的部分代码,原代码有个别地方出现错误,在我家傻妹的提醒下,舍得修复了这一错误;

下面是相关的部分代码,分段描述:

1、读入码表文件,转成dict:

        fileName = './Mandarin.dat'
        self.dict = {}
        for line in open(fileName):
            k, v = line.split('\t')
            self.dict[k] = v

2、然后对传入的中文字符串进行处理:

        self.yunmu = ( 'ang','eng','ing','ong','an','en','in','un','ai','ei','ao','ou','iu','er','en','a','o','e','i','u', 'v')
        self.sheng = {'a':'ā á ǎ à','o':'ō ó ǒ ò','e':'ē é ě è','i':'ī í ǐ ì','u':'ū ú ǔ ù', 'v':'ǖ ǘ ǚ ǜ'}
        result = []
        for char in chars:#chars为传入的中文字符串
            key = "%X" % ord(char)#将汉字转为utf16编码,“码表”文件中用的是这个编码
            try:
                py = self.dict[key].split(" ")[0].strip().lower()#只取查到的拼音第一个值(当有多音字的时候),同时将结果转为小写
                for ym in self.yunmu:
                    if re.search(ym, py):#匹配
                        py = getPy(py, ym)
                        break#只取第一个结果
                result.append(py)
            except:
                result.append(char)
        return " ".join(result)


原来的self.yunmu设置不合理,在碰到’ui’,’iu’,’ie’,’ue’四个韵母时,音调会标在第一个字母上,舍得在元组中去除了’ui’,’ie’,’ue’这三个值,这样在匹配时根据a,o,e,i,u的顺序,这三个韵母的音调才会落在第二个字母上。而对于’iu’这个韵母,则需在下面的getPy里作一个特殊的处理:

3、给匹配到的韵母标上音调:

        def getPy(py, ym):
            t = py[-1:].encode('ascii','ignore')#‘码表’中返回的拼音字符串最后一位是数字,表示音调值
            t2 = "%d" % ord(t)
            t3 = (int(t2) - 48)%4 -1
            py2 = py[:-len(ym)-1]#声母
            if ym == "iu":#如果韵母是iu
                letter = self.sheng[ym[1]].split(' ')[t3]#音调字母要标在u上
                ym = ym[0] + letter
            else:                
                letter = self.sheng[ym[0]].split(' ')[t3]#其它情况,音调标在第一个字母上
                ym = letter + ym[1:]
            py = py2 + ym
            return py


最终完整的代码如下:

    def cnCode(self, chars):
        def getPy(py, ym):
            t = py[-1:].encode('ascii','ignore')#‘码表’中返回的拼音字符串最后一位是数字,表示音调值
            t2 = "%d" % ord(t)
            t3 = (int(t2) - 48)%4 -1
            py2 = py[:-len(ym)-1]#声母
            if ym == "iu":#如果韵母是iu
                letter = self.sheng[ym[1]].split(' ')[t3]#音调字母要标在u上
                ym = ym[0] + letter
            else:                
                letter = self.sheng[ym[0]].split(' ')[t3]#其它情况,音调标在第一个字母上
                ym = letter + ym[1:]
            py = py2 + ym
            return py
            
        fileName = './Mandarin.dat'
        self.dict = {}
        for line in open(fileName):
            k, v = line.split('\t')
            self.dict[k] = v

        self.yunmu = ( 'ang','eng','ing','ong','an','en','in','un','ai','ei','ao','ou','iu','er','en','a','o','e','i','u', 'v')
        self.sheng = {'a':'ā á ǎ à','o':'ō ó ǒ ò','e':'ē é ě è','i':'ī í ǐ ì','u':'ū ú ǔ ù', 'v':'ǖ ǘ ǚ ǜ'}
        result = []
        for char in chars:#chars为传入的中文字符串
            key = "%X" % ord(char)#将汉字转为utf16编码,“码表”文件中用的是这个编码
            try:
                py = self.dict[key].split(" ")[0].strip().lower()#只取查到的拼音第一个值(当有多音字的时候),同时将结果转为小写
                for ym in self.yunmu:
                    if re.search(ym, py):#匹配
                        py = getPy(py, ym)
                        break#只取第一个结果
                result.append(py)
            except:
                result.append(char)
        return " ".join(result)

调用的时候,只要这样就可以了:

        chars = "舍得英语魔法学苑"
        print(self.cnCode(chars))

返回的结果如下图所示:

拼音

不过舍得通常会读取当前文本,然后按换行符分割,再逐个传入,得到拼音,最后拼成TAB文本,这样就可以利用转换精灵制作成课程了。这里边的细节就不再一一叙述了。

附上最终完成的课程:

国标汉字拼音课程

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!

作者:
舍得

首发:
舍得@学习力博客

如何在现有SuperMemo UX课程中快速新增学习材料?

这个问题已经有好几个童鞋提出来过了,今天在这里作一次统一的回复。

先界定一下问题的范围,这里所说的“快速新增”,指的是针对一定批量的学习材料,如果零打碎敲地往里输入,建议直接使用SuperMemo UX自带的编辑器进行添加(按F9进入编辑模式,添加材料跟在论坛发贴差不多)。“现有”二字,则是指此课程已在UX中使用。此外本文也不讨论用导入的方式添加学习材料,但需要说明的是,直接往现有课程中导入学习材料(通常是Q&A文本),仍不失为一个高效的手段,只是由于UX在导入方面有些限制,简单的问答形式材料可以用这个方式,如果涉及到各种题型,则建议采用下面所说的方法。

接下来我们来谈谈方法,有两个基本的解决思路,一是用插件,优点是不用重启程序,相对自由度大一些;二是直接利用SuperMemo UX的修复功能,此时需要利用转换精灵先对课程进行“增补”。对于大多数童鞋来说,建议采用后一种方法,至于插件的使用,舍得计划另行撰文介绍。

这里有个前提,就是你得会用转换精灵制作课程,好在有这种想法的童鞋通常具备一定的动手能力……动手能力不强的童鞋,还是使用UX自带的编辑器逐条输入好了,或者花一点点时间学习一下转换精灵的使用。下面罗列一下用转换精灵增补课程的要点:

  1. 源文本:建议采用TAB文本;不明白什么叫TAB文本的,请参阅转换精灵帮助文档中的相关章节;
  2. 课程路径:请选择你要修改的课程存放位置;
  3. 备份:建议对要修改的课程进行备份,以备不时之需,备份操作简单,直接打个压缩包即可;
  4. 模式:在转换精灵中选择“增补模式”;

具体的课程制作方式,请参阅转换精灵的帮助文档。

当你用转换精灵把内容增加完毕后,然后在SuperMemo UX中做如下操作:

1.打开菜单“课程->修复->检查并修复”:

菜单

2.出现选择课程的窗口,从中选择你要修复的课程,然后点击“选择”按钮,程序即会对此课程进行修复:

选择课程

这样修复的好处是,原有的学习进度可以得到完整的保留。

3.重启UX,再打开课程,就会看到新增的内容;

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

背单词技巧一则:字形词义形象代码法

之前舍得在博客中介绍过一些单词记忆的技巧,陆续有童鞋向舍得咨询具体的操作方法。舍得整理了一下资料,找出一种叫做“字形词义形象代码法”的技巧来分享给大家。

这种”字形词义形象代码法“只不过是诸多记忆技巧的一种而已,它的存在是为了帮助你建立一个”记忆钩子“,用它勾起”字形“和”词义“。看上去记忆钩子这东西加重了你的记忆负担,但实际上并不是这样,只要钩子做得好,在应用钩子的情况下,你背这个单词的时候会比没用钩子时更轻松,记忆更加深刻。

我们以记忆 moustache(嘴唇上面的)胡子这个单词为例。

第一步,先将此单词拆分为mo、us、t、ache四个部分,然后分别对四个部分进行形象化处理,替换为如下四个记忆概念:

mo:磨
us:使用
t:特
ache:痛

第二步,将此四个记忆概念进行“ 联想”,即:

(刀)mo 磨(不快)us 使用(时)t  特 ache 痛 ->(钝刀刮)胡子。

亦即只需记住: 磨 + 使用 + 特 + 痛 -> 胡子,就能准确地拼写出这个单词。因此,这个法还具有“ 拼得准“ 的特点。
至於ache(痛)这个的记忆,可以这样来进行编码处理:

a:一辆
che:车

联想:一辆车 (撞了我)->(挨一下磕,好) 痛“ .即记住”一辆 + 车 -> 痛“ 就可。

通过上例不难看出 moustache(胡子)一词按传统方法需记九个字母、现在只需记四个记忆概念,不仅记忆量明显减少了。而且,实现快速记忆的主要原因是在於把原先的机械记忆通过形象联想转化成了逻辑记忆,因而摆脱了死记硬背。ache(痛)一词明显要比 moustache 胡子好记,因为前者只有二个记忆概念。 而后者则有四个。

编码的数量并不是越多越好或越少越好,关键在于你在回忆的时候能不能将所记忆的内容还原。像这面moustache这个词,我们换种编码和联想的方法也未尝不可:

mous:  嘴

tache: 粘贴

联想:象粘在嘴上的东西->胡子。

在上面这个实例中,有三个关键的环节:

1.单词拆分

2.编码

3.联想

拆分不是必须的,如果你正好想起某个熟词与当前的词很像,那么可以直接跳过拆分和编码,直接把生词和熟词关联起来就可以。

编码是一个非常重要的环节,事实上这些编码应该是你用起来最熟悉的,这样你就不用花太多的时间在编码的学习上,这也是舍得经常向朋友建议尽可能自己去“设计”编码的原因。

联想的质量如何是整个技巧的关键部分。正如《修辞学》的作者向大家建议的那样,联想的时候,尽可能有趣一些、粗俗一些、奇特一些。这样记忆的烙印才会更加深刻。

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

iTunes U:数字1到19的发音视频

上回舍得说到,历经“千辛万苦”给小i升级到了iOS5,就是为了《新闻周刊》中推荐的“iTunes U”。

现在iTunes U顺利装上了,舍得迫不及待地打开它,进入传说中的“常青藤联盟”课程库。

iTunes U果然没有让舍得失望,这里面的课程做得非常棒,就拿ESL的这个课程来说,仅仅里面的一段小视频,就让舍得觉得,前面的种种折腾,总算没有白费工夫。

数字1到19发音视频

从这段小小的视频中,我们可以清晰地观察到那些音素的发音细节。其中的亮点是“three,the”这两个音,对"θ"和"ð"发音感觉困扰的童鞋,舍得建议仔细观察一下视频中的口形,认真去体会”咬舌头“这个要点。

对于河北的部分童鞋,可能对”v”这个音要着重关注一下。这并不是舍得对“河北”这个区域有什么特殊的看法,实在是因为舍得接触的好多河北朋友中,“v”的音发得一塌糊涂,他们总会不自觉地把“w”这个音带进去(发成“wi:”,跟读we这个词一样)。可能是当年有一批老师就是这么学来、这么教下去的。浙江的童鞋中也有小部分类似的现象,但没有河北表现的这么突出。

对于发音这项训练,舍得建议大家平时坚持用TMM(Tell Me More)进行训练,每天不用多,练个20-30分钟,天天坚持下来,半年到一年就会有显著的成效。像舍得这里介绍的这个视频,大家平时应该多看几遍,相信可以从中领会到一些发音的诀窍。

对于大多数英语学习者来说,没有必要把发音练到跟播音员一样的标准,因为英语这项技能,主要是用来交流的,我们的母语况且没有说到跟播音员那样的水平,为啥非得把英语说的跟播音员一样呢?有这个时间和精力,完全可以用来学习更重要的内容。但对于从事英语教学工作的人们来说,则另当别论,因为你们发音不标准,肯定会误人子弟。

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

SuperMemo UX 新版辞典研究心得

舍得对SuperMemo UX官方课程中的新版辞典垂涎已久。这货很漂亮,而且非常实用。比起原来那种方式的辞典,拥有更强的互动性。简单地来比较这两个之间的区别就是:老辞典需要专门制作一个辞典文件,而新辞典会自动从课程中提取内容;老辞典的搜索很鸡肋,新辞典则可以给我们更强大的搜索、分类以及关联词汇的功能。

2012-4-13 7-23-12

新辞典中的分类让人感觉很舒服。

2012-4-12 20-28-04

新辞典的搜索速度很快,而且搜索的结果中自动带了音频、例句等信息(尤其是例句,这是老辞典中没有的)。下方还有“主题相关词汇”,对于建立你的“网状结构词库”(朗文的专家们称其为“心理词库”)相当有帮助。

昨天下班后便开始对这个问题进行了研究。研究的方法很原始:先解开官方的课程包,然后逐一分析其中的代码,这是舍得能想到的最笨的方法。

毫无疑问这个过程是相当痛苦的,而且还不小心走了些弯路:我被官方的related这个文件夹给忽悠了……幸好舍得反应还算灵敏,及时调整了方向,否则这次研究又得无疾而终。

过程就不一一叙述了,直接上研究结果:

辞典的秘密主要藏在课程列表文件(course.xml)中,要点如下:

1.<type>vocabulary</type>:这里的值是关键,必须是vocabulary,不能是regular;

2.光有上面这个值还不行,你需要在文件中作如下定义:

1)如果不要分类,则直接作如下定义:

<element id="15033" type="pres" subtype="1000" name="Word 2135" disabled="true" keywords="wipe" partOfSpeech="v" frequency="4963" subsets="6">
  <element id="15034" type="exercise" subtype="1" name="Say the word" keywords="wipe" partOfSpeech="v" frequency="4963" />
</element>

简单说明一下这里的几个重要属性:

a)keywords:关键词,这是用来索引的重要依据;

b)partOfSpeech:词性;

c)frequency:词频;

从上面的结构来看,外面这层空壳(即ID为15033的这一层,这是个章节,没有实际内容)是关键,没有这一层,程序做不了索引,自然无法让你搜索;

2)如果需要分类,则应该在外边再套一层:

<element id="84" type="pres" name="Personal pronouns" disabled="true">
  <element id="163" type="pres" subtype="1000" name="Word 10" disabled="true" keywords="you" partOfSpeech="pron" frequency="8" subsets="2,4">
    <element id="164" type="exercise" subtype="1" name="Say the word" keywords="you" partOfSpeech="pron" frequency="8" subsets="2,4" />
  </element>
</element>

ID为84的name属性的值是“personal pronouns”就是分类名,如果想在这分类上面再搞一个更大的分类,则请再套一层;

3、新辞典的显示效果取决于默认模板,默认模板建议使用官方的99999号模板,在course.xml中应该作如下定义:

<default-template-id>99999</default-template-id>

以上三点,就是实现新辞典功能的要点。如果只想使用搜索,不用分类的话,实现起来相当简单,只要将课程列表改造一下就行,如果你的正则表达式学得足够好的话,应该能够完成这项工作;如果需要分类的话,那可能麻烦一点,不过对于转换精灵来说,相对还算简单,可以考虑在以后的版本中提供制作新辞典的功能。

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

EmEditor的妙用:快速预览html网页

虽然舍得经常用EmEditor来处理一些东西,但用它来预览网页却从来没有尝试过。直到今天,无意在网上看到这篇介绍文章,一试之下,感觉确实不错。

以前舍得预览网页常用的作法是:

1.对于现成的html文件:右键点击html文件,然后选“打开方式”,再从中选择相应的浏览器。现在看来可以省点事情了。

2.没有html文件时:比如说有时候我们想快速预览一段从其他地方复制的html代码,通常是先建立一个html文件,把代码拷贝到里面,然后在浏览器中打开该文件,当需要修改的时候,需要再次返回编辑器(比如说EmEditor),然后不断地在浏览器和编辑之间切换。对于舍得这样有时需要频繁调试页面效果的人来说,这不吝是一种折磨。

事实上,EmEditor附带了一个web预览器,点击“插件->web预览”就可以发现编辑器的底部多了一个简易的ie浏览器,点击“右键->属性”可以弹出属性设置框,在“自定义栏位置”项可以设置预览器的位置,一般我们把它放在编辑器的右侧。比如像下面这个样子:

SNAG-0140

 

现在,我们想测试html代码的时候,可以打开EmEditor,并打开“插件->web预览”,直接在空文档中粘贴您要预览的代码(不必保存文档),然后光标移到预览器,按F5即可马上预览您的html代码的效果。当修改完代码想看效果时,只要在右侧预览窗口中按F5刷新即可,是不是非常方便呢?

那么,我有时候想测试一小段js代码,EmEditor能否加快我的工作呢?答案是肯定的!

首先,大家要知道,EmEditor中的各种文件模板都是可以修改的,转到EmEditor的安装目录,找到“template.htm”文件,在该文件中加上“script”标签保存即可,以后想测试js片段的时候,打开EmEditor,新建一个html文档,就会发现你以前加的script标签在里面,把代码拷贝到script标签中,然后打开web预览即可,是不是一劳永逸呀!

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

学习的方式有很多种,但高效、省心的方式并不多,SuperMemo恰好是其中一种。

按SuperMemo的命名本意去理解,它该是Super Memory(超级记忆,或超常记忆)两个词的缩写,但SuperMemo发展到现在,已经不再局限于“记忆”这一领域,据官方说,它可以用来掌握大量的信息。舍得在实际应用的过程中也发现,将其定位在复习助手,或学习助手更为贴切。

话说很久以前,舍得就想好好练练书法。大概是在95年左右吧,照着于右任先生的千字文练了一段时间,效果还不错,可惜没能坚持下去。

后来的十数年间,陆陆续续动过再练书法的念头,但也仅限于偶尔照着字帖写几个字而已,毕竟舍得的要求不高,就是把字稍稍写好看一点,没想练成“书法家”那个水平。直到前两天,舍得忽然想起,制作一个SuperMemo版的练字课程如何?

这很明显已经超出了“记忆”的范畴,但严格地讲,它跟“记忆“还有千丝万缕的联系。字要写的好,脑子里得有这个字的骨架,然后根据这个骨架用笔把它写出来即可。如果脑子里存有大量优秀骨架的范本,而且”脑指挥手“的工作又能完成的不错的话,写出来的字应当不会太差。而这项往脑子里存范本的工作,恰恰是SuperMemo的专长。

SNAG-0118

《于右任草书千字文》效果图

我们来简单回顾一下SuperMemo的基本流程:

SNAG-0122

我们以一个学习练字的课程为例:

1.测验:当你看到一个汉字时,脑子里先去想这个字该怎么写;

2.评分:查看答案时,会看到这个汉字的写法,然后在纸上写,写完之后,根据”是否能回忆起这个字的写法“和”写得像不像“来进行综合评分;

3.复习:SuperMemo会根据你的评分安排这个字的下次练习时间,这个字的写法已经掌握,而且写得灰常接近原版的,逐渐减少练习的次数,反之,则加大练习次数。

这样的学习方式有着如下的优势:

一、强大的筛选机制

上面所讲的评分,就是实施”筛选“的手段,它可以让你根据所学内容的掌握程度来给内容划分等级。其好处就是,等级高的(掌握或接近掌握)可以少练习几次,等级低的(比如说记不起这个字怎么写,或即使记得,但写起来怎么都不像)则加大练习次数。在练习时间和练习字数恒定的情况下,哪种方式学习效果更理想,一看便知。

这就好比我们漂洗衣服,夏天穿的T恤较薄,通常一两天一换,漂洗次数可以少一些;冬天穿的外套较厚,需要的漂洗次数就得多一些。传统的学习方式走了两个极端,一是用洗冬天外套的方式去漂洗夏天的T恤,费时费力,表现在学习上就是盲目加大复习量,而且还有可能产生副作用;二是用洗夏天T恤的方式去漂洗冬天外套,洗不干净,表现在学习上就是复习安排得太少,往往会碰到复习的时候前面所学的内容已经忘的差不多了,”复习”就像在反复学习新知识,效果差,等于是变相地浪费时间。

二、科学的复习机制

SuperMemo的复习并不是随意安排的,它背后的理论支撑是大名鼎鼎的艾宾浩斯遗忘曲线。跟国内大多数宣称自己应用了艾氏曲线原理的学习工具不同的是,SuperMemo的开发人员在理论研究和理论与实践的结合上投入了大量的时间和精力,经过20余年的时间发展,不断吸取最新的学习理论研究成果,并根据理论和实践反馈改良复习的算法。

这里算法所起的作用时,尽可能地模拟人类的大脑,测算出相对准确的遗忘临界点,在此临界点复习,可以起到事半功倍的效果。

三、巧妙的测验机制

跟那种单一地看书方式不同的是,看书时大脑被动地接受知识,而测验却逼得你不得不去思考答案,在这过程中,大脑对所学内容的印象会更加深刻

如果只是单纯的测验,那么没啥稀奇。但SuperMemo巧就巧在这种测验、筛选与复习机制灵活的结合,从而达到了效率的最大化。在复习算法的统筹安排下,SuperMemo定期就某一知识点对进行测试,并根据你的反馈(评分)随时调整复习的间隔。这样,当所学的内容被“筛子”筛过之后,我们会看到掌握的内容越来越多,未掌握的则会越来越少。这样你就可以省下原本要浪费在已掌握内容的时间,而把更多的精力投入在未掌握的少量内容或新内容之上。一句话,用SuperMemo你可以在同样的时间内学到更多的内容,而且所学的内容大多能得到有效的复习。那些被你认定为已掌握的内容,在面对实际应用的场合(例如考试)时,你能够迅速给出正确的答案。用了SuperMemo你会发现,原来学习可以如此轻松。

四、坚持的成本大大降低

学习最大的问题永远不是学习方法或是学习工具,而是你能否将学习坚持到底。你在学习上能坚持多久,毅力、动机等都是重要因素。在毅力和动机相对稳定的情况下,对某项内容的学习,“坚持成本”的大小则成了决定性因素。

用SuperMemo学习的坚持成本相当低。拿这次舍得制作的《于右任草书千字文》这个课程来说,总共1000来个字,一个字一个字地攻克,看起来任务很重,但在前面几轮学习下来之后,肯定会有相当一部分的字不用再耗费你的精力去记去练,剩下那些未掌握的字随着复习的深入,数量会逐渐缩小。每天该复习什么都不用你操心,SuperMemo会安排好一切。在这样的学习过程中,每一个字从陌生变成掌握都是一份小小的成就感,学习变成了一段不断收获喜悦的旅程。这样的学习方式,能够让许多原本以为自己毅力不足、动机不强烈的人,也能够轻松坚持下来。学苑里的老唐童鞋曾经跟舍得说过他的体会,“这么久坚持下来,一放弃就前功尽弃,而再稍稍坚持一下,成功就触手可及,这个时候,放弃反而是一件更难的事情。”是啊,SuperMemo不仅仅是带给你一种新的学习方式,更能帮助你培养出一种良好的学习习惯。在习惯的作用下,学习都有可能会上瘾的。

附:

《于右任草书千字文》课程下载地址:http://www.emagic.org.cn/down/course/other/2012-04-09/263.html

注意使用此课程需先下载SuperMemo UX:http://www.emagic.org.cn/down/soft/SuperMemo/2012-04-07/1333791567262.html

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

挖掘“记忆宫殿”的秘密

上回舍得简单地介绍了一下《与爱因斯坦月球漫步》这本书,接着阅读下来,发现惊喜多多。

19世纪提出的“里博定律”

下面这段话可说是SuperMemo原理的“粗线条版”:

从一定程度上说,随着记忆的逐渐积累,记忆本身也在发生着变化。每回忆一次,我们都会把这次回忆纺织进其他记忆网络中去。于是,这个网络会变得越来越密实,记忆也就会越来越牢固,最终储存在大脑中永远不会消失。

需要更正一下的是,“最终储存在大脑中永远不会消失”这个说法并不大妥当,从SuperMemo的角度来看,一个信息你要记多久,就得复习多久,只是复习间隔有讲究,可能是一年复习一次,也可能是两年三年复习一次。

记忆术的最基本原则:精细编码。

至于什么是“精细编码”,需要结合着下文阅读才能了解。

我们比较容易记住视觉图像。

相比其它信息而言,视觉图像是比较容易记忆的。因此,“记忆术的秘诀就在于形成一种联觉记忆方式:把大脑不容易记住的信息类型转化为擅长信息类型”。

所以,所谓的“精细编码”就是把将要进入记忆的那些枯燥的信息转化为富有色彩和超级有趣的信息。

能联想起来的细节越多越好。

尽可能是全方位的细节,视觉、味觉、听觉、触觉。通俗点讲,记忆就是在大脑中刻下印痕,这个联想的过程越具体、细节越多,印痕就越深。当然,除了这些,联想还有其它的要点,比如:

《修辞学》一书建议读者……要尽可能地注意细节,尽可能有趣一些、粗俗一些、奇特一些。
在大脑中想像各种图像的时候,图像越粗俗越能帮助记忆。

这本《修辞学》(Rhetorica ad Herennium)一位不知名的作者用拉丁语写成的的著作,成书时间大约是在公元前86年至公元前82年之间,里面记述了我们现在所知道的几乎所有经典记忆训练的细节,同时也是唯一一本对公元前5世纪的希腊诗人西蒙尼戴斯(Simonides of Ceos)发明的记忆方法进行完整准确阐述的书籍,被奉为记忆学上的经典。事实上后世记忆技巧方面的理论或多或少都到了它的影响。

记忆宫殿这种技巧其实也不算什么稀罕事物。现代出版的好多讲述记忆方法的书都有涉及到,只是大家不叫“记忆宫殿”,而通常采用“定桩法”之类的称呼。

在日常生活中很多事物都太琐碎、太普通,没什么奇特之处,记忆起来就很困难。如果我们见到或听到什么特别粗俗的事情,或者一些稀奇古怪、伟大、匪夷所思或令人捧腹的东西,那就很有可能会牢牢地记住它们。

《修辞学》的建议还包括:

想像出一些“特别漂亮或者特别丑陋”的图像,然后让它们动起来,或者把它们装饰一下,让它们看起来更醒目一些。

与没有生命的图像相比,人们更容易记住有生命的图像。

正所谓“磨刀不误砍柴工”,要想像出这些奇怪的场景,需要花费更多的精力。但这一切的投入都会有丰厚的回报。因为在消耗这些精力的过程中,大脑中的神经元就会形成更多稳固的联系。换句话说,“印痕”会变得更深,所记忆的内容也更容易在大脑中再现。

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

浅谈SuperMemo中国风模板的制作

SuperMemo UX EE系列中的模板确实漂亮了许多,但一直看的话,也会腻掉的。正好舍得近日计划制作一个特殊的课程,顺手从网上搞了几张中国山水风景的图片,制作出几个模板来。

00119_512
关于这个模板,舍得这里要说明一下的是,舍得现在制作的课程,一率采用SuperMemo的新模板语法。转换精灵的课程制作同样采用的是这套新语法,这个“新语法”新在哪里呢?简单地讲,就是将模板的定义和背景图分开。这样做的好处就是,一套模板可以对应N个背景图,调用起来更为方便。

不要把模板制作想像得多复杂,其实简单地要命。稍稍有点PS基础的童鞋都可以动手尝试一下。下面舍得就简单讲讲其中的要点:

1.选图:推荐到下面这个网站下载图片,舍得选择的是水墨风景系列:http://www.kpzhe.com/photo-classid1-13-page-109.html。选图时注意,尽可能选画面稍微清爽一些的背景,浓墨重彩不是我们的风格;

2.选“基图”:改模板最好借助原有的模板,从舍得的SuperMemo转换精灵中附带的模板包中挑选一组模板背景,这一组里通常有三个规格的图片,分别为512*384、720*540、1024*768;我们就选最大的一个来用PhotoShop打开;

3.处理图片

1)这个模板包里的图片其实挺有规律的:外面是一层深色的边框,然后中间分为两部分,上部是一条50px高的纯色色带(以1024分辨率为例),下部则是一幅背景图。我们只要改掉这个背景图就可以了。

2)选择背景图(很多种方式,大家选用自己认为最合适的就行),然后把它清除掉;

3)在背景层上方新建一个图层

4)用PhotoShop打开下载下来的图片(分辨率尽可能高一些),然后全选,复制,粘贴到之前打开的模板背景图中;(这个操作同样有很多种方式,比如说“复制图层”,舍得这里只讲最简单的方法。)

5)按Ctrl+T,调整粘贴过来的图片,并将其放到合适的位置(就是50px高度纯色色带的下方);

6)调整这个图层的透明度;

7)画面左侧尽可能不要有颜色太深的内容,可以选中后单独调整色阶……或者,你用你自己认为最好的处理方式来处理;

8)将图片另存为PNG格式文件;

9)分别调整图像大小至512*384、720*540这两种分辨率,然后另存为PNG格式文件,文件的命名请参照模板包;

4.处理images.xml文件:

1)舍得提供的模板包中有一个images.xml文件,这个是模板背景图的文件清单,如果你要在这清单里加新图片,比如要增加的图片编号是118,则可以按如下方式改动:

在文件末尾倒数第二行后插入如下代码:

<file id="118" group="2">
<name>这里的名字可以自己设置</name>
<resolution width="512">00118_0512.png</resolution>
<resolution width="720">00118_0720.png</resolution>
<resolution width="1024">00118_1024.png</resolution>
</file>

注意,前面改好的图片文件名需要和这里的保持一致。

2)在要调用这个背景图的课程中,需要建一个images文件夹,然后将改完的images.xml和处理好的三个背景图放进去;

5.调用语句:

这个通常是由转换精灵自动完成的,不过,对于有手工修改文件癖好的童鞋,可以参照下面的做法:

在Item文件的倒数第二行后插入如下代码即可:

<gfx-1 id="118" group-id="1" />

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

[编程心得]PyQt中“明天”的表示法

话说学苑有童鞋抱怨,说一直在看舍得的博客,希望舍得能多介绍一些SuperMemo和Tell Me More方面的使用技巧。这个要求估计比较难满足。倒不是因为SuperMemo和Tell Me More方面已经没什么好写——这绝对不是事实,只要将SuperMemo官网上的文章翻译翻译,再适度延伸一下,一篇文章就出来了,但舍得不想为了交任务而写东西。博客嘛!写下自己最想写的内容才是最佳的选择。这不,现在写上了编程方面的内容。

Qt用的人不少,不过PyQt的就略微少一些。但没关系,舍得用惯了就好。在这里所写的一些东西,都是舍得在实际编程的过程中用到的。之前舍得在学苑里有讲到,舍得向来是走实战流,更准确地讲是“改装流”。因为舍得从来不去探究代码背后的种种原理,往往满足于“我知道这段代码干什么用的”、“这里放这样的代码应该能解决问题”。由于非科班出身,代码难免写得难看点,执行效率多少会低一些,好在舍得的满足点比较低,只要“能用”就行了,这一点倒与不求上进的腾讯有些相似。

下面介绍的是在PyQt中“明天”的表示法,这是最近写的一个HR程序中用到的,先来看看今天怎么表示,比如说我们有一个DateEdit控件,叫做beginDayDateEdit,要给它赋上“今天”这个值就可以这样写:

beginDayDateEdit.setDate(QtCore.QDate.currentDate())

那明天呢?咋办办?

舍得看了看PyQt官方的说明文档,从中找到了一个方法,就是将currentDate先用toJulianDay转成数值形式,然后加1,再用fromJulianDay转回来就可以了,具体的代码如下:

tomorrow = QtCore.QDate.currentDate().toJulianDay() + 1
beginDayDateEdit.setDate(QtCore.QDate.fromJulianDay(tomorrow))

后天、大后天就可以依此类推,不再赘述。

不过在处理DateTimeEdit的控件会有所差异,此时用的不是toJulianDay和fromJulianDay,而是toTime_t和fromTime_t,我们来看看:

tomorrow = QtCore.QDateTime.currentDateTime().toTime_t() + 86400
self.beginDayDateEdit.setDateTime(QtCore.QDateTime.fromTime_t(tomorrow))

注意,由于控件改变了,setDate也变成了setDateTime,toTime_t把当前时间转成了从1970年1月1日00:00:00到现在的总秒数,要加1天的话,加上86400秒就行了。

 

 

本文版权归舍得英语魔法学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:
舍得@学习力博客

关于“记忆宫殿”的三句话

17号起出差至成都,27号回来后,一直很忙,今天才重新开始写起博客。

“记忆宫殿”是一种古老的记忆术。西塞罗曾经利用它记忆他的演讲内容。上次舍得在翻译新闻周刊文章时。看到作者Sharon Begley推荐的这本叫《与爱因斯坦月球漫步》(Moonwalking with Einsten)的书,里面就介绍了这种方法。舍得于是顺手在亚马逊上买了一本,这两天抽空读了读,已经读了1/3,随手摘录能触动舍得的三句话,跟大家一起分享:

“很多事情都会从记忆中溜走,除非这件事情被重复记忆很多遍”

要想使学习到的知识真正成为自己的东西,复习是必由之路。舍得想给这句话加上一个小小的注解:重复很重要,但对于现在这个信息量极速膨胀的时代,如何用科学的重复去掌握知识更为重要。

“他发现,把那些没有任何意义的信息过滤成有意义的信息后,他对这些信息的记忆就会很牢固。”

一开始看到这句话时,“把……过滤成”总有点别扭,以为是译者搞错了,找来原文一看“run them through a filter that applied meaning to them”,感觉大意确是如此。

这里介绍到了一种很重要的记忆技巧,就是把那些乍看之下没有意义的信息改造成有意义的内容,这样,记忆所需的成本(主要是时间,其次是脑力)便会大大降低。举个最最简单的例子,比如背圆周率,如果用谐音的方法,明显会轻松许多:

山巅一寺一壶酒(3.14159),尔乐苦煞吾(26535),把酒吃(897),酒杀尔(932)

近来在学苑内偶有看到抱怨单词不好背,生词反复出现,却总回忆不起它们的意思。拜托,你若是跟小和尚念经一样,有口无心,就算有SuperMemo这样的神器相助,又能怎样呢?反复出现的生词,在它出现第2-3次就应该警觉,该用点记忆技巧了!啥技巧?请接着往下看:

“我们记不住孤立的事实,只能记住有联系的事实。”

这个,便可算是记忆的秘诀了。记不住单词?把它跟熟词关联起来,串接出一个奇特有趣甚至怪诞的画面,这样,原来孤零零存在的单词不再孤单了,因为它跟熟词有了联系,在你回忆它的时候,这个画面会帮到你。而且,每忆起这个画面,记忆的烙印便会加深一层,用这种记忆技巧去配合SuperMemo,学习效果自会大幅度提升。

最后再说两句题外话,抱怨SuperMemo“初期记忆效果不好”的童鞋,请扪心自问,你给一个生词多少时间?你有用心去思考“如何去记住这个生词”么?你有去设计针对这个生词的记忆方法么?如果没有,现在还来得及。每个生词学习时平均花费时间不到5秒的童鞋,请自觉面壁10分钟眨眼