学英语的一种办法

我是个兴趣广泛的人,看很多书,经常会下载一些英文的pdf放在ipad上阅读,英语的单词量还没达到专业8级的水平,感觉不认识的单词比较多,始终是个困扰。

某些英文pdf与中文复印而成的pdf不同,它里面的文本应该是可以提取出来的,

然后对这本书中出现的单词做统一词根处理,再进行词频统计,从高到低排序,展示给用户,

用户对每个单词都挨个打上标记,哪些已经掌握了,哪些还没掌握,如果在其他书中已经标记过的,可以直接把标记记录加载到当前这本书中。日积月累,就行成了一个用户已掌握、未掌握单词的数据库。

经常翻翻那些未掌握的单词,这些单词出现在那本书中,出现的句子是什么,单词的中文意思是什么,等等。

相信会有助于英语单词的快速掌握。

实现方案:

  1. 从pdf中提取文本 - PDFMiner库

    import pyPdf
    def convertPdf2String(path):
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    print pdf.getNumPages()
    for page in pdf.pages:
    print page.extractText().encode("ascii", "ignore")
  2. 使用python nltk做词频统计

    tokens = nltk.word_tokenize(content)
    x = nltk.FreqDist(tokens)
    sorted_x = sorted(x.items(), key=operator.itemgetter(1),reverse=True)
    for a in sorted_x:
    print a[0],a[1]

    效果还不是特别好,应该把字符、数字去掉,只保留英文单词
  3. UI,呈现-标签
    将词频统计结果呈现给用户,允许用户打标签:已掌握,尚未掌握
  4. 单词复习,词频高、又没有掌握的

数据库表:用户、图书、用户-单词、图书-单词-词频、单词

~原始想法:
自然语言处理,统计词频,按高低排序,用户可以为每个词打个记号,哪些是已经知道意思的,哪些是不知道的,形成一个用户都掌握了哪些单词的词典库,经过积累后,用户对于自己掌握哪些单词,就非常清楚了。

你可能感兴趣的:(学英语的一种办法)