zoukankan      html  css  js  c++  java
  • Java开发、网络爬虫、自然语言处理、数据挖掘简介

    一、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,是终极目标,也是得以变现的核心所在。

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

    写的比较随意,不当之处欢迎交流。
  • 相关阅读:
    Yield Usage Understanding
    Deadclock on calling async methond
    How to generate file name according to datetime in bat command
    Run Unit API Testing Which Was Distributed To Multiple Test Agents
    druid的关键参数+数据库连接池运行原理
    修改idea打开新窗口的默认配置
    spring boot -thymeleaf-url
    @pathvariable和@RequestParam的区别
    spring boot -thymeleaf-域对象操作
    spring boot -thymeleaf-遍历list和map
  • 原文地址:https://www.cnblogs.com/liinux/p/5572542.html
Copyright © 2011-2022 走看看