一、java开发

(1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好。

(2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系统开发,如ssh、springMvc、springside、nutz、,面向各自不同的领域,像OA、金融、教育等有非常成熟案例,这是目前最大的市场所在,故人称“java为web而生”。但目前看它的缺点入门不高,所以待遇相对中等,上升空间很有限且缓慢。

(3)移动开发(Android),是目前的大趋势,但移动端往往只能充当客户端的角色,其技术的难度与复杂度要相对弱很多,因为一时的火热其技术市价被高抬,但长久看来其发展空间有限,但比pc web端开发要增快一些。

二、网络爬虫

  也叫spider,始于也发展于百度、谷歌。但随者近几年大数据的兴起,爬虫应用被提升到前所未有的高度。就大数据而言,其实自有数据或用户产生数据平台很有限,只有像电商、微博类这样的平台才能免强自给自足,像很多数据分析挖掘公司多以网络爬虫的方式得到不同来元的数据集合,最后为其所用,构建属于自己的大数据综合平台。其中,像舆情类、金融股票分析类、广告数据挖掘类等属于此种。 下面技术层面描述之。

(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开发。

三、自然语言处理

  即NLP,nature language process的简称,它也是很多其它名称的简称,很多人在此有误解。其主要包括典型的三部分,分词、词性标注、句法分析。

(1)分词:主流的包括开源的ansj分词、ICTCLAS、哈工大的ltp、海量分词、fudan分词等,在借鉴ansj分词的基础上我也重构并开发了天亮分词,并已加入ansj主持的中国自然语言处理开源组织nlpchina的https://github.com/NLPchina/中。

(2)词性标注:以前较主流的标注体系是ICTCLAS和北大标注体系,现在有出现了如哈工大ltp平台、大连理工自然语方处理实验室的标注体系,大同小异。

(3)句法分析:这块相对前两者较难一些,目前国内我知道的是哈工大的ltp做的中文句法分析不错,像stanford的parser对英文句法还可以接受,但对中文句法分析就比较多。

因为这一领域相对比较专,难度和工作量也较大,但由于开源分词比较多且实用性不错,所以专门搞这块的人员往往都在大公司或比较牛的个人,当然待遇比上述一二也要高。

四、数据挖掘

  即datamining,这是现在的大趋势,它往往是基于nlp为基础的,再结合一些典型的数据挖掘算法,像分类、聚类、神经网络相关等算法,从而达到数据挖掘应用开发与产品的目
(1)自行研发相关挖掘算法:也就是在一定数学和计算机基础之上,做一些自主研发相关算法与调优,难度比较大,往往是一些牛人或算法研发工程师去搞。

(2) 引用第三方开源组件,像weka、mahout、libSvm等都提供了很多封装好的各种不同数据挖掘算法的组件,供上层开发人员直接调用,只要学习好其API,并按说明input、output就可以。

五、四者之间的关系

javaweb开发方面可以说是一个门户,可以让用户更好、更直接的了解后台的东西。

网络爬虫,是大数据获取的途径,为nlp、datamining做准备。

nlp,是衔接网络spider的数据和datamining的中间件。

datamining,是终极目标,也是得以变现的核心所在。

这四者是一个顺序承接的关系,若能四者皆具,则谓之大才。

写的比较随意,不当之处欢迎交流。

Java开发、网络爬虫、自然语言处理、数据挖掘简介的更多相关文章

  1. Java开发搜索引擎爬虫

    package com.peidon.html; import java.io.BufferedReader; import java.io.File; import java.io.FileOutp ...

  2. Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1

    Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1 一.简介 版本匹配: WebCollector2.12 + selenium2.44.0 ...

  3. 适用于Java开发人员的SOLID设计原则简介

    看看这篇针对Java开发人员的SOLID设计原则简介.抽丝剥茧,细说架构那些事——[优锐课] 当你刚接触软件工程时,这些原理和设计模式不容易理解或习惯.我们都遇到了问题,很难理解SOLID + DP的 ...

  4. java之网络爬虫介绍

    文章大纲 一.网络爬虫基本介绍二.java常见爬虫框架介绍三.WebCollector实战四.项目源码下载五.参考文章   一.网络爬虫基本介绍 1. 什么是网络爬虫   网络爬虫(又被称为网页蜘蛛, ...

  5. Java版网络爬虫基础(转)

    网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广 ...

  6. Java版网络爬虫基础

    网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广 ...

  7. 使用Java实现网络爬虫

    网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  8. 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)

    原文地址http://blog.csdn.net/qy20115549/article/details/52203722 本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平 ...

  9. HtmlUnit 开发网络爬虫

    网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,几行代码就OK啦! 通常在一个页面中会包含别的Url,在别的Url当中又会包含更多的Url. ...

  10. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

随机推荐

  1. bzoj4152 [AMPPZ2014]The Captain

    最短路,先将x排序,然后把排序后权值相邻的点连边,再把y排序,也把权值相邻的点连边,求一遍1到n的最短路就好啦. 代码 #include<cstdio> #include<queue ...

  2. BackgroundWorker的使用方法

    http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(VS.80).aspx Backgroun ...

  3. 夺命雷公狗---微信开发55----微信js-sdk接口开发(2)接口功能介绍之签名算法

    我们JS-SDK里面其实有不少的接口 startRecord---录音 stopRecord---停止录音 playVoice---播放 pauseVoice---暂停播放 uploadImage-- ...

  4. Silverlight ModelView中调用UI进程

    Silverlihgt:  Deployment.Current.Dispatcher.BeginInvoke wpf: App.Current.Dispatcher.Invoke  

  5. python False

    None 空字符串 空列表 空元组 空字典 false为False

  6. Android NDK 开发(三)--常见错误锦集合Log的使用【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511  Android NDK开发经常因某些因素会出现一些意想不到的错误, ...

  7. android 中 listview 设置自动匹配高度

    1.布局文件 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:l ...

  8. jython学习笔记2

    1.%是求余,//是整除的商,**是乘方 abs(var) Absolute value pow(x, y) Can be used in place of ** operator pow(x,y,m ...

  9. Hosting custom WPF calendar control in AX 2012

    原作者: https://community.dynamics.com/ax/b/axilicious/archive/2013/05/20/hosting-custom-wpf-calendar-c ...

  10. org.hibernate.TransientObjectException

    使用JPA注解@ManyToMany做一个多对多的用例. 为了避免在删除主表数据时同时级联删除从表数据,JPA官方文档建议在主表的从表字段使用级联注解:CascadeType.PERSIST,Casc ...