[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 项目推荐] 一个更好阅读和查找论文的网站

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


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

查看所有标签

猜你喜欢:

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

Ext JS源码分析与开发实例宝典

Ext JS源码分析与开发实例宝典

彭仁夔 / 电子工业出版社 / 2010-1 / 78.00元

《Ext JS源码分析与开发实例宝典》从Ext JS实现的基本功能开始讲解,从两个方面对Ext JS进行整体上的概述,让读者从宏观上去把握ExtJS框架。接下来讲解Ext JS核心基础知识,包括事件机制、模板模型、数据模型以及对类、函数、字符串、日期、数组及定时任务这6个类进行扩展。然后讲解Ext JS基于元素的开发,包括动画特效和拖曳实现等。最后深入讲解组件的开发,对布局、模型及4大组件一一进行......一起来看看 《Ext JS源码分析与开发实例宝典》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具