[Github 項目推薦] 一個更好閱讀和查找論文的網站

機器學習發展到如今,已經積累了很是多的文章,特別是深度學習火起來後,每一年新增長的論文很是多,若是須要研究某個領域,不只須要閱讀這個領域經典的論文,也必須時刻關注最新的學術進展,好比最近兩年特別火的 GAN,不只須要先了解它的第一篇開山之做--"Generative Adversarial Nets",也須要關注最新發表的該領域的論文。python

而查找論文,除了直接谷歌搜索外,一般都會到 arxiv 網站上查找,下圖顯示的是在計算機視覺和模式識別這個類別下的最新論文:git

不過,從上圖也能夠知道,這裏僅僅展現了論文名字和做者、發表時間等信息,若是是熟悉的做者,好比一些大牛,固然就值得咱們一看,但若是做者不熟悉,就只能經過論文名字判斷是否值得點擊論文名字,查看論文簡介,再經過論文簡介判斷是否值得下載 pdf 來精讀或者泛讀。github

若是能夠,咱們固然但願在這個頁面就能夠展現論文簡介,這樣能夠減小一個步驟。算法

因此今天推薦一個基於 arXiv 提供的 API 實現的更加易於閱讀機器學習方面論文的網站,網站以下所示:sql

網址:www.arxiv-sanity.com/mongodb

上圖左上角,能夠這個網站目前收集了過去幾年大約總共 62820 篇論文,都是機器學習方面的論文,而後下方有幾個選項卡,分別是:數據庫

most recentflask

展現最新的論文。對於每篇論文,都會展現名字、做者、發表時間,論文的圖示,論文的簡介,而後能夠下載 pdf,而且還能夠搜索類似論文和有討論區。ubuntu

不過對於討論區,彷佛由於使用人數很少,或者是發表評論的人很少,直接展現的論文基本都沒有評論留言,須要直接點擊discussions這個選項卡纔會展現有評論的論文,但基本都是隻有一條評論,很少於兩條評論。後端

top recent

根據登陸用戶收藏到其 library 的論文展現,能夠選擇展現最近幾天的範圍,包括最近一天、三天、一週、一個月、一年以及全部。

top hype

這主要是展現在 Twitter 上說起過的論文,能夠查看說起的用戶,以及發的 twitter 內容,不過我看基本都是屬於直接轉發 arxiv 的官方twitter 發表的推文,相似於咱們直接轉發微博。

後面的幾個選項卡,除了discussions,其他幾個都是須要進行登陸的,friends就是展現你朋友的論文,recommanded就是基於你收藏在你的library的論文來展現,這裏開發者還給出採用的方法,是基於 SVM 算法。

Github 項目

這個網站的實現代碼是開源在 Github 上的:

github.com/karpathy/ar…

其中經過 Arxiv API 查找論文的代碼文件是fetch_papers.py,能夠在這個代碼中改變但願查找的論文類別,不只僅是機器學習。對於 Arxiv API ,能夠查看說明文檔,文檔地址:

arxiv.org/help/api/us…

代碼結構

根據做者介紹,代碼主要分爲兩部分:

查詢代碼

經過 Arxiv API 來下載指定類別的最新論文,並提取每篇論文的內容來提取文字,建立tfidf向量,這部分代碼須要考慮的就是後端爬取和計算方面的功能:

  • 創建一個 arxiv 論文的數據庫
  • 計算內容向量
  • 生成略縮圖
  • 給用戶計算 SVMs
  • 等等
用戶界面

這部分是一個網頁端的服務器(基於 Flask/Tornado/sqlite),實現經過數據庫查詢論文,根據類似性來過濾用戶,等功能。

依賴庫

須要的依賴庫包括:

  • numpy
  • feedparser--解析 xml 文件
  • scikit learn--處理 tfidef 向量,並實現 SVM 算法
  • flask--展現結果
  • flask_limiter
  • tornado
  • dateutil
  • scipy
  • sqlite3

上述依賴庫能夠經過下列命令來安裝:

$ virtualenv env                # optional: use virtualenv
$ source env/bin/activate       # optional: use virtualenv
$ pip install -r requirements.txt
複製代碼

除此外,還須要ImageMagickpdftotext,在Ubuntu能夠經過命令安裝:

sudo apt-get install imagemagick poppler-utils
複製代碼

但這個命令會還須要繼續安裝其餘依賴庫

運行流程

整個項目的運行流程須要依次運行好幾個腳本文件,這裏最好仔細查看每一個腳本代碼,它們包含很多設置,這些設置多是你但願修改的。按以下順序來依次執行下列代碼:

  1. fetch_papers.py:經過 arxiv API 進行查詢並建立一個包含每篇論文全部信息的文件db.p。這份代碼能夠修改你想查詢的內容,好比不是查詢機器學習,而是其餘計算機內容,如數據庫等類別。這裏須要注意,**一次性查詢太多論文會受到 arxiv 的限制,**因此最好分批運行這份代碼,並經過參數--start-index來設置每次從新運行時的起始位置;
  2. download_pdfs.py:下載論文並保存到文件夾pdf
  3. parse_pdf_to_text.py:輸出全部 pdfs 中的文字部分,保存到txt文件夾
  4. thumb_pdf.py:生成 pdfs 的略縮圖,保存到文件夾thumb
  5. analyze.py:基於bigrams來計算全部文檔的tfidf向量,生成文件tfidf.p,tfidf_meta.p,sim_dict.p
  6. buildsvm.py:對全部用戶訓練 SVMs ,並輸出文件user_sim.p
  7. make_cache.py:主要是進行預處理來加快服務器啓動的速度,若是是第一次運行該代碼須要確保執行命令sqlite3 as.db < schema.sql來初始化一個空的數據庫
  8. 在後臺開啓一個mongodb守護進程。Mongodb能夠經過這篇教程來安裝--docs.mongodb.com/tutorials/i…
    • sudo service mongod start命令開啓 mongodb 服務
    • 肯定服務在後臺運行:在文件/var/log/mongodb/mongod.log中最後一行必須是[initandlisten] waiting for connections on port <port>
  9. 運行serve.py代碼來開啓flask服務。經過訪問localhost:5000來查看最終運行的效果!

另外,也能夠運行twitter_daemon.py來啓動一個屏幕會話,它會採用你的twitter API(保存在文件twitter.txt)來查找在 Twitter 上被說起到的在數據庫中的論文,並保存結果到文件twitter.p

做者寫了一個簡單的命令行腳本依次執行上述代碼,天天都會運行依次這個腳原本抓取新的論文,並保存到現有數據庫中,而後從新計算全部的tfidf向量或分類器。

注意:對於代碼analyze.py,它利用numpy來作不少計算工資,這裏推薦安裝BLAS(好比OpenBLAS)方面的庫來提升計算速度,安裝後,對於 25000 篇論文和 5000 多個用戶僅須要幾個小時便可完成計算。

在線運行

若是但願在線運行flask服務器,好比在 AWS 上,運行命令python serve.py --prod

另外,你還須要建立一個密鑰文件secret_key.txt,並添加隨機的文字(具體作法能夠查看server.py代碼)

當前工做流程

目前對於該網站還不能實現全自動,須要天天都手動運行部分代碼來獲取最新的論文,這裏做者給出剛剛提到的腳本文件內容:

python fetch_papers.py
python download_pdfs.py
python parse_pdf_to_text.py
python thumb_pdf.py
python analyze.py
python buildsvm.py
python make_cache.py
複製代碼

而後會經過一個屏幕會話運行服務,這須要執行命令screen -S serve來建立會話(或者參數-r來從新鏈接),而後運行下列命令:

python serve.py --prod --port 80
複製代碼

那麼服務器會載入新的文件並展現在網站上。不過有些系統可能須要加上命令sudo纔可使用 80 端口,這裏有兩個解決辦法,一個是使用iptables來變動端口,或者採用setcap來提升你的python解釋器的權限,參考文章:

stackoverflow.com/questions/4…

但對於這個方法,須要謹慎使用,最好是採用virtualenv等虛擬環境。


小結

最後,再次給出網站和項目的地址:

www.arxiv-sanity.com/

github.com/karpathy/ar…

點擊原文,也能夠直接跳轉到 Github 上。

也能夠在後臺留言,獲取網站和項目地址,以及打包好的代碼,步驟以下:

  1. 關注"機器學習與計算機視覺"公衆號
  2. 回覆關鍵詞:arxiv

歡迎關注個人微信公衆號--機器學習與計算機視覺,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!

以前分享的資源和教程文章有:

相關文章
相關標籤/搜索