按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
国际互联网发展到今天,变成了体系庞杂内容浩繁的网状系统,这个系统上的信息节点规模数以十亿计,这些节点可能包括台式机、笔记本、服务器、大规模群组、智能手机、平板、智能导航终端、各类信息采集终端、信息发射终端等等等等。
只要能够链接上互联网,能够与互联网进行数据交互的,都可以视为一个信息节点,比如遍布城市的各类监控探头,各类通讯基站,严格来说都属于节点之一。
这些节点为互联网提供的数据类型也各种各样,有文字,有数据,有图表,有文档,有视频,有音频,有数据库;它们的表现形式各式各样,有通用格式,有专用格式;所有这些信息加在一起,共同组成了沉积在国际互联网中浩瀚的数据海洋。
这个数据海洋是动态的,它时刻处在在运动和更新之中,就好像各种洋流和浪涛一样,永不停息。
整个数据海洋分散在无数个信息节点之中,这些信息节点被各种通讯协议链接起来,让它们可以相互通讯。各种通讯协议中,有我们最熟悉的一种,就是url,也就是我们总会遇到的网站链接。
如果将整个数据海洋比喻成我们的地球,那么每个数据节点就是一个房间,而节点内的数据信息就是我们人类,所有的信息节点组合起来,构成了地球上的无数个城市,无数个大厦,无数个房屋。
各种各类的数据链接模式,就是承载人们出行的道路,而url不过是道路的一种,算是各个城市之间,各个主要的商业大厦之间互通的铁路和公路。它主要出现在公共服务器之间,就是说只要有了url,理论上来说它对所有数据访客都是开放的,任何人都可以抵达这个服务器,只不过它有没有门禁就是另外一回事了。
既然有公共空间,那相对应的肯定有非公共空间,除了url,还有很多链接模式,这些链接模式里,信息节点就像是私人住宅或者军事禁区一样,它并不是开放给公众的,虽然它同样存在于数据海洋中,但你是无法随便访问的。
当面对如此庞大浩繁的数据海洋时就存在一个问题了,世界这么大,我该如何找到目标,比如我想找感冒药相关的数据信息,我该怎么办?
正是这种需求催生了搜索引擎,搜索引擎可以帮助你快速找到目标,它就像一个找路指南一样,你只要告诉它想去哪,这个目的地大概什么特征,它就会帮助你找到无数个可能合适的目的地,并且把对方的url提供给你。
搜索引擎每天的访问量都是海量的,每一秒同时并发的搜索请求都是数以十万计的,在这么多请求面前,如果来一个请求它搜一遍互联网,这肯定是不现实的,不仅速度慢效率低,而且仅仅这类搜索请求就足让整个国际互联网陷入拥堵状态。
为了解决这个问题,搜索引擎就有了它特有的工作模式,它先尽可能多的将数据海洋里的信息全部找出来,然后存储在自己的服务器群组中,一旦有了搜索请求,它只要在自己的服务器里进行检索就行了。
而帮助搜索引擎完成找这个动作的就是爬虫。
因为国际互联网中的信息节点都是相互关联的,是网状联系的,每个节点上都会有很多个url。所以爬虫的工作模式就是遍历,当它开始工作时,它会以一个信息节点为起点,然后挨个访寻与这个节点相连的所有节点,当下一层节点还有url链接时,它就不断访问下去,直到将所有url遍历一次才算完。
因为整个互联网的网状结构,使它具备网状互通性,所以等爬虫将所有url遍历了,一般来说它就已经将整个国际互联网所有链接全部访问了一遍,这注定是一个比环球旅行更加令人叹为观止的行为。
而莫回既然想弄这个股神1。0,他想要搜集海量数据,那么他要做的事情其实和搜索引擎要做的事情很像,只不过搜索引擎是所有信息都要搜集,而莫回只需要关注股票相关的信息就行了。
这样的话,莫回的爬虫就必须在具备遍历能力的同时,还得具备筛选的能力。
遍历的能力解释起来很简单,就是你不能走回头路和冤枉路,游历过的url就犯不着再走第二遍了。一条新的url被发现,首先需要判断这条url是否已经走过,其次需要判断这条url被安排在什么次序去走。一个是重复性问题,一个是最优化问题,这就需要独特的遍历算法来解决。
而筛选功能就是通用爬虫和专用爬虫之间的主要区别,莫回的爬虫需要具备一定的识别能力,能够辨别某个url中的内容是否具备相关性,如果不具备那么就跳过,如果具备就将其中的内容复制回来待用。
这个筛选功能同样需要一大堆的算法来解决,不仅如此,它还需要具备自然语言处理能力,就是说它得具备对语言文字的理解和解析的能力,它得能够识别哪些文字内容是与股票相关的,哪些是无用的。
仅仅识别文字还是不够的,它还得能够识别其他格式的数据,比如它得能够识别图案,像是股票相关的各种k线图、柱状图之类的,爬虫必须能够将其与风景画或者自拍照区别开。
除了图片,其他的像是视频、音频、各类数据库之类的,爬虫都需要一一辨别出来,确定是否属于相关内容。
这里面将会有无数个技术难题需要解决,如果这个工作让莫回一个人来完成,几乎是不可想象的。
第十二章 把自己当驴使唤
当然股神1。0仅仅有分析模块和收集模块是不够的,它还需要有一个数据处理模块,如果说分析模块是大脑,收集模块是手脚的话,那么处理模块就是消化系统。
当海量的数据信息被从数据海洋中抽取出来,需要对这些信息进行加工处理,将它们处理成数据分析模块能够利用的数据模式。
比如某个上市公司一个年度财报,里面的内容非常之多,从人事变更到企业战略,并购行为,利润营收等方面都会涉及到,而这些东西又是关键性信息。一个数万字外加各种图标的财报,其中各种关键信息必须能够被分析模块理解并进行加工,这就是处理模块的主要工作了。
这个数据处理模块主要的功能部分其实是自然语言处理,程序本身是无法理解语言内涵的,它肯定无法理解“定向增发100万限售股”是什么意思,这时候就需要认为给这句话进行赋值,让它变成机器能够理解的数据信息。
比如首先进行意义分割,将定向设定为一个意义单元,将增发设定为另外一个单元,以这种方式将整个句子按照意义单元分割开来,分别进行赋值。
这一套加工手段里面就牵扯到人机交互的语言处理问题,需要人为的帮助计算机去理解和处理人类的语言,让机器能够看懂语法、语意单元,能够联系上下文,能够处理不同语境下同一个词组的不同含义。
简单来说,让机器能够理解人类语言,这就是自然语言的主要目标,同时也是这个处理模块的主要功能。
分析、收集、处理,这三大模块是股神1。0的主要功能结构,但是仅仅如此还是不够的,股神还需要很多的辅助模块。
比如它需要有存储模块,所有的数据信息搜集回来,必须整理加工好,然后分类存储起来,它就像一个超级图书馆一样,必须有自己的分类和存储规则。如果没有这些,你只是简单的将它们堆放在一起,你就可以想象,当你需要从数千万本书籍当中,找出某一页特定内容时,那将会是怎样一个痛苦而又恐怖的过程。
另外股神还需要相应的展示和交互模块,股神作为一个软件,它需要有自己的操作界面,需要能够将处理结果或者过程展现出来,需要能够接收指令,进行人机交互。
这五个模块组合在一起,并且能够顺畅的相互配合了,股神系统才算基本成型,而中间肯定会有各式各类的问题不停冒出来,这都需要莫回逐个解决掉。在使用的过程中,肯定还涉及到不停的跟新和改良,所有这些都将是莫回的工作。
按照莫回的估算,整个股神的体量不太可能低于100万行代码,如果想要让股神尽可能的完美而准确,那它的体量绝对会翻着跟头的往上翻。想要实现什么功能,你就必须付出相应的代价,如果你想要让股神的预测尽可能精确,那么不停的往里投入肯定是必不可少的。
这还仅仅是股神本身,如果想要股神运作�