用python编写一个本地论文管理器

介绍和引入

最近初学NLP相关的深度学习,下了很多论文,数量一多,发现论文管理是个问题。

首先论文数目一多,必须要按类别放到子文件夹下。但是某一篇论文,往往有多个主题。比如说某论文使用word2vec给短文本分类,那这篇论文既可以放在word2vec的目录下,也可以放在短文本的目录下,也可以放在分类的目录下。当你有天想去看了,往往又忘了是放在哪个子目录下了。再比如说,你下载了一些论文,下载的时候你知道这些论文的重要性(引用次数或者对项目的重要性)和紧急性(比如你三天之内都要看完)。但是当你把它放在某个子目录以后,当你有时间去看的时候,你忘了你当时最想看的那篇论文是什么了。

为此,我决定开发一个小工具来帮助我管理我的paper。我的思路是这样的:给每篇论文打上tag,标上重要程度和紧急程度。这样当我没有特定目的的时候,我就可以根据重要程度和紧急程度看小工具推荐的paper;当我想看某方面的paper时,我只需要查询下tag就可以找到相关主题的paper。

OK,有了思路,就可以着手实现了。

实现

实现这里不想讲太多,主要是设计程序的思路,源代码在文末给出,都有注释。

首先是图形化界面和命令行的选择,最终选择了命令行,开发速度更快,使用起来更直接。命令行的实现使用python自带的cmd模块实现。为了美化命令行的输出,参考使用了这里(http://blog.csdn.net/qianghaohao/article/details/52117082)的终端输出彩色化和第三方的terminaltables(https://pypi.python.org/pypi/terminaltables)。

数据存储选择sqlite,因为有数据的查询/插入/删除/更新操作,用数据库比文件要方便很多;而且sqlite是python自己支持的,不用再安装其他软件,属于轻量级的文件数据库,最适合这个任务。

安装

下载github(https://github.com/applenob/paper_manager)上的源码以后,使用python2.7,只需要:

pip install terminaltables

然后就可以输入:

python Manager.py

启动程序。

使用

基本的命令:

^---^ ^---^ ^---^ ^---^ ^---^ rec recommend the papers according to urgency and importance all show all the papers info tags show all tags sbt search by tags, like (sbt tag1 tg2) sbn search by id nums, like (sbn 1 2) edit edit one paper info by paper id, like (edit 1) path find path by paper id, like (path 1 2) open open paper to read by id, like (open 1) help help info quit exit the manager

演示

录入目录

启动程序后,首先按照提示,输入你的paper的根目录。如果输错了,可以把user_set.pkl删掉,重新启动程序即可。我这里程序已经保存路径,所以跳过。

输入新paper的数据

每次启动程序后,程序都会去扫描paper的目录(以及子目录),有扫描到新paper就会提示录入新paper的数据。

录入每篇paper的info.png

按照提示录入即可,分别是重要性(importance),紧急性(urgency),都是1-5的整数,还有所有tag(用空格隔开),以及这篇论文是不是读过了。

所有扫描到的新论文录入信息以后,就会出现欢迎界面:

欢迎界面.png

显示所有论文信息

输入:

all

all

显示录入的所有的tag

tags

tags

按照tag搜索paper

sbt tag1 tag2

sbt(search by tag)

sbt

按照id号获取论文

sbn num1 num2

sbn

按照id号获取论文路径

path num1 num2

path

修改特定paper的info

edit num

edit

如果看完了某篇论文,想改read从n为y,也可以直接使用edit命令。不修改的字段直接回车,数据不会丢失。

如:

只修改read

获取推荐

rec

rec

推荐规则是按照紧急程度降序,相同紧急程度按照重要程度降序,而且是read为n,就是没有标记读过的论文。

打开论文

open num

打开指定id的论文(使用系统默认的阅读器)。

获取帮助

help

help

退出

quit

quit

最后

github源代码地址(https://github.com/applenob/paper_manager)

这个工具只是用来方便自己的日常使用,一共只开发了两天的时间,有什么改进意见尽管提,但是不保证回去改哦~

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

一万元搭建深度学习系统:硬件、软件安装教程,以及性能测试

Macbook这种轻薄的笔记本,是搞不了深度学习的。亚马逊P2云服务,会给堆积越来越多的账单,换个便宜的服务,训练时间又太长…… 没办法,已经十多年没用过台式机...

2904
来自专栏云时之间

机器学习资料分享(持续更新)

2017.12.12 有一些链接已经失效,并且网盘一些文件被删了,我在上传一下。大家发现有什么失效的链接请在评论区告诉我下。谢谢 另外,我在新的一篇文章中会更加...

3537
来自专栏AI研习社

在树莓派上实现人脸识别

预计在不久后的将来,人脸识别和身份认证技术将在我们的日常生活中扮演一个非常重要的角色。这项技术为我们开辟了一个全新的世界,它几乎适用于我们生活的方方面面。面部识...

871
来自专栏量子位

一万元搭建深度学习系统:硬件、软件安装教程,以及性能测试

作者:Slav Ivanov@blog.slavv.com 问耕 编译整理 量子位 出品 | 公众号 QbitAI Macbook这种轻薄的笔记本,是搞不了深度...

4005
来自专栏AI研习社

人工智能开始玩《星际争霸2》 我们对它的研究环境进行了测试

本文原作者洪水宋,杜克,原文载于作者的知乎专栏 - 智能单元。 8月10号,DeepMind联合暴雪发布了星际争霸2人工智能研究环境SC2LE,从而使人工智能的...

3695
来自专栏玉树芝兰

如何用VOSviewer分析CNKI数据?

学会了用VOSviewer分析Web of Science数据后,想不想知道如何用它分析中文文献?本文用CNKI数据做样例,一步步教你实现步骤。

1063
来自专栏AI研习社

谷歌发布 TensorFlow 1.5,全面支持动态图机制和 TensorFlow Lite

AI 研习社消息,日前,谷歌发布 TensorFlow 1.5,TensorFlow 又一次迎来更新。 在此前的版本中,TensorFlow 迎来三大重大变化:...

2824
来自专栏AI研习社

Github 项目推荐 | IBM 的深度学习平台 FfDL

FfDL 是 IBM 的深度学习平台,它能将 TensorFlow,Caffe,PyTorch 做为 Kubernetes 的服务提供给开发者。

1102
来自专栏AI研习社

百度开源移动端深度学习框架 MDL,可在苹果安卓系统自由切换

AI研习社消息,日前,百度在 GitHub 上开源了移动端深度学习框架 mobile-deep-learning(MDL)的全部代码以及脚本,这项研究旨在让卷积...

3196
来自专栏ATYUN订阅号

别再用pip了,用conda安装Tensorflow可使性能速度提升8倍

别再用pip安装Tensorflow了,改用conda吧,它是一个跨平台运行的开源软件包和环境管理系统。因此它适用于Mac,Windows和Linux。如果你还...

2263

扫码关注云+社区