當前位置:
首頁 > 知識 > 用Python編寫一個本地論文管理器

用Python編寫一個本地論文管理器

點擊上方

Python開發

」,選擇「置頂公眾號」


關鍵時刻,第一時間送達!



1. 介紹和引入


最近初學 NLP 相關的深度學習,下了很多論文,數量一多,發現論文管理是個問題。

首先論文數目一多,必須要按類別放到子文件夾下。但是某一篇論文,往往有多個主題。比如說某論文使用 word2vec 給短文本分類,那這篇論文既可以放在 word2vec 的目錄下,也可以放在短文本的目錄下,也可以放在分類的目錄下。當你有天想去看了,往往又忘了是放在哪個子目錄下了。


再比如說,你下載了一些論文,下載的時候你知道這些論文的重要性(引用次數或者對項目的重要性)和緊急性(比如你三天之內都要看完)。但是當你把它放在某個子目錄以後,當你有時間去看的時候,你忘了你當時最想看的那篇論文是什麼了。


為此,我決定開發一個小工具來幫助我管理我的 paper 。我的思路是這樣的:給每篇論文打上 tag ,標上重要程度和緊急程度。這樣當我沒有特定目的的時候,我就可以根據重要程度和緊急程度看小工具推薦的 paper ;


當我想看某方面的 paper 時,我只需要查詢下 tag 就可以找到相關主題的 paper 。


OK ,有了思路,就可以著手實現了。


2.實現


實現這裡不想講太多,主要是設計程序的思路,源代碼在文末給出,都有注釋。


首先是圖形化界面和命令行的選擇,最終選擇了命令行,開發速度更快,使用起來更直接。命令行的實現使用python自帶的cmd模塊實現。為了美化命令行的輸出,參考使用了這裡的終端輸出彩色化和第三方的terminaltables。


數據存儲選擇sqlite,因為有數據的查詢/插入/刪除/更新操作,用資料庫比文件要方便很多;而且sqlite是python自己支持的,不用再安裝其他軟體,屬於輕量級的文件資料庫,最適合這個任務。


3.安裝

下載github(https://github.com/applenob/paper_manager)上的源碼以後,使用python2.7,只需要:

  1. pip install terminaltables


然後就可以輸入:

  1. python

    Manager

    .

    py


啟動程序。

4.使用


基本的命令:

  1. ^---

    ^

    ^---

    ^

    ^---

    ^

    ^---

    ^

    ^---^

  2. rec    recommend the papers according to urgency

    and

    importance

  3. all    show all the papers info

  4. tags   show all tags

  5. sbt    search by tags

    ,

    like

    (

    sbt tag1 tg2

    )

  6. sbn    search by id nums

    ,

    like

    (

    sbn

    1

    2

    )

  7. edit    edit one paper info by paper id

    ,

    like

    (

    edit

    1

    )

  8. path    find path by paper id

    ,

    like

    (

    path

    1

    2

    )

  9. open    open paper to read by id

    ,

    like

    (

    open

    1

    )

  10. help    help info

  11. quit    exit the manager


5.演示:


a. 錄入目錄


啟動程序後,首先按照提示,輸入你的 paper 的根目錄。如果輸錯了,可以把* user_set.pkl *刪掉,重新啟動程序即可。我這裡程序已經保存路徑,所以跳過。


b. 輸入新 paper 的數據


每次啟動程序後,程序都會去掃描 paper 的目錄(以及子目錄),有掃描到新 paper 就會提示錄入新 paper 的數據。



按照提示錄入即可,分別是重要性( importance ),緊急性( urgency ),都是1-5的整數,還有所有 tag (用空格隔開),以及這篇論文是不是讀過了。


所有掃描到的新論文錄入信息以後,就會出現歡迎界面:



c. 顯示所有論文信息


輸入:

  1. all



all


d. 顯示錄入的所有 tag

  1. tags



tags


e. 按照 tag 搜索 paper

  1. sbt tag1 tag2


sbt(search by tag)



f. 按照 id 號獲取論文

  1. sbn num1 num2



g. 按照 id 號獲取論文路徑

  1. path num1 num2



h. 修改特定 paper 的 info

  1. edit num



如果看完了某篇論文,想改 read 從 n 為 y ,也可以直接使用 edit 命令。不修改的欄位直接回車,數據不會丟失。 如:



i. 獲取推薦

  1. rec



推薦規則是按照緊急程度降序,相同緊急程度按照重要程度降序,而且是 read 為 n ,就是沒有標記讀過的論文。


j. 打開論文

  1. open num


打開指定 id 的論文(使用系統默認的閱讀器)。


k. 獲取幫助

  1. help



l. 退出

  1. quit



6.最後


這個工具只是用來方便自己的日常使用,一共只開發了兩天的時間,有什麼改進意見儘管提,但是不保證回去改哦~


我要滾回去看 paper 了。






  • 作者:Cer_ml



  • 原文:http://www.jianshu.com/p/768db1472042



  • Python開發整理髮布,轉載請聯繫作者獲得授權


【點擊成為Java大神】

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發 的精彩文章:

爬蟲可能都會用,但是背後的架構你真的懂了嗎?
python wsgi 簡介

TAG:Python開發 |