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

28 篇原创文章

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

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

640?wx_fmt=png

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

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

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

网址:http://www.arxiv-sanity.com/

640?wx_fmt=png

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

most recent

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

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

top recent

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

640?wx_fmt=png

top hype

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

640?wx_fmt=png

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

Github 项目

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

https://github.com/karpathy/arxiv-sanity-preserver

640?wx_fmt=png

其中通过 Arxiv API 查找论文的代码文件是fetch_papers.py,可以在这个代码中改变希望查找的论文类别,不仅仅是机器学习。对于 Arxiv API ,可以查看说明文档,文档地址:

https://arxiv.org/help/api/user-manual#detailed_examples

代码结构

根据作者介绍,代码主要分为两部分:

查询代码

通过 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可以通过这篇教程来安装--https://docs.mongodb.com/tutorials/install-mongodb-on-ubuntu/

  • `sudo service mongod start`命令开启 mongodb 服务

  • 确定服务在后台运行:在文件`/var/log/mongodb/mongod.log`中最后一行必须是`[initandlisten] waiting for connections on 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解释器的权限,参考文章:

http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l

但对于这个方法,需要谨慎使用,最好是采用virtualenv等虚拟环境。


小结

最后,再次给出网站和项目的地址:

http://www.arxiv-sanity.com/

https://github.com/karpathy/arxiv-sanity-preserver

点击原文,也可以直接跳转到 Github 上。

也可以在后台留言,获取网站和项目地址,以及打包好的代码,步骤如下:

  1. 关注"机器学习与计算机视觉"公众号

  2. 回复关键词:arxiv

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

另外,今天还有第二条推送!转载自机器之心的一篇文章,介绍 GAN 在超分辨率方面的最新成果!可以实现将画质不好的图片变得更加清晰,效果是真的很棒!有兴趣的可以点击看看。

640?wx_fmt=jpeg

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

  • 推荐几本数据结构算法书籍和课程

  • [资源分享] Github上八千Star的深度学习500问教程

  • [资源分享] 吴恩达最新《机器学习训练秘籍》中文版可以免费下载了!

  • [资源分享] TensorFlow 官方中文版教程来了

  • 必读的AI和深度学习博客

  • [教程]一份简单易懂的 TensorFlow 教程

  • [资源]推荐一些Python书籍和教程,入门和进阶的都有!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html下拉选择框箭头改为年,CSS自定义select下拉选择框的样式(不用其他标签模拟)...

今天群里有人问到怎么自定义select下拉选择框的样式,于是群里就展开了激烈的讨论,刚开始一直就是考虑怎样使用纯CSS实现,把浏览器默认的样式覆盖掉,但最后均因兼容问题处理不好而失败告终,最后的解决方案就是用其他的元…

【语言处理与Python】10.1自然语言理解\10.2命题逻辑

10.1自然语言理解 查询数据库 如果有人提出一个问题: Which country is Athens in? 得到的回答应该是: Greece. 这个数据可以通过数据库语言得到答案: SELECT Country FROM city_table WHERE City athens 这里有一个文法,可以把句…

程序员的数学笔记3--迭代法

第三节课程,介绍的是迭代法。 前两节笔记的文章: 程序员的数学笔记1–进制转换程序员的数学笔记2–余数 03 迭代法 什么是迭代法 迭代法,简单来说,其实就是不断地用旧的变量值,递推计算新的变量值。 这里采用一个…

机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)

上一篇机器学习入门系列(1)–机器学习概览简单介绍了机器学习的一些基本概念,包括定义、优缺点、机器学习任务的划分等等。 接下来计划通过几篇文章来介绍下,一个完整的机器学习项目的实现步骤会分为几步,最后会结合《…

Python-100 | 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。http://www.runoob.com/python/python-100-examples.html另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。Example-1 三位数组合题目&…

html5qq邮箱代码,使用qq邮箱批量发送邮件 实例源码(支持富文本)

资源下载此资源下载价格为3D币,请先登录资源文件列表MailSending/MailSending/App.config , 184MailSending/MailSending/Form1.Designer.cs , 15243MailSending/MailSending/Form1.cs , 10655MailSending/MailSending/Form1.resx , 438794MailSending/MailSending/…

Python-100 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。 http://www.runoob.com/python/python-100-examples.html 另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。 Example-1 三位数组合…

nginx html解析插件,nginx配置信息的解析流程

nginx配置信息的解析流程2011年9月9日 1,744 次浏览请关注最新修正合订:这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保…

机器学习数据集的获取和测试集的构建方法

这是机器学习入门系列(2)–如何构建一个完整的机器学习项目的第二篇 上一篇机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)介绍了开始一个机器学习项目需要明确的问题,比如当前任务属于有监督还是无监督学习问题,然后…

[资源推荐] 必须收藏的两个查找论文和代码实现的网站!

2019年第 13 篇文章,总第 37 篇文章无论是研究方向是 AI 方面的学生,或者是做机器学习方面的算法工程师,在掌握基础的机器学习相关知识后,都必须掌握搜索论文的技能,特别是研究或者工作领域方向的最新论文,…

dw html怎么导入视频,如何在dw中将视频插入

如何在dw中将视频插入电脑版Dreamweaver工具被很多人使用,用来编辑视频等,有的用户在使用该软件时,想要插入需要编辑的视频,但是却不知道如何插入,那么小编就来为大家介绍一下吧。具体如下:1. 第一步&#…

editplus注释快捷键

Tools->Preferences Tools-Keyboard-Edit-LineComment Line Uncomment为取消注释 转载于:https://www.cnblogs.com/yiwd/archive/2013/06/06/3121689.html

Python-100 练习题 02

2019年第 10 篇文章,总第 34 篇文章 练习题2 的网址: http://www.runoob.com/python/python-exercise-example2.html Example-2 企业发放奖金 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%&#xff…