“网络爬虫+相似矩阵”技术运作流程

今日头条这类资讯聚合平台是基于数据挖掘技术,筛选和推荐新闻:“它为用户推荐有价值的、个性化的信息,提供连接人与信息的新型服务,是国内移动互联网领域成长最快的产品服务之一”。自从2012年3月创建以来,今日头条至今已经累计激活用户3.1亿,日活跃用户超过3000万。

本文尝试从技术层面分析今日头条的传播机制和相关原理。

网络爬虫:抓取新闻的基本技术

今日头条是一个典型的数据新闻平台,其新闻来源除了合作媒体之外,很大一部分来自于搜索引擎的网络爬虫。

网络爬虫是什么?

STEP 1:从互联网各个角落收集信息;

STEP 2:将其中的新闻类信息进行汇总;

STEP 3:汇总的信息经过基于机器学习的分类和排序,划分出每一个时刻的热点新闻。

今日头条作为数据新闻平台,与一般数据新闻的区别,在于提供一个媒介平台,展示汇总的信息,而不是一条信息。

网络爬虫的工作机制是什么?

网络爬虫的工作机制依赖于会联网互联网上的超链接网络。

在互联网上多数网页,都有超链接存在。这些超链接将各个网页链接起来构成了一个庞大的网络,也就是超链接网络。爬虫作为一种网络程序从一些网页出发,保存网页的内容,寻找网页当中的超链接,然后访问这些超链接,并重复以上过程,这个过程可以不断进行下去。如图所示:

“今日头条”怎么计算:“网络爬虫+相似矩阵”技术运作流程

STEP 1:爬虫从一个种子节点0开始爬取网页内容,

STEP 2:抓取的同时发现两个超链接,并爬取第一级节点,

STEP 3:从第一级节点开始又发现第二级节点,这个过程不断进行下去。

这个过程当中有两种策略:

1、只有穷尽一个层级的所有页面才爬取下一个层级,这种策略叫做“广度优先”;

2、发现一个超链接后,立刻就开始爬取这个网页,并持续深入下去,这种过程叫做“深度优先”。

补充说明:

上图是一个树状网络,现实的网络不是这么简单的,里面充满了“回路”,即新发现的网页里的超链接指向的是已经爬取的老节点。这个时候就需要甄别那些网页已经被成功抓取。

举个栗子——

以今日头条为例说明一下网络爬虫在新闻抓取中的工作流程:

STEP 1:工作人员先要在后台设置新闻来源的字典,比如“网易新闻”、“新浪新闻”、“凤凰新闻”、“浙江新闻”等等,

STEP 2:通过这些字典,网络爬虫将会锁定到这些网站的超链接,从中抓取新闻。

补充说明:

如果这条新闻是在这些新闻平台相关的博客当中的内容,而不是新闻平台本身的新闻,网络爬虫就抓不到了。

聚合媒体的概念并非如此简单,除了汇聚来自不同媒体的内容之外,聚合媒体更重要的特征是对不同信息进行分类并排序,得到一个信息汇总界面(aggregator),这种信息汇总往往表现为某种排行榜。这种排行榜在传播机制上满足网络科学中所说的“优先链接机制”,即用户的注意力更倾向于投向那些排名靠前的信息,这个过程可以被经典的传播学发现:“乐队花车效应”。这个发现起源于美国的选举过程。候选人会站在乐队花车上拉选票,赞同者会站到他的车上。研究发现,人们倾向于登上那些站满了人的花车,而非那些只有很少人的花车。

推荐系统:个性化定制新闻的技术逻辑

个性化推荐在今日头条当中发挥着重要作用。

今日头条的用户登录非常人性化。作为一个后起之秀,今日头条非常具有策略性地允许用户使用微博、QQ等社交账号登录。这个过程实际上授权今日头条挖掘个人社交网络的基本信息。因而,便于获取用户的个性化信息,比如用户的兴趣、用户属性。越用越懂用户,从而进行精准的阅读内容推荐。

个性化推荐的基础是构建推荐系统

推荐系统广泛地应用于用户没有明确需求的场景。推荐系统就算法而言,可以分为:

社会化推荐(Social recommendation, 比如向朋友咨询);

基于内容的推荐(content-based filtering, 例如根据用户观看过的电影推荐其他与之相似的电影);

基于协同过滤的推荐(collaborative filtering,例如查看排行榜,或者找到和自己兴趣相似的用户,看看他们最近看什么电影)。

所以,可以用于构建推荐系统的信息也分为三类:好友、历史兴趣、注册信息。

推荐系统就是可以关联用户和物品的一种自动化工具。除了这些信息之外,时间、地点等信息均可加入到推荐系统的构建中来。现在,推荐系统已经广泛地应用于新闻推荐、图书推荐、音乐推荐、电影推荐、朋友推荐等领域,作为人工智能的一种形式,极大地方便了人们的生活和交往。

推荐系统算法的基础就是要构造相似性矩阵

这种相似性矩阵可以是物与物的相似性,例如书籍之间的相似性、音乐之间的相似性。以下以基于物品的协同过滤算法(item-based collaborative filtering, ItemCF)为例。基于物品的协同过滤算法可以利用用户的历史行为,因而可以使得推荐结果具有很强解释性。比如,可以给喜欢读足球新闻的用户推荐其它相似的新闻。基于物品的协同过滤算法主要分为两步:

STEP 1:计算物品之间的相似度。

STEP 2: 根据用户的历史行为生成用户的推荐列表。

假设有四个用户:

用户1在今日头条的浏览记录是[a、b、d],

用户2的浏览记录是[b、c],

用户3的浏览记录是[c、d],

用户4的浏览记录是[b、c、d];

可将这四个人的浏览行为表达为以下四个物品矩阵:

将个体用户的物品矩阵相加,可以汇总为所有的新闻矩阵M,M[i][j]表示新闻i和新闻j被多个人同时阅读的次数。如下所示:

矩阵逻辑

如果两个新闻被多个人同时浏览,那么可以说它们之间的相似度更高。

将以上矩阵归一化就可以对矩阵进行操作并计算新闻之间的相似度,比如相关相似度或者余弦相似度。

基于物品间的相似性度,如果有一个新用户进入系统,并且他阅读了新闻c,那么ItemCF算法可以很快给出与新闻c相似度最高的新闻(b和d),并推荐给这个新用户。

在推荐过程中,推荐系统可以根据用户的行为不断优化相似矩阵,使得推荐越来越准确。

或者,如果用户可以手动对每个新闻的兴趣(如喜欢或讨厌)标出,就可以使得推荐更准确。

本质上来说,上面两个图是热点新闻、以及个人定制新闻的基础原理。它分为两步完成:

STEP 1:先找出新闻之间的热点与相似度

STEP 2:将热点与相似度高的新闻推送给用户。

举个栗子——

假设在抗战胜利70周年当天,有4个人同时浏览今日头条的新闻,

A是女读者,她点击了秋季糖水制作方法、育儿应注意的五个事项、阅兵式、新型武器等新闻,

B是中年上班族,他点击了阅兵式、中国最新兵器谱等新闻,

C是一位年长者,他点击了养生、阅兵式、新型武器等新闻,

D是一位刚毕业的男大学生,他点击了英雄联盟攻略、好莱坞旅行攻略、阅兵式、新型武器等新闻。

热点和相似度的产生过程:

STEP 1:这四个人同时点击阅兵式和新型武器,系统算法就会通过点击和停留的时间计算出阅兵式和新型武器是当天的热点。

STEP 2:阅兵式和新型武器同时被多人点击,代表他们之间具有相似性。

STEP 3:当新进用户点击新闻时,今日头条会以最快速度分析他点击的内容,并在已经排查出的热点新闻当中寻找他所感兴趣的相关内容匹配给他,引导他阅读热点。

这一系列的行为都由计算机自动完成。

机制的缺陷

上面的例子说明了定制新闻以泛热点新闻为基础数据来完成的事实,这就出现一个问题,即当一个人关注的新闻不是热点时,系统得不到相关的热点,就会在该新闻当中寻找其他信息进行再匹配,这样匹配出的新闻在现有信息的基础上最大程度吻合了用户的兴趣,但未必会推送当天最热点的新闻。要想达到这种长尾理论所设想的定制服务,关键是对新闻的细分。只有将不同主题细分成各种子主题,再细分下设内容,才能达到真正的私人定制。要做到这一点,实际已经脱离了机械,而在于人对于事物性质的认知与把握。正如法国社会学家福柯在《知识考古学》当中的观点,分类,是一事物区别于其他事物的根本。而分类,归根结底是人的主观能动性的体现;当系统中累计的用户行为越 多,这种分类越准确,自动化的私人定制也会越贴近用户需求。

聚合媒体:一种国际新闻界的潮流

聚合媒体在国外的应用也非常广阔。信息在聚合媒体的数据新闻平台上的展现,可以是传统的搜索引擎的平面化展现,也可以是可视化展现。后者如日本的新闻地图网站(http://newsmap.jp)。日本的新闻地图项目是基于谷歌新闻做的,它采用不同的颜色将新闻类别区分开来,如红色代表“World”,黄色代表“National”,用户可以通过勾选页面底部的分类栏进行筛选,在页面顶部可以按照国家和地区进行筛选。网站后台算法依据相关新闻信息的数量、重要性、点击量自动调整每个新闻所占面积的大小。

一个非常有意思的聚合新闻网站是GDELT。 GDELT项目(The GDELT Project,http://gdeltproject.org/)监测全球100多种语言实时的广播、印刷和网络新闻,识别新闻中的人、地、组织、数量、主题、来源、情绪、时间。基于此,GDELT推出了全球新闻情绪地图,数据每一个小时更新一次。其中绿色表示快乐,黄色表示悲伤。数据密度反映了新闻的规模,见下图:

另外一个很好的例子是社交新闻网站,主要以Digg、Reddit等。这种类型的网站允许用户注册、相互关注、提交新闻并对新闻进行打分。其中,得分高的新闻就会进入到流行新闻的页面。在这个过程当中,各个用户充当了新闻的把关人,而这种信息把关的方式被称之为群体把关。

但是,群体把关的意义主要在于将新闻推到流行页面(webpage ofpopular news),也就是公众面前。这个阶段之后流行信息扩散更像是传统媒体的新闻扩散方式。其实,这种基于用户过滤的新闻聚合(news aggregation)存在非常普遍,例如新浪微博上的“热门话题”、推特上的“趋势性话题”(trend)等。根据笔者对Digg上新闻扩散的分析,这种新闻聚合对于信息扩散的影响更大,对于那些传播广泛的Digg新闻,70%以上的信息接触是通过热门新闻被Digg用户看到的。

主流新闻观与人工智能

从媒体把关到群体把关是一个进步,从群体把关到计算机或算法把关则隐藏着危险。

过去由编辑所承担的内容拣选的工作,现在交给了计算机来处理。其信息把关机制发生了根本的变化。在这个过程当中,受到最大影响的是传统的新闻生产逻辑。传统的新闻观重视公众利益,报道具有长远影响的事件并提供见解。将这些工作交给机器和算法将带来前所未有的挑战:

首先,算法根据使用者所表现出来的“兴趣”进行分类和推荐信息,往往容易给用户推荐一些低质量但用户短期内喜欢的信息。

其次,不断地接触低质量的信息使得个体的新闻素养降低。过于依赖机器帮助我们进行信息把关,容易导致视角越来越局限,不再关注社会整体利益,容易走向犬儒主义。

再次,主流的新闻操作手法保障了新闻从业者面对政治、军事和社会力量时的独立和从容。而推荐算法从信息和用户出发,对于国家和社会整体的关注不够,这种新闻推送机制的偏向容易带来攻讦。

未来新闻业走向人机结合时代

从未来新闻的视角来思考新闻行业的转型更加使得我们意识到回归新闻本质的重要性。

未来的新闻行业不仅仅是提供有限的案例访谈,而是系统地获取、积累并分析数据,并挖掘隐含其中的信息。在注意力经济的时代,向用户提供这种专业化的信息、专 业化的评论才是媒体的责任。目前迅速崛起的数据新闻正在走向这个方向,只不过在现阶段更注重可视化表达。聚合媒体将信息过滤自动化,体现了未来新闻的特 点。基于个性化的推荐,聚合媒体将人工智能的新闻整合功能进一步带进我们的生活,提供了很多便利。但是,不应该忽略的是,要警惕太依赖机器和算法所潜藏的 危险:算法或计算机把关有损新闻价值取向。

未来的新闻业,走向人机结合的时代。

本文作者:佚名

来源:51CTO

时间: 2024-11-05 23:29:27

“网络爬虫+相似矩阵”技术运作流程的相关文章

精通Python网络爬虫:核心技术、框架与项目实战.3.6 网络爬虫实现技术

3.6 网络爬虫实现技术 通过前面的学习,我们基本上对爬虫的基本理论知识有了比较全面的了解,那么,如果我们要实现网络爬虫技术,要开发自己的网络爬虫,可以使用哪些语言进行开发呢? 开发网络爬虫的语言有很多,常见的语言有:Python.Java.PHP.Node.JS.C++.Go语言等.以下我们将分别介绍一下用这些语言写爬虫的特点: Python:爬虫框架非常丰富,并且多线程的处理能力较强,并且简单易学.代码简洁,优点很多. Java:适合开发大型爬虫项目. PHP:后端处理很强,代码很简洁,模块

网络爬虫-从技术和产品角度讲,百度搜索和好搜有什么不一样

问题描述 从技术和产品角度讲,百度搜索和好搜有什么不一样 抛开搜索引擎的广告不说,单从技术和产品的角度讲,对于同一个关键词,百度搜索和好搜有什么不一样,比如我搜索'观察者模式'(我想没有个人或者组织会为这个关键词投放广告吧,搜索结果会更加客观),好搜和百度搜索结果去下 解决方案 反正都是山寨搜索引擎.都垃圾的不堪使用 解决方案二: 百度和360明显就是两个犯罪团伙,却像妖孽一样的存在. 解决方案三: 感觉都那样吧,凑合着用,有Google必然选Google了.

《Python爬虫开发与项目实战》——第3章 初识网络爬虫 3.1 网络爬虫概述

第3章 初识网络爬虫 从本章开始,将正式涉及Python爬虫的开发.本章主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫:另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程序的能力. 3.1 网络爬虫概述 本节正式进入Python爬虫开发的专题,接下来从网络爬虫的概念.用处与价值和结构等三个方面,让大家对网络爬虫有一个基本的了解.3.1.1 网络爬虫及其应用 随着网络的迅速发展,万维网成为大量信息的载体,如

用Python语言实现网络爬虫

1.什么是网络爬虫 网络爬虫是现代搜索引擎技术的一种非常核心.基础的技术,网络就好比是一张蜘蛛网,网络爬虫就像是一只蜘蛛,在网络间'爬来爬去',搜索有用的信息. 2.抓取代理服务器的网络爬虫 本文介绍用python实现抓取代理服务器的网络爬虫,主要步骤是: 1)利用urllib2获取提供代理服务的网页信息(本文以http://www.cnproxy.com/proxy1.html为例) 2)利用正则表达式获取代理ip信息 3)利用多线程技术验证代理ip的有效性 1).抓取代理ip列表 def g

精通Python网络爬虫:核心技术、框架与项目实战导读

前 言 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储. 随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来.对特定的数据进行爬取的爬虫,我们将其称为聚焦网络爬虫.在大数据时代,聚焦网络爬虫的应用需求越来越大. 目前在国内Python网络爬虫的书籍基本上都是从国外引进翻译的,

Python网络爬虫原理及实例教程

本人刚学Python不久,前段时间看到华南师范大学有一个网络爬虫的项目,特意研究了一下,用Python写了一个可以多线程下载的网络爬虫. 网络爬虫基本原理 网络爬虫是?人饕?孀ト∠低车闹匾?槌刹糠帧E莱娴闹饕?康氖墙?チ??系耐?诚略氐奖镜匦纬梢桓龌蛄??谌莸木迪癖阜荨U馄?┛椭饕?耘莱嬉约白ト∠低辰?幸桓黾虻サ母攀觥?/p> 一.网络爬虫的基本结构及工作流程 一个通用的网络爬虫的框架如图所示:   网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL; 2.将这些URL放入待抓

实现网络爬虫与搜索引擎技术都需要配备什么样的资源?

问题描述 公司准备做一个关于搜索引擎方面的东西,但是本人对这块不是熟悉,都需要配备什么样的资源,比如人才,软件(开源或商业的,开源优先),硬件,网络等,请大家不吝赐教.大致的要求是能有一个爬虫去一些网站爬数据抓取回来,然后存储在本地.在用搜素技术搜索这些数据和分析这个这些对这些数据进行加工处理,方便用户使用.我们只是要求搜索某一行业的数据,而不是像百度这样可以搜索全网的数据. 解决方案 我以前做过信息检索,写过爬虫解析过网页,可能可以给您一些提示.首先流程正如@y_x 所说,各个阶段需要用到的工

lucene-实现网络爬虫与搜索引擎技术都需要配备什么样的资源?

问题描述 实现网络爬虫与搜索引擎技术都需要配备什么样的资源? 公司准备做一个关于搜索引擎方面的东西,但是本人对这块不是熟悉,都需要配备什么样的资源,比如人才,软件(开源或商业的,开源优先),硬件,网络等,请大家不吝赐教. 大致的要求是能有一个爬虫去一些网站爬数据抓取回来,然后存储在本地.在用搜素技术搜索这些数据和分析这个这些对这些数据进行加工处理,方便用户使用.我们只是要求搜索某一行业的数据,而不是像百度这样可以搜索全网的数据.

网络爬虫技术的java实现

问题描述 网络爬虫技术的java实现 最近在学习网络爬虫,各位大神可不可以帮忙画一个思维导图给我~~我不知道从哪里下手~谢谢 解决方案 Java 网络爬虫技术Java网络爬虫的实现Java网络爬虫的实现