我是個興趣廣泛的人,看很多書,經常會下載一些英文的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,呈現-標簽
將詞頻統計結果呈現給用戶,允許用戶打標簽:已掌握,尚未掌握 - 單詞復習,詞頻高、又沒有掌握的
數據庫表:用戶、圖書、用戶-單詞、圖書-單詞-詞頻、單詞
~原始想法:
自然語言處理,統計詞頻,按高低排序,用戶可以為每個詞打個記號,哪些是已經知道意思的,哪些是不知道的,形成一個用戶都掌握了哪些單詞的詞典庫,經過積累后,用戶對于自己掌握哪些單詞,就非常清楚了。