当前位置: 首页 > news >正文

Spark大数据分析实战【1.7】

10.4 案例:Newsgroups新闻的主题分析

本节当中,我们将以Newsgroups的新闻数据作为示例,讲解如何对新闻数据进行主题分析。

10.5 本章小结

本章介绍了主题模型的基本概念、原理和常见的求解方法,并且给出了Spark中与主题模型相关的类型和函数。同时给出了Spark求解LDA模型的示例,以及基于Newsgroup真实新闻数据集的主题聚类和分类算法案例。

第11章 构建分布式的搜索引擎

搜索引擎是互联网时代最重要的应用之一。几乎每天都要使用搜索引擎从海量的互联网当中查找自己需要的网页。搜索引擎是一项非常复杂的技术,其中包含很多机器学习的知识。

在本章中,将使用Spark来实现搜索引擎的搜索结果排序算法,包括如何计算网页的PageRank值和实现基于Ranking SVM的查询相关排序算法。除了需要用到MLlib之外,将介绍另一个重要的库GraphX。

11.1 搜索引擎简介

搜索引擎,通常指的是收集了互联网上海量的网页并对网页中的关键词进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过搜索引擎的排序算法进行排序后,这些结果网页将按照其重要性和与搜索关键词的相关性,依次排列。

标准的搜索引擎通常可以分为4大系统,如图11-1所示:下载系统、分析系统、索引系统和查询系统。

下载系统也通常被称为网络爬虫(Web Crawler),搜索引擎通过下载系统在互联网上发现新网页并抓取网页文件。下载系统从已知的网址入口出发,访问这些网址并且抓取网页文件。同时,搜索引擎通过爬虫跟踪网页中的链接,在不同的网站之间跳转,从而发现并且获取更多的网页。

分析系统的主要功能包括对抓取网页进行分解,定位网页标题和正文,进行中文分词和去除重复网页等。被分析系统处理过的网页将通过索引系统保存在索引库当中。

索引系统存储并索引了数以亿计经过了分析处理的网页。根据用户提供的检索关键词,高性能的索引系统能够在秒级时间内提供包含检索关键词的网页结果。

查询系统能够对用户提交的搜索关键词进行快速处理,如中文特有的分词处理,去除停止词,判断是否需要启动整合搜索,判断是否有拼写错误或错别字等情况。同时,查询系统需要对索引系统返回的包含查询关键词的结果网页进行排序,将最相关、最可靠的信息返回给用户。

11.2 搜索排序概述

排序是众多信息检索系统中的一个核心问题,如文档检索、协同过滤、关键词提取、命名实体识别、电子邮件路由、情感分析、产品评价和反垃圾等。所谓搜索排序,就是对搜索关键词的索引结果按照其重要性和搜索相关度进行排序。一个常见的搜索排序问题如图11-2所示。当用户输入查询词“Spark数据分析案例”,搜索引擎首先将查询词做中文分词处理,得到关键词“Spark”“数据”“分析”“案例”。然后搜索引擎通过关键词索引找到包含这些关键词的网页P={page1,page2,…,pagen},并通过排序算法按照网页的重要性和查询相关性将网页的排序结果pager1>pager2>… >pagern返回给用户,尽量将满足用户真实需求的网页排在搜索结果的前面。

通常按照排序模型之间是否有查询关系,将排序模型分为两类:查询相关的排序模型和查询无关的排序模型。查询无关的排序模型,是指依照文档的重要程度对文档进行排序,而与具体的查询无关,如PageRank模型,HITS模型,TrustRank模型等。而查询相关的排序模型,是指相对一个查询,按照与查询的相关程度,对文档进行排序,已经提出的模型有布尔模型(Boolean Model)、向量空间模型(Vector Space Model)、Okapi BM25模型等。

11.3 查询无关模型PageRank

PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术。而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。Google的创始人拉里·佩奇和谢尔盖·布林于1998年在斯坦福大学发明了这项技术。

PageRank模型依靠如下3个指标评价网页的重要性。

1)认可度越高的网页越重要,即反向链接(Backlink)越多的网页越重要。

2)反向链接的源网页质量越高,被这些高质量网页的链接指向的网页越重要。

3)链接数越少的网页越重要。

PageRank采用如下公式计算:

http://www.jsqmd.com/news/666667/

相关文章:

  • RetDec反编译工具终极指南:如何将二进制代码变回可读源码
  • 2026 开美发店须知!收银系统常见坑点大揭秘 - 记络会员管理软件
  • 【深度学习】NLP基石:从One-hot到Word2Vec的词向量演进之路
  • 电磁频谱的攻防博弈:电子战三大支柱(电子支援、攻击与防护)深度解析
  • Jimeng LoRA轻量测试系统:从部署到多版本对比全流程
  • Windows 11系统优化深度指南:如何通过Win11Debloat实现50%性能提升与完全控制
  • 泉盛UV-K5/K6固件刷机指南:解锁LOSEHU固件的10大隐藏功能
  • STK8321传感器配置全解析:从寄存器手册到可运行的C代码(SPI接口篇)
  • 别再手动调样式了!用uni-app的tabBar配置,5分钟搞定小程序底部导航栏
  • seL4微内核实战入门:从零搭建开发环境与编译调试
  • 从靶场到实战:聊聊RCE漏洞那些“花式”绕过姿势(以CTFHUB为例)
  • 区块链跨链技术实现原理
  • TranslucentTB 透明任务栏终极指南:从安装到深度定制
  • 高等数学-导数与微分(微分中值定理)
  • 如何快速使用猫抓插件:面向初学者的浏览器资源嗅探完整指南
  • 汇川AM系列Modbus通信实战:从硬件端口到变量映射的完整配置指南
  • Docker小白也能搞定:用Prowlarr一站式管理你的影视资源索引器(附Sonarr/Radarr联动教程)
  • 华硕笔记本性能优化神器:3分钟掌握G-Helper核心使用技巧
  • 别怕数学!用PyTorch和NumPy实战,5分钟搞懂AI里的线性代数(附代码)
  • PX4+ROS无人机仿真入门:手把手教你用键盘控制Iris机型(附常见问题解决)
  • 当 ROS2 遇上事件驱动:从 epoll 到 Executor 的调度哲学
  • GoB插件终极指南:10分钟掌握Blender与ZBrush无缝桥接技术
  • 【技术拆解】煤矿井下常用开关:从型号铭牌到控制回路的实战解析
  • OpenClaw如何部署?2026年4月本地配置Coding Plan零基础流程
  • 嵌入式开发设计思考
  • 从RNN到LSTM:用PyTorch动手实现一个多层情感分析模型(实战代码+数据流解析)
  • DDR控制器内部调度机制深度解析:从AXI到DFI的转换艺术
  • 不止于调试:将LCD屏打造成Linux系统交互终端(基于Buildroot配置tty1登录)
  • GD32F303硬件设计避坑指南:PWM引脚REMAP的那些教训
  • WAN2.2文生视频镜像多GPU部署:双卡并行生成提升吞吐量2.3倍实测报告