我是个兴趣广泛的人,看很多书,经常会下载一些英文的pdf放在ipad上阅读,英语的单词量还没达到专业8级的水平,感觉不认识的单词比较多,始终是个困扰。
某些英文pdf与中文复印而成的pdf不同,它里面的文本应该是可以提取出来的,
然后对这本书中出现的单词做统一词根处理,再进行词频统计,从高到低排序,展示给用户,
用户对每个单词都挨个打上标记,哪些已经掌握了,哪些还没掌握,如果在其他书中已经标记过的,可以直接把标记记录加载到当前这本书中。日积月累,就行成了一个用户已掌握、未掌握单词的数据库。
经常翻翻那些未掌握的单词,这些单词出现在那本书中,出现的句子是什么,单词的中文意思是什么,等等。
相信会有助于英语单词的快速掌握。
实现方案:
- 从pdf中提取文本 - PDFMiner库
<pre>
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")
</pre> - 使用python nltk做词频统计
<pre>
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]
</pre>
效果还不是特别好,应该把字符、数字去掉,只保留英文单词 - UI,呈现-标签
将词频统计结果呈现给用户,允许用户打标签:已掌握,尚未掌握 - 单词复习,词频高、又没有掌握的
数据库表:用户、图书、用户-单词、图书-单词-词频、单词
~原始想法:
自然语言处理,统计词频,按高低排序,用户可以为每个词打个记号,哪些是已经知道意思的,哪些是不知道的,形成一个用户都掌握了哪些单词的词典库,经过积累后,用户对于自己掌握哪些单词,就非常清楚了。
网友评论