一、java开发
(2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系统开发,如ssh、springMvc、springside、nutz、,面向各自不同的领域,像OA、金融、教育等有非常成熟案例,这是目前最大的市场所在,故人称“java为web而生”。但目前看它的缺点入门不高,所以待遇相对中等,上升空间很有限且缓慢。
(3)移动开发(Android),是目前的大趋势,但移动端往往只能充当客户端的角色,其技术的难度与复杂度要相对弱很多,因为一时的火热其技术市价被高抬,但长久看来其发展空间有限,但比pc web端开发要增快一些。
二、网络爬虫
(1) 传统爬虫,像nutch、hetriex之类的,以爬取简单页面为好,即没有复杂请求的页面。但随着web2.0的兴起,越来越多的网站采用很多动态交互技术如ajax之类的来提升用户体验、需用户登陆才可访问的页面等,它们就无能为力了,或者说需要二次开发的开发成本太高,很多人放弃用它们。
(2) 定制爬虫,针对一些大数据平台,如微博、电商、点评网之类的,页面交互复杂、用户登陆后方可访问,往往是需要自定义定制开发一些爬虫项目,如专门针对微博的微博爬虫,针对大众点评网的定制爬虫,针对豆辩书评的评论爬虫,都属于典型的定制爬虫,其难度要大于传统爬虫,需要相应的定制分析工具与能力,并且要具备很扎实的程序设计功底,优化效率,克服验证码、拒绝服务等反爬措施,方可做出高效的该类爬虫。现在主流依然是基于httpclient+jsoup来搞定网络下载与页面解析。
(3) 新型爬虫,结合一些成熟的第三方工具,如c/c++实现的webkit、htmlunit、phantomjs、casper等工具,其共同点即最大限度的去模拟人为操作浏览器的方式去解决用(1)、(2)所不易解决的问题,如模拟登陆、复杂参数的获取、复杂页面交互等问题。往往采用如上的工具可以轻松搞定这些问题,其最大的缺点是由于基于真实浏览器的操作,故效率比较低,所以往往需要和httpclient相结合,才能达到高效实用的目的。基于phantomjs做的百度元搜索抓取也证明了这一点,下一步可以结合它去完成微博类爬虫的模拟登陆获取cookies部分,之后采用httpclient+jsoup解决海量数据的抓取,是非常好的微博爬虫解决方案。
因为其需要的知识面相对要较多,故其待遇要高于web开发,且上升幅度与速度都远高于web开发。
三、自然语言处理
(1)分词:主流的包括开源的ansj分词、ICTCLAS、哈工大的ltp、海量分词、fudan分词等,在借鉴ansj分词的基础上我也重构并开发了天亮分词,并已加入ansj主持的中国自然语言处理开源组织nlpchina的https://github.com/NLPchina/中。
(2)词性标注:以前较主流的标注体系是ICTCLAS和北大标注体系,现在有出现了如哈工大ltp平台、大连理工自然语方处理实验室的标注体系,大同小异。
(3)句法分析:这块相对前两者较难一些,目前国内我知道的是哈工大的ltp做的中文句法分析不错,像stanford的parser对英文句法还可以接受,但对中文句法分析就比较多。
因为这一领域相对比较专,难度和工作量也较大,但由于开源分词比较多且实用性不错,所以专门搞这块的人员往往都在大公司或比较牛的个人,当然待遇比上述一二也要高。
四、数据挖掘
(2) 引用第三方开源组件,像weka、mahout、libSvm等都提供了很多封装好的各种不同数据挖掘算法的组件,供上层开发人员直接调用,只要学习好其API,并按说明input、output就可以。
五、四者之间的关系
javaweb开发方面可以说是一个门户,可以让用户更好、更直接的了解后台的东西。
网络爬虫,是大数据获取的途径,为nlp、datamining做准备。
nlp,是衔接网络spider的数据和datamining的中间件。
datamining,是终极目标,也是得以变现的核心所在。
这四者是一个顺序承接的关系,若能四者皆具,则谓之大才。
写的比较随意,不当之处欢迎交流。