机器学习发展到如今,已经积累了很是多的文章,特别是深度学习火起来后,每一年新增长的论文很是多,若是须要研究某个领域,不只须要阅读这个领域经典的论文,也必须时刻关注最新的学术进展,好比最近两年特别火的 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 上。
也能够在后台留言,获取网站和项目地址,以及打包好的代码,步骤以下:
欢迎关注个人微信公众号--机器学习与计算机视觉,或者扫描下方的二维码,你们一块儿交流,学习和进步!
以前分享的资源和教程文章有: