前端开发者如何借助云端一体方案拓展自己的能力及职业边界,戳此了解 了解详情
写点什么

搜索引擎中的 web 数据挖掘

  • 2019 年 12 月 03 日
  • 本文字数:2589 字

    阅读完需:约 8 分钟

搜索引擎中的 web 数据挖掘

导读:今天为大家分享的是搜索引擎中的 web 数据挖掘。首先介绍下搜索引擎。实际上,我们每天都会使用的搜索引擎,我们会输入关键词 query 和需求,搜索引擎会根据算法将于 query 最相关且最权威的结果呈现给用户。



搜索引擎有 3 个核心部分:


第一:理解用户行为,从最初文字输入到语音和图片输入。


第二:收录并分析互联网数据。


第三:将用户行为与数据建立联系,为用户推荐结果。



今天主要介绍第二部分内容:互联网 web 数据分析技术。首先看一下 web 数据挖掘与收录系统,也就是 spider 系统。Spider 系统是比较成熟的技术, 目标是:快速、全面、准确的收录并分析网页数据, 一般全网搜索引擎类似 google、百度、搜狗的 spider 系统,每日调度 10 亿级链接,Spider 数据库存储千亿级网页与万亿级链接。我们可以认为 spider 系统是一个环状的系统,从链接数据库开始,经过相关算法:如链接调度与筛选相关算法,对周期内需要调度的链接进行抓取,然后发给抓取器,进行网页的下载和渲染。然后输入到数据挖掘与计算系统中,对内容进行提取,将网页中的内容保存到内容数据库,链接保存到链接数据库中。我们今天的重点是网页下载之后,网页相关的一些数据挖掘算法。



首先我们看一个例子,互联网用户会浏览新闻、微博等各式各样的网页。我们观察一下网页,思考两个问题,第一个问题,在你观察的网页有什么特征及内容。第二个问题,从整体看来,这是怎样的网页,如何描述这个网页。具体的分析如下:




Web 分析技术最核心是对网页特征提取,比如:导航、标题、时间、主图等等。网页内部特征是数据引擎进行排序时用到的关键特征。例如在排序中,时间特征也比较关键,将实效性高且相关网页排在前面。除内部特征之外,还有网页整体特征。我们会用到一些分类和自然语言处理的技术,刚才的例子就是一个新闻网页,内容是科技相关的。会同时计算语义特征和结构特征,例如主图、排版、文本段落等。



Web 数据挖掘中,需要计算并提取网页的百余个网页属性字段,在此之中会使用一些技术,如机器学习的分类、聚类、回归、自然语言处理、规则聚合、主题模型等等。最终的目标是充分的理解网页,为搜索引擎排序提供准确的网页属性。



网页分析用到了许多基础的算法和数据结构。获取网页属性,需要用很多模型计算相应的字段,低层需要构造很多数据结构。了解网页首先需要建立一个 html 树的结构。在这个数据结构中, 如图蓝色的代表标签节点,绿色代表文本节点。文本节点是 html 的内容,内容可以展示在浏览器中。在分析过程中,一些内容比较关键,如标题、超链接与文本内容等相关重要字段。



下面介绍页面分析的一个算法:我们希望充分的理解网页, 在此过程中, 我们可以通过算法划分出不同的区域。如划分为上下左右区域,根据不同的区域提取字段,最终可以对网页进行更深层次的理解,比如说主体边框、标题、关键内容识别理解。



在将网页划分为不同区域的过程中, 需要用到较多的数据结构。例如:依赖 HTML 树构建统计树。所谓统计树就是在建立了 HTML 树之后,对树节点增加统计属性,例如坐标、宽高、样式等等基础信息。往往在识别节点类型(正文节点、图片节点)时,这些基本信息可以帮我们排除没有意义的节点。



在构造树的过程中,会对节点的特征进行计算,例如节点的面积、颜色等。依赖这些节点特征对节点进行分类标记。例如说网页的布局节点,js 节点,这些具有对应的特征属性,基于此对网页进行分类。分类之后将树形的节点转化成数组的形式,方便后续分析。



如左图,该网页包含 body 主体,布局节点从上到下一次排开。同样在右图的统计树上,根节点就是 body 节点,下面的四个子节点代表网页块元素。在统计树上进行层次遍历,以保留有效布局结构节点,将树缩减为一个更加简单的树。在遍历过程中,需要算法来计算节点的排列顺序。例如根节点下有 4 个子节点,分别代表网页中的不同布局块。左图四个布局块是从上到下的排列方式,在右图中会根据深度进行标记。



构造完结构树之后,还会对树进行变换:节点删除,节点压缩。左图网页中橙色的节点,对于表示页面意义不大,原因是:根节点下的子节点都是从上到下排列的,橙色节点的子节点排序顺序相同,因此可以对橙色节点删除,将其子节点上移。



总结:为网页划分区域,为构造平面数据结构做准备。我们从 html tree 做了许多化简得到 layout tree,根据 layout tree 计算区域,从而得到多个分区。



如何根据 layout tree 划分平面,划分思想就是构造划分平面的容器(类比与 c++ 中的 vector)。 我们按广度优先遍历 layout tree,来判断节点是否可以放入到容器中。可以使用规则或者机器学习模型来进行判断。如图中黄框的节点,面积比较小,宽比高的值较大,且包含一些语义信息:导航等,就可判断节点属于上区域容器中。但是 5 号节点面积较大,判断为上区域是不合适的。那么上区域容器收集完成了。所以 5 号节点会在下一层进行相应的划分。也可以通过分类模型来判断是否要放入到容器中。



完成平面构造之后,可以利用它们对网页中元素提取。例如图中在提取评论内容,训练一个评论块识别模型,就可以从不同网页中,商品、新闻等网页中提取评论内容。



最后介绍网页分类,这是一个比较通用技术,无论是结构分类还是语义分类思路是比较类似的。例如对网页分类,就是对提取网页的特征向量(如图片数量,链接数量等等统计信息),利用有监督的机器学习模型(如随机森林、逻辑回归等)进行训练,识别网页类型。一般的网页分类系统是多个二分类模型叠加在一起的。例如有多个模型:娱乐,体育新闻等,最终我们会对这些模型结果串联到一起,这样每个类型相互没有依赖,升级迭代比较方便。


本次分享的技术部分就到这里,谢谢大家。



作者介绍


沐沐老师,前百度资深研发工程师。10 余年 C/C++研发与算法设计经验,致力于搜索与推荐引擎及其子系统的研发、迭代与优化,数据分析与挖掘领域专家;沐沐老师多年担任校园招聘、社会招聘面试官,面试过不计其数的候选人;大学时代的沐沐老师曾获得 ACM 国际大学生程序设计竞赛、GCJ、百度之星等多个算法竞赛的各种奖项。


木雨堂由多位来自百度、阿里、微软等一线互联网科技公司的资深研发工程师共同创立,为互联网、计算机相关从业者与在校同学提供高质量的免费、付费的互联网相关技术原创视频内容,帮助同学们快速学习互联网、人工智能等前沿技术知识。


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s/-VAE-QeiykYwwAmf0q9NhQ


2019 年 12 月 03 日 08:001637

评论

发布
暂无评论
发现更多内容

OpenMLDB Weekly Update(2021.9.12-2021.9.19)

第四范式开发者社区

人工智能 机器学习 开源技术 OpenMLDB

OpenMLDB Weekly Update(2021.9.27-2021.10.4)

第四范式开发者社区

机器学习 数据库 开源 第四范式 OpenMLDB

OpenMLDB Weekly Update(2021.10.4-2021.10.11)

第四范式开发者社区

第四范式 开源技术 OpenMLDB 机器学习数据库

模块一

迪马

2.10 滚动选择器:如何自定义省市区多级联动选择器?(一)

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

2.11 滚动选择器:如何自定义省市区多级联动选择器?(二)

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

ARouter 在多 module 项目中实战

逆锋起笔

android arouter 路由框架 阿里arouter

架构3期模块一作业

渐行渐远

架构实战营

现成秒合约交易APP系统开发模板

官方线索|金山集团“程风破浪,码动未来”

xcbeyond

1024我在现场

OpenMLDB Weekly Update(2021.9.5-2021.9.12)

第四范式开发者社区

机器学习 数据库 第四范式 开源技术 OpenMLDB

一周信创舆情观察(10.11~10.17)

统小信uos

Defi系统开发搭建(案例)

人脸识别主板能应用哪些产品设备?

双赞工控

安卓主板 工控主板 主板定制

2.9 scroll-view 介绍:如果渲染一个滚动的长列表?(二)

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

OpenMLDB Weekly Update(2021.8.30-2021.9.6)

第四范式开发者社区

机器学习 数据库 第四范式 开源技术 OpenMLDB

CMP是什么意思?谁能解释下?

行云管家

cmp 多云管理平台 多云管理 云管平台

OpenMLDB Weekly Update(2021.9.19-2021.9.26)

第四范式开发者社区

机器学习 数据库 开源技术 OpenMLDB

OpenMLDB: 一文了解窗口倾斜优化技术细节

第四范式开发者社区

机器学习 数据库 开源技术 OpenMLDB

有了这个告警系统,DBA提前预警不是难题

华为云开发者社区

数据库 监控 GaussDB(DWS) 智能监控 告警系统

钉钉宜搭3.0发布:易连接、酷数据、更安全

科技热闻

2.8 scroll-view介绍:在小程序中如何实现滚动锚定?(一)

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

【云管平台】多云混合云管理平台用哪个好?

行云管家

公有云 私有云 混合云 多云 云管理

2.12 滑动选择器:如何基于wxs自定义实现一个竖向的slider?

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

DTCC 干货分享:Real Time DaaS - 面向TP+AP业务的数据平台架构

tapdata

OpenMLDB:一文了解带参数查询语句(paramterized query statement) 的细节

第四范式开发者社区

机器学习 数据库 GitHub 开源 OpenMLDB

2.7 可移动容器及可移动区域介绍:如何实现单条消息左滑删除功能?(二)

《微信小程序全栈开发实战》专栏讲师

微信小程序专栏

开发者测试你必须知道的7件事

华为云开发者社区

软件 开发者 测试 代码 测试工程师

阿里巴巴10个顶级开源项目,确定不来看看?

Java 阿里巴巴 开源 面试 项目

对象存储 S3 在分布式文件系统中的应用

对象存储 S3 在分布式文件系统中的应用

搜索引擎中的 web 数据挖掘_技术管理_DataFunTalk_InfoQ精选文章