機器學習發展到如今,已經積累了很是多的文章,特別是深度學習火起來後,每一年新增長的論文很是多,若是須要研究某個領域,不只須要閱讀這個領域經典的論文,也必須時刻關注最新的學術進展,好比最近兩年特別火的 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 上的:
其中經過 Arxiv API 查找論文的代碼文件是fetch_papers.py
,能夠在這個代碼中改變但願查找的論文類別,不只僅是機器學習。對於 Arxiv API ,能夠查看說明文檔,文檔地址:
根據做者介紹,代碼主要分爲兩部分:
經過 Arxiv API 來下載指定類別的最新論文,並提取每篇論文的內容來提取文字,建立tfidf
向量,這部分代碼須要考慮的就是後端爬取和計算方面的功能:
這部分是一個網頁端的服務器(基於 Flask/Tornado/sqlite),實現經過數據庫查詢論文,根據類似性來過濾用戶,等功能。
須要的依賴庫包括:
上述依賴庫能夠經過下列命令來安裝:
$ virtualenv env # optional: use virtualenv
$ source env/bin/activate # optional: use virtualenv
$ pip install -r requirements.txt
複製代碼
除此外,還須要ImageMagick
和pdftotext
,在Ubuntu
能夠經過命令安裝:
sudo apt-get install imagemagick poppler-utils
複製代碼
但這個命令會還須要繼續安裝其餘依賴庫
整個項目的運行流程須要依次運行好幾個腳本文件,這裏最好仔細查看每一個腳本代碼,它們包含很多設置,這些設置多是你但願修改的。按以下順序來依次執行下列代碼:
fetch_papers.py
:經過 arxiv API 進行查詢並建立一個包含每篇論文全部信息的文件db.p
。這份代碼能夠修改你想查詢的內容,好比不是查詢機器學習,而是其餘計算機內容,如數據庫等類別。這裏須要注意,**一次性查詢太多論文會受到 arxiv 的限制,**因此最好分批運行這份代碼,並經過參數--start-index
來設置每次從新運行時的起始位置;download_pdfs.py
:下載論文並保存到文件夾pdf
;parse_pdf_to_text.py
:輸出全部 pdfs 中的文字部分,保存到txt
文件夾thumb_pdf.py
:生成 pdfs 的略縮圖,保存到文件夾thumb
analyze.py
:基於bigrams
來計算全部文檔的tfidf
向量,生成文件tfidf.p
,tfidf_meta.p
,sim_dict.p
buildsvm.py
:對全部用戶訓練 SVMs ,並輸出文件user_sim.p
make_cache.py
:主要是進行預處理來加快服務器啓動的速度,若是是第一次運行該代碼須要確保執行命令sqlite3 as.db < schema.sql
來初始化一個空的數據庫mongodb
守護進程。Mongodb能夠經過這篇教程來安裝--docs.mongodb.com/tutorials/i…
sudo service mongod start
命令開啓 mongodb 服務/var/log/mongodb/mongod.log
中最後一行必須是[initandlisten] waiting for connections on port <port>
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
等虛擬環境。
最後,再次給出網站和項目的地址:
點擊原文,也能夠直接跳轉到 Github 上。
也能夠在後臺留言,獲取網站和項目地址,以及打包好的代碼,步驟以下:
歡迎關注個人微信公衆號--機器學習與計算機視覺,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!
以前分享的資源和教程文章有: