對(duì)于很多人來(lái)說(shuō)背單詞是一個(gè)很痛苦的經(jīng)歷,但是學(xué)習(xí)英語(yǔ)又是一件非做不可的事情。其中有一個(gè)痛點(diǎn)是,你用托福,GRE等詞庫(kù)記憶會(huì)遇到很多你已經(jīng)會(huì)的單詞或者由于你平時(shí)很難遇到因此背了就忘的單詞。這篇文章專門針對(duì)這個(gè)問題分享一個(gè)我用了很久的詞庫(kù)私人訂制方案,同時(shí)還可以治療懶癌。
有道詞典
有道詞典的屏幕取詞比較方便,詞庫(kù)和社區(qū)功能也比較全面,所以平時(shí)使用比較多。日常遇到的生單詞可以隨時(shí)放到有道自帶的單詞本中,收集記憶。雖然有道單詞本提供背單詞的功能,但是非常單一,沒有艾賓浩斯遺忘曲線,所以非常不適合用來(lái)復(fù)習(xí)單詞。
墨墨背單詞
再說(shuō)說(shuō)墨墨(添加個(gè)Link以免有人想多)。墨墨是我用過(guò)的背單詞app中最推薦的一個(gè)。原因有以下:
1. 根據(jù)艾賓浩斯遺忘曲線給你需要復(fù)習(xí)的單詞;
2. 可以自己創(chuàng)建詞庫(kù)(在網(wǎng)頁(yè)中操作),不用按照托福、雅思、專四專八的詞庫(kù)去記很多你已經(jīng)記住了的或者你平時(shí)基本遇不到的單詞;
3. 可以每日簽到,簽到的時(shí)候還會(huì)‘Peng’一下,細(xì)致的給你成就感;
4. 你有必要每日簽到!一是因?yàn)槿绻B續(xù)幾天不簽到會(huì)累積很多你需要復(fù)習(xí)的單詞,二是自建詞庫(kù)的單詞數(shù)不是無(wú)限的,你需要通過(guò)簽到來(lái)掙,或者花錢買(雖然不貴但是掙不到數(shù)量靠買獲取是不是很傷自尊);
5. 此外,每天至少記憶單詞數(shù)累積到10個(gè)你才能簽到;
6. 例句和助記非常豐富,而且你可以自己創(chuàng)建自己喜歡的助記方式;
7. 例句或助記中的生單詞可以直接添加到記憶清單中;
8. app內(nèi)部鏈接五大在線詞典;
9. 可以查看自己記憶單詞的很多統(tǒng)計(jì)指標(biāo)和未來(lái)復(fù)習(xí)單詞數(shù)的預(yù)測(cè);
10. 暫時(shí)就想到這些了。
詞庫(kù)私人訂制
那么,問題來(lái)了。一個(gè)是平時(shí)使用和收集生單詞的有道詞典,一個(gè)是可以方便記憶和復(fù)習(xí)自建詞庫(kù)的墨墨背單詞,怎么快速有效的把有道詞典單詞本收集的生單詞導(dǎo)入到自己創(chuàng)建的墨墨詞庫(kù)中?
在這里,我肯定不會(huì)允許你耗時(shí)費(fèi)力地一個(gè)一個(gè)復(fù)制!而如果把有道單詞本導(dǎo)出來(lái)再放入墨墨詞庫(kù),你會(huì)發(fā)現(xiàn)導(dǎo)出的單詞本包括序號(hào),音標(biāo),詞性標(biāo)識(shí)和漢語(yǔ)意思等,把這些全部直接復(fù)制到自建詞庫(kù)中將會(huì)引起很大的麻煩(試試你就知道了)。我的solution是這樣的:
1. 從有道詞典單詞本中導(dǎo)出你想加入記憶的單詞到一個(gè).txt文件;
2. 把.txt文件的編碼改為 utf-8 (直接另存為,有選項(xiàng));
3. 使用本文后面的附加的python程序可以提取出你需要記憶的單詞;
4. 程序?qū)?huì)生成一個(gè).txt文件,打開之后會(huì)發(fā)現(xiàn)里面只剩英語(yǔ)單詞了,將他們復(fù)制到你的墨墨自建詞庫(kù)中,記下詞庫(kù)編號(hào);
5. 用墨墨記憶單詞的時(shí)候通過(guò)詞庫(kù)編號(hào)鏈接到你的詞庫(kù),你就可以開始學(xué)習(xí)你的私人訂制的詞庫(kù)了。
程序代碼
此程序完成將text文件中這樣的記錄:
350, incarnation [?nkɑ?'ne??(?)n] n. 化身;道成肉身;典型 incarnation: 化身 |
道成肉身 | 道成肉身
轉(zhuǎn)化為這樣的詞條:
incarnation
程序是用python寫的,我不常做文本處理,本程序只為滿足簡(jiǎn)單的基礎(chǔ)需要,所以應(yīng)該有很多可以改進(jìn)的地方(歡迎分享你的更好的方案)。你只需要用自己的有道詞典導(dǎo)出的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!')