今天整理了大学期间的读书记录,看着长长的书单,觉得应该将这些书分个类,看看自己在大学期间的阅读习惯是什么样的。结果分了十几分钟连十分之一都没有分完,感觉很累。在数据分析中有个概念叫聚类,而我的目的是把书分类,这两件事是差不多的吧,那应该就有工具可以帮我做这个事情。
程序员要善于利用工具
于是我开始在网络上搜索,看有没有现成的程序可以用。
不一会儿,就在知乎上找到一个 你用 Python 做过什么有趣的数据挖掘/分析项目?
剪切式编程
可喜可贺,里面还有代码示例,看着很简短。虽然不会 python
,但是照猫画虎还是可以的。将代码拷贝下来,改了改。中间遇到一些中文编码的问题,磕磕碰碰的,但最后也搞定了。
生成的图片如下:
图片中显示的文字越大,说明词频越高,从图片看来,我读过最多的是 XXX 程序设计
这类的书,嗯,很有道理。
有待完善
不过从这个图本身看来,还有不少小问题,比如
- 分词不够理想,皮格马利翁是一个词,不应该被分开
- 出现了重复的词,
Java
在图片上出现好几次,按理说,同一个词根据词频的高低不同显示为不同的大小之后,只会出现一次。仔细看可以发现,图片上出现的三个Java
其实是不同的,第一个只有Java
这个单词,第二个是Java 中文
,第三个是Agile Java
。这么看来,还是分词
的问题
虽然从这个图片中看不到太多有用的信息,但是整个过程还是挺有意思的。而且,我还可以继续从读书记录里面挖掘出来更多的信息。很容易想到的就是,我可以给书加标签,用标签来给书做聚类分析,这样应该可以得到更有价值的信息。
新的思路
不过给两百多本书加标签,比分类的工作量要大得多,毕竟每本书可以加若干个标签。
于是,我又想到,可以借鉴使用豆瓣上现成的标签
这样就不用自己加标签了。我只需要请求豆瓣的 API,拿到读书记录中所有书的标签就行了,工作量一下子小了很多。
找了一圈,发现原来豆瓣没有根据书名直接招书的 API,想要精确的定位一本书,需要用 ISBN。想想也有道理,同名的书可能有很多,根据书名确实无法唯一地定位一本书。那该怎么办呢?
未完待续……
今天时间不多,就先到这里吧,挖个坑以后慢慢埋……