對于很多人來說背單詞是一個很痛苦的經歷列林,但是學習英語又是一件非做不可的事情。其中有一個痛點是酪惭,你用托福希痴,GRE等詞庫記憶會遇到很多你已經會的單詞或者由于你平時很難遇到因此背了就忘的單詞。這篇文章專門針對這個問題分享一個我用了很久的詞庫私人訂制方案春感,同時還可以治療懶癌砌创。
有道詞典
有道詞典的屏幕取詞比較方便,詞庫和社區(qū)功能也比較全面鲫懒,所以平時使用比較多嫩实。日常遇到的生單詞可以隨時放到有道自帶的單詞本中,收集記憶窥岩。雖然有道單詞本提供背單詞的功能甲献,但是非常單一,沒有艾賓浩斯遺忘曲線颂翼,所以非常不適合用來復習單詞晃洒。
墨墨背單詞
再說說墨墨(添加個Link以免有人想多)。墨墨是我用過的背單詞app中最推薦的一個疚鲤。原因有以下:
1. 根據艾賓浩斯遺忘曲線給你需要復習的單詞锥累;
2. 可以自己創(chuàng)建詞庫(在網頁中操作),不用按照托福集歇、雅思桶略、專四專八的詞庫去記很多你已經記住了的或者你平時基本遇不到的單詞;
3. 可以每日簽到诲宇,簽到的時候還會‘Peng’一下际歼,細致的給你成就感;
4. 你有必要每日簽到姑蓝!一是因為如果連續(xù)幾天不簽到會累積很多你需要復習的單詞鹅心,二是自建詞庫的單詞數(shù)不是無限的,你需要通過簽到來掙纺荧,或者花錢買(雖然不貴但是掙不到數(shù)量靠買獲取是不是很傷自尊)旭愧;
5. 此外,每天至少記憶單詞數(shù)累積到10個你才能簽到宙暇;
6. 例句和助記非常豐富输枯,而且你可以自己創(chuàng)建自己喜歡的助記方式;
7. 例句或助記中的生單詞可以直接添加到記憶清單中占贫;
8. app內部鏈接五大在線詞典桃熄;
9. 可以查看自己記憶單詞的很多統(tǒng)計指標和未來復習單詞數(shù)的預測;
10. 暫時就想到這些了型奥。
詞庫私人訂制
那么瞳收,問題來了碉京。一個是平時使用和收集生單詞的有道詞典,一個是可以方便記憶和復習自建詞庫的墨墨背單詞螟深,怎么快速有效的把有道詞典單詞本收集的生單詞導入到自己創(chuàng)建的墨墨詞庫中?
在這里谐宙,我肯定不會允許你耗時費力地一個一個復制!而如果把有道單詞本導出來再放入墨墨詞庫血崭,你會發(fā)現(xiàn)導出的單詞本包括序號卧惜,音標,詞性標識和漢語意思等夹纫,把這些全部直接復制到自建詞庫中將會引起很大的麻煩(試試你就知道了)咽瓷。我的solution是這樣的:
1. 從有道詞典單詞本中導出你想加入記憶的單詞到一個.txt文件;
2. 把.txt文件的編碼改為 utf-8 (直接另存為舰讹,有選項)茅姜;
3. 使用本文后面的附加的python程序可以提取出你需要記憶的單詞;
4. 程序將會生成一個.txt文件月匣,打開之后會發(fā)現(xiàn)里面只剩英語單詞了钻洒,將他們復制到你的墨墨自建詞庫中,記下詞庫編號锄开;
5. 用墨墨記憶單詞的時候通過詞庫編號鏈接到你的詞庫素标,你就可以開始學習你的私人訂制的詞庫了。
程序代碼
此程序完成將text文件中這樣的記錄:
350, incarnation [?nkɑ?'ne??(?)n] n. 化身萍悴;道成肉身头遭;典型 incarnation: 化身 |
道成肉身 | 道成肉身
轉化為這樣的詞條:
incarnation
程序是用python寫的,我不常做文本處理癣诱,本程序只為滿足簡單的基礎需要计维,所以應該有很多可以改進的地方(歡迎分享你的更好的方案)。你只需要用自己的有道詞典導出的utf-8編碼的記事本文件路徑和名稱替換第19行的E:\voc.txt
# -*- coding: utf-8 -*-
"""
Created on Apr 28 2016
Extracting vocabulary from Youdao dictionary
The vocabulary text file should be code as utf-8
<INPUT>
file_in: the exported vocabulary from Youdao
</INPUT>
<OUTPUT>
file_out: the file to save the English words. Default file name is
new_words_'time'.txt ('time' is the local date)
<OUTPUT>
@author: sinit
"""
import codecs,time
file_in = r'E:\voc.txt'
outname = 'new_words'+'_'+time.strftime("%Y-%m-%d",time.localtime())+".txt"
file_out = r'E:\\'+outname
fs = codecs.open(file_in, 'r','utf-8')
vocabulary = fs.readlines()
fs.close()
word = []
word.append(vocabulary[0].split()[1])
def is_chinese(uchar):
#Judge if a unicode is Chinese
if (uchar >=u'/u4e00')&(uchar<=u'/u9fa5'):
return True
else:
return False
def is_zh (c):
x = ord (c)
# Punct & Radicals
if x >= 0x2e80 and x <= 0x33ff:
return True
# Fullwidth Latin Characters
elif x >= 0xff00 and x <= 0xffef:
return True
# CJK Unified Ideographs &
# CJK Unified Ideographs Extension A
elif x >= 0x4e00 and x <= 0x9fbb:
return True
# CJK Compatibility Ideographs
elif x >= 0xf900 and x <= 0xfad9:
return True
# CJK Unified Ideographs Extension B
elif x >= 0x20000 and x <= 0x2a6d6:
return True
# CJK Compatibility Supplement
elif x >= 0x2f800 and x <= 0x2fa1d:
return True
else:
return False
for i in range(1,len(vocabulary)):
line = vocabulary[i].split()
if vocabulary[i].split()[0][:-1].isdigit():
newword = vocabulary[i].split()[1]
if is_zh(newword[0]):
continue
else:
word.append(vocabulary[i].split()[1])
fs = open(file_out, 'w+')
for line in word:
fs.write(line)
fs.write('\n')
fs.close()
print('Assignment Done!')