[Github 项目推荐] 一个更好阅读和查找论文的网站

栏目: Python · 发布时间: 5年前

内容简介:机器学习发展到现在,已经积累了非常多的文章,特别是深度学习火起来后,每年新增加的论文非常多,如果需要研究某个领域,不仅需要阅读这个领域经典的论文,也必须时刻关注最新的学术进展,比如最近两年特别火的 GAN,不仅需要先了解它的第一篇开山之作--"Generative Adversarial Nets",也需要关注最新发表的该领域的论文。而查找论文,除了直接谷歌搜索外,通常都会到 arxiv 网站上查找,下图显示的是在计算机视觉和模式识别这个类别下的最新论文:不过,从上图也可以知道,这里仅仅展示了论文名字和作者

机器学习发展到现在,已经积累了非常多的文章,特别是深度学习火起来后,每年新增加的论文非常多,如果需要研究某个领域,不仅需要阅读这个领域经典的论文,也必须时刻关注最新的学术进展,比如最近两年特别火的 GAN,不仅需要先了解它的第一篇开山之作--"Generative Adversarial Nets",也需要关注最新发表的该领域的论文。

而查找论文,除了直接谷歌搜索外,通常都会到 arxiv 网站上查找,下图显示的是在计算机视觉和模式识别这个类别下的最新论文:

[Github 项目推荐] 一个更好阅读和查找论文的网站

不过,从上图也可以知道,这里仅仅展示了论文名字和作者、发表时间等信息,如果是熟悉的作者,比如一些大牛,当然就值得我们一看,但如果作者不熟悉,就只能通过论文名字判断是否值得点击论文名字,查看论文简介,再通过论文简介判断是否值得下载 pdf 来精读或者泛读。

如果可以,我们当然希望在这个页面就可以展示论文简介,这样可以减少一个步骤。

所以今天推荐一个基于 arXiv 提供的 API 实现的更加易于阅读机器学习方面论文的网站,网站如下所示:

网址: www.arxiv-sanity.com/

[Github 项目推荐] 一个更好阅读和查找论文的网站

上图左上角,可以这个网站目前收集了过去几年大约总共 62820 篇论文,都是机器学习方面的论文,然后下方有几个选项卡,分别是:

most recent

展示最新的论文。对于每篇论文,都会展示名字、作者、发表时间,论文的图示,论文的简介,然后可以下载 pdf,并且还可以搜索相似论文和有讨论区。

不过对于讨论区,似乎因为使用人数不多,或者是发表评论的人不多,直接展示的论文基本都没有评论留言,需要直接点击 discussions 这个选项卡才会展示有评论的论文,但基本都是只有一条评论,不多于两条评论。

top recent

根据登录用户收藏到其 library 的论文展示,可以选择展示最近几天的范围,包括最近一天、三天、一周、一个月、一年以及所有。

[Github 项目推荐] 一个更好阅读和查找论文的网站

top hype

这主要是展示在 Twitter 上提及过的论文,可以查看提及的用户,以及发的 twitter 内容,不过我看基本都是属于直接转发 arxiv 的官方twitter 发表的推文,类似于我们直接转发微博。

[Github 项目推荐] 一个更好阅读和查找论文的网站

后面的几个选项卡,除了 discussions ,其余几个都是需要进行登录的, friends 就是展示你朋友的论文, recommanded 就是基于你收藏在你的 library 的论文来展示,这里开发者还给出采用的方法,是基于 SVM 算法。

Github 项目

这个网站的实现代码是开源在 Github 上的:

github.com/karpathy/ar…

[Github 项目推荐] 一个更好阅读和查找论文的网站

其中通过 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

欢迎关注我的微信公众号--机器学习与计算机视觉,或者扫描下方的二维码,大家一起交流,学习和进步!

[Github 项目推荐] 一个更好阅读和查找论文的网站

之前分享的资源和教程文章有:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms Unlocked

Algorithms Unlocked

Thomas H. Cormen / The MIT Press / 2013-3-1 / USD 25.00

Have you ever wondered how your GPS can find the fastest way to your destination, selecting one route from seemingly countless possibilities in mere seconds? How your credit card account number is pro......一起来看看 《Algorithms Unlocked》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具