最近因为学校开设课程实验的要求,我完成了一个小型的bat招聘网站内容分析系统,思路挺简单的,我就想通过爬虫把bat的招聘网站内所有的职位信息都爬取下来,然后做一个同意的管理,用户client可以通过app和系统进行交互,获取到这三个公司职位的聚合信息。后台会开启一个不断更新数据库的服务,通过这个服务,网站内的所有职位在一定的时间内都会同步到我的服务器,以保证我的数据库内容的时效性。用户可以选择关注四个技术点,以及关注的一个具体的职位,现在还没有实现职位信息变更的消息推送,不过在预期内,或许能实现吧(可能性不大)。然后我也大概做了一个简单的推荐系统,可以根据用户关注的内容推送职位要求或描述相近的职位给用户,可惜的是即使我已经训练好了模型,但是运行起来速度还是跟不上,一个推荐过程大概需要半分钟,当然这是在我的小笔记本上跑出来的速度,惭愧。推荐过程实现的思路肯定是有很多漏洞的,此前没有做过自然预言处理相关的开发,实现的时候就是简单的想,怎么把一个职位的描述信息尽可能无差错的转换为向量,在得到职位的向量之后,再利用各种聚类算法进行聚类分析(这个想法非常非常的粗糙,这里写下来只是~还不如不写,不管了)。总之实现过程没什么参考价值啊,而且最后做出来的东西也用不上,到时候拿去给老师检查的时候就当作一个噱头吧。
实现的过程中还是遇到了不少问题的,比如说怎么实现一个restful服务器?数据库的更新策略是什么?怎么完成这个推荐系统?训练的模型怎么跟随数据库中的数据变化来更新(我计算过大概更新一次模型需要半个小时)?怎么处理错误,返回错误信息?~不管最后实现的结果怎么样吧,也算是有一个不太成熟的解决办法了不是。
代码量大概就2200行吧,这个只是服务端的,我只负责服务端的实现。代码我已经开源到开源中国上了~Here如果你们感兴趣的话,欢迎fork~在实现的过程中,特别是后台采用了很多很多各种各样的包和苦,这里列一下
- sqlalchemy: 数据库orm,算是python:orm的一个标准吧,提供的接口非常非常的友好,使用方便~推荐
- flask:服务器框架,轻量,开发迅速,不废话推荐!
- requests:http请求框架,非常好用~ 简单的几句就能完成一个请求而且接口非常的human,你只要知道http协议,几乎可以不用去看文档就能实现发送请求内容获取等。神器
- BeautifulSoup4:页面解析工具,我比较喜欢里面的通过选择器选择标签的功能,还是挺实用的,不过希望这个库的作者能吧xpath选择方式加上去,毕竟个人觉得xpath比较直观,好理解。推荐
- jieba:中文分词工具,非常有名了,对自然语言处理感兴趣的可以了解一下,这次主要用到的它的关键词提取的功能,效果还是不错的。
- word2vec:一个可以将word转换为vector的工具包,里面也包含了doc2vec,实用型。
- scikit-learn:python机器学习的不二之选,神器。也是自己非常喜欢的一个包,里面有各种各样的机器学习的模型和算法实现,而且接口出乎意料的统一,这点让我很喜欢。本人对机器学习也挺感兴趣的,以后打算去看看它的源代码啦。
- matplotlib:画图画图~不多说了!!!推荐
话说python里面好用的包还真的多诶,真是挺喜欢这们语言的,喜欢它的语法,喜欢它的各种牛逼的库,加油吧,希望自己以后能靠着自己喜欢的东西做自己喜欢的事情过自己喜欢的生活~