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

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!

1. 介绍和引入

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

首先论文数目一多,必须要按类别放到子文件夹下。但是某一篇论文,往往有多个主题。比如说某论文使用 word2vec 给短文本分类,那这篇论文既可以放在 word2vec 的目录下,也可以放在短文本的目录下,也可以放在分类的目录下。当你有天想去看了,往往又忘了是放在哪个子目录下了。

再比如说,你下载了一些论文,下载的时候你知道这些论文的重要性(引用次数或者对项目的重要性)和紧急性(比如你三天之内都要看完)。但是当你把它放在某个子目录以后,当你有时间去看的时候,你忘了你当时最想看的那篇论文是什么了。

为此,我决定开发一个小工具来帮助我管理我的 paper 。我的思路是这样的:给每篇论文打上 tag ,标上重要程度和紧急程度。这样当我没有特定目的的时候,我就可以根据重要程度和紧急程度看小工具推荐的 paper ;

当我想看某方面的 paper 时,我只需要查询下 tag 就可以找到相关主题的 paper 。

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

2.实现

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

首先是图形化界面和命令行的选择,最终选择了命令行,开发速度更快,使用起来更直接。命令行的实现使用python自带的cmd模块实现。为了美化命令行的输出,参考使用了这里的终端输出彩色化和第三方的terminaltables。

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

3.安装

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

  
  
  1. pip install terminaltables

然后就可以输入:

  
  
  1. python Manager.py

启动程序。

4.使用

基本的命令:

  
  
  1. ^--- ^ ^--- ^ ^--- ^ ^--- ^ ^---^

  2. rec    recommend the papers according to urgency and importance

  3. all    show all the papers info

  4. tags   show all tags

  5. sbt    search by tags, like(sbt tag1 tg2)

  6. sbn    search by id nums, like(sbn 1 2)

  7. edit    edit one paper info by paper id, like(edit 1)

  8. path    find path by paper id, like(path 1 2)

  9. open    open paper to read by id, like(open 1)

  10. help    help info

  11. quit    exit the manager

5.演示:

a. 录入目录

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

b. 输入新 paper 的数据

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

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

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

c. 显示所有论文信息

输入:

  
  
  1. all

all

d. 显示录入的所有 tag

  
  
  1. tags

tags

e. 按照 tag 搜索 paper

  
  
  1. sbt tag1 tag2

sbt(search by tag)

f. 按照 id 号获取论文

  
  
  1. sbn num1 num2

g. 按照 id 号获取论文路径

  
  
  1. path num1 num2

h. 修改特定 paper 的 info

  
  
  1. edit num

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

i. 获取推荐

  
  
  1. rec

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

j. 打开论文

  
  
  1. open num

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

k. 获取帮助

  
  
  1. help

l. 退出

  
  
  1. quit

6.最后

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

我要滚回去看 paper 了。



  • 作者:Cer_ml

  • 原文:http://www.jianshu.com/p/768db1472042

  • 程序员大咖整理发布,转载请联系作者获得授权

【点击成为Java大神】

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值