Codejie's C++ Space

Using C++

LingosHook:Lingoes生词本第五版


    第五版新增一个功能--'Memory Daily',此功能用于背单词,毕竟作为生词本的最终目的还是要‘记’生词,所以增加这样的一个功能还是需要的。此想法来自今天刚请俺吃饭的‘前’老板,嘿嘿~
    LingosHook在这里下载,此版本还修改了如下地方:
        1. 提高HTML解析容错能力,包括支持“破碎”HTML数据,和对<PARAM>标签的支持,具体参见这里
        2. 修改HotKey抓取‘重复’错误,这个问题会发生在使用Hotkey功能抓取数据的情况下,由于消息处理重复,导致数据被抓取两次;
        3. 增加了‘数据同步’的选项,这个后面说明。
    这次就做了上面这些改动,主要时间都消耗在‘Memory Daily’功能上了,下面说明一下这个功能是怎么回事。

    ‘Memory Daily’记单词的方式和常使用的背单词发式不太相同,不是列出‘生词’,然后选择其‘意义’的方式,而是采用对生词‘熟悉度’的检查来自我判断是否‘记住’了的方法。‘熟悉度’的概念是从‘不熟悉’到‘熟悉’的一个渐进过程,因此这里建议每天都自我检查一下,使用一下这个功能,这也是此功能叫做‘Memory Daily’的缘由。如果你是位WOWer,就当‘日常任务’一起做了吧。。。嘿嘿~
    采用此方式的一个原因是由于LingosHook的数据是“随意”抓取的,而不是主动输入的。简单地说,我们经常会对某个单词无意识使用Lingoes‘Mouse Over’一下,来确认自己的记忆是否正确,而实际上对某些单词可能会100%认识,比如字母A,或者我们只是想看看,并没有打算当时就记住其意义,比如Armageddon(我完全想不起什么时间见过并查过这个词。。。)。但此时LingosHook是不关心目的的,都会抓取此单词数据。因此使用“熟悉度”方式来“刷新记忆”可能会是一个好的选择。


    
    如上图所示,当生词被显示时,LingosHook“询问”对生词的“熟悉度”感觉,从上到下的意思分别是‘熟悉’,‘知道’,‘迷糊’和‘完全不知道’,也就是对生词的‘熟悉度’分为四级,即从‘熟悉’到‘不熟悉’。当选定了级别后,右侧就会显示出结果信息,用于参考。如下图所示:



    每次做了选择时,LingosHook都会做相应的记录,以建立对单个生词的‘熟悉度’信息,供分析使用。目前生词的出现顺序不是单纯的‘随机’方式,而是与‘熟悉度’数据相关的。后面可能会改动,因此什么机制,先猜猜了,反正随着生词的数量增加,其原理会越来越明了。试试先,有啥问题,再改~

    下面是'Memory Daily'功能的使用说明,如上图所示,
        ‘Remove’按钮:用于删除当前生词(比如认为完全记住了,不是生词了,或者认为完全记不住,放着没用时,都可以删除。。。),并显示下一个;
        ‘Next’按钮:用于显示下一个生词;
        ‘Re-Generate’按钮:用于重新生成生词记忆列表;(多点几次这个钮,就会发现生词列表顺序了。。。)

    关于'Memory Daily'的说明就这些,下面是对'Data Synchronization'配置项的说明。



    随着LingosHook内部使用数据的对象越来越多,数据同步冲突问题越来越明显,主要表现在‘性能’方面。比如当在使用‘Memory Daily’功能时,删除一个单词,此时就需要单词‘Index’列表中和‘Classifications’分类中同时删除此单词信息;反之在‘Index’删除一个单词或者新增单词的过程也是类似,关联的事件越多,所需要‘同步’做的操作就越多,自然LingosHook性能就会有影响。目前看当数据变化时,'Memory Daily'的性能最差,因为其定位单词的位置的操作消耗较大。
    因此依据上面的原因,增加此配置项,用于设置当数据变化时,主要是单词新增和删除的操作,是否对其它对象做相应的操作。当前缺省为开启,因为我实际使用中,150左右的单词情况下,并没有出现很严重的‘性能’问题。为了更好体验LingosHook的功能,所以默认开启的。提供这这个配置只是为从代码中看到的风险预留处理方案而已。

    就这些,敬请使用

posted on 2010-04-01 23:23 codejie 阅读(3522) 评论(13)  编辑 收藏 引用 所属分类: 随笔而已轮子精神LingosHook

评论

# re: LingosHook:Lingoes生词本第五版 2010-04-05 09:14 2

lingoes的作者真太无聊了,不知他安的是什么心,hook又失效了,在2.7版本上用不了,lingoes可是强行升级的。  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版[未登录] 2010-04-05 15:56 codejie

@2
。。表冤枉Lingoes啊,这个HOOK跟Lingoes的作者么点点关系的。。。
HOOK失效多数是因为抓取词典结果错误导致的,目前仅支持一个VICON词典,所以如果没有这个词典,就不会抓取到结果。2.7版本没问题的,我自己也用2.7的。
LingosHook还处于开发阶段,请多担待先~  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2010-08-23 12:29 opiater

这个功能非常好,正在试用,此功能很像 SuperMemo UX

感谢您开发这个程序!!  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2010-08-23 13:23 codejie

@opiater
当时只是原来的boss跟我说过这样一个想法,后来才发现就是大名鼎鼎SuperMemo使用的。当然没法跟SuperMemo比,人家有整套理论基础的,LingosHook这个就是简单的频次统计。
源码是开放的,有兴趣可以根据自己需求改改,简单的。  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2011-12-29 20:35 hexawing

很不错!要是能加上时间判断、那个啥艾宾浩斯曲线之类的功能就完美了!  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版[未登录] 2011-12-31 08:27 codejie

@hexawing
那理论太高深,搞不懂啊...  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2012-02-21 16:22 Lqs

分数机制不错!
如果有0分更好(近期已经记熟的单词,但一个月后可能会忘):
新单词查询一次分数为1,旧单词最熟悉也只能为1,不易区分;
删除的话,以后想看看LingosHook帮我记住了哪些单词都不行了(一个月后忘记了也不能及时复习)(delete一般用来删除误抓的词,再熟悉也不删[你总有忘那一天的{导致我现在1分的单词太多了}])  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2012-02-21 16:37 Lqs

分数机制不错!
如果有0分更好(近期记熟且短期内无须再记[不再出现在1分的记忆列表],但一个月后可能会忘的词):
新单词查询一次分数为1,旧单词最熟悉也只能为1,不易区分;
删除的话,以后想看看LingosHook帮我记住了哪些单词都不行了(一个月后忘记了也不能及时复习)(delete一般用来删除误抓的词,再熟悉也不想删[你总有忘那一天的{导致我现在1分的单词太多了}])

ps. 记单词快捷键(01234)在小键盘处不可用,本来可以单手轻松操作的。  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2012-02-21 16:57 codejie

@Lqs
这个分数机制跟时间还没有对应关系,就是说,不会因为分数低就会很晚才出现,目前机制是根据分数随机出现的几率不同。
一直想改这部分,就是想不好一个满意的方案,所以一直没动。LAC我就用的是另一套,采用的是跟时间相关的方法。让我再想想啊。。。
另,小键盘不能用好还真没注意到,主要是啊--笔记本没有小键盘。。。我查查代码去,争取这个版本就改好。
感谢你的使用和建议!  回复  更多评论   

# re: LingosHook:Lingoes生词本第五版 2012-02-23 10:36 codejie

cppblog.com回档问题很严重啊。。。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜