大数据搜索引擎原理分析及编程实现(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-30 14:10:02

点击下载

作者:刘凡平

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大数据搜索引擎原理分析及编程实现

大数据搜索引擎原理分析及编程实现试读:

内容简介

本书向读者提供了一套完整的大数据时代背景下的搜索引擎解决方案,详尽地介绍了搜索引擎的技术架构、算法体系及取得的效果,以模块化的方式进行组织。着重介绍了机器学习在搜索引擎中的应用,包括中文分词、聚类、分类等核心的机器学习算法,并结合示例加以介绍和分析,使读者可以更好地理解机器学习在搜索引擎中的价值。还阐述了大数据给搜索引擎带来的新特性,结合目前大数据分析的主流工具,在搜索引擎中构建知识图谱,以及进行日志反馈学习机制,使得搜索引擎更加智能。

本书适合作为互联网行业从业者的技术参考书,也适合作为搜索引擎爱好者的参考读物。前 言

搜索引擎本身作为一门综合性的互联网技术,在行业中一直具备较高的关注度。随着最近几年大数据的发展,搜索引擎的关注度越来越高,原因在于搜索引擎技术是大数据应用最前线的领域,也是最容易产生价值的大数据应用。大数据存储、大数据计算都是从搜索引擎中衍生出的新领域。目前搜索引擎技术的发展不仅以大数据为基础,还利用分布式实时计算对数据进行高性能处理,以及利用机器学习将数据变得更具价值。在行业中吸引了包括搜索研发工程师、算法研发工程师、大数据分析工程师、自然语言处理工程师、计算平台架构师、数据挖掘工程师等行业各类精英的关注,这些工程师占据了整个互联网研发体系的50%~60%,在BAT中,甚至超过60%的是研发人员。

这类群体薪资水平处于互联网研发人员中较高水平,以猎聘网公布的数据显示,北京地区搜索引擎研发工程师年薪为35万~60万元,大数据工程师年薪为20万~25万元,大数据架构师年薪为40万~70万元,等等。也正是由于薪资水平处于较高位,很多互联网相关从业者也积极关注大数据搜索引擎领域动态。

本书通过介绍大数据下的自然语言处理框架、大数据存储引擎、搜索引擎的分布式实时计算、高性能可扩展爬虫,以及利用大数据构建知识图谱、基于大数据日志的搜索引擎反馈学习等相关信息,不仅使读者对当代搜索引擎研发体系有一定的认识,还可以使读者在搜索引擎领域及大数据领域进行深入思考。本书特色

本书以当前搜索引擎主流技术为基础,密切结合前沿技术发展趋势,行文通俗易懂,由初步的原理性了解到各模块应用示例,并结合分布式存储、实时计算等,向读者提供了一套完整的大数据时代背景下人工智能搜索引擎的解决方案。(1)内容循序渐进、行文有条有序地介绍搜索引擎知识。

本书充分考虑了不同层次的读者对搜索引擎的理解程度,因此本书由简入深、独特的技术写作视角符合广大读者对于技术类读物的理解需求,使得读者能够在掌握搜索引擎基础的情况下,不断按照搜索引擎的设计深入理解。(2)技术前瞻性强,注重最新主流技术在现代搜索引擎中的应用。

本书充分利用了最新技术发展的应用成果,在自然语言处理的基础上不仅结合大数据分析,还包括分布式计算、机器学习、知识图谱等当前大数据应用与分析处理的主流技术,摒弃了传统过时的研发体系及算法。本书中相关研发成果在当前甚至在未来3~5年,都具有实际意义。(3)将技术理论与应用范例结合,具备较高的商业实用价值。

本书内容紧密结合当前一线工程师工作研究成果,将众多的技术理论以实际工作经验的方式展示应用效果。本书介绍的内容也广泛结合工作中的应用示例,并以搜索引擎工程实践的脉络流程介绍技术要点,使读者在短时间内能够掌握当前搜索引擎研发的技术理论。本书结构

本书按照由浅入深、循序渐进的顺序对现代搜索引擎原理和实现进行介绍。全书分为10章,各章的主要内容如下。

第1章针对搜索引擎发展的过去、现在、未来的相关概要介绍,以及现代搜索引擎与大数据、人工智能的相互关系,使广大读者能够在了解现代搜索引擎的背景之下,去了解本书的后续内容。

第2章是对搜索引擎原理与技术的初步分析,从模块方面大致介绍爬虫、索引、缓存等;从技术方面大致介绍自然语言处理、知识图谱技术、海量数据存储、分布式计算等。目的是使得读者对搜索引擎的体系结构、部分技术有一定认识,便于读者深入了解后续章节。

第3章从自然语言角度开始深入分析原理和实现,自然语言是搜索引擎进行文本处理的基础,其中包括分词、词性分析、语义分析、关键词抽取、核心句抽取、聚类分类等。读者将会从本章中获得当前主流的自然语言处理技术相关知识。

第4章主要是针对大数据存储引擎的介绍。大数据存储是搜索引擎最先遇到的问题,解决数据存储问题可以使搜索引擎在数据分析、索引构建、知识图谱等工作持续进行。读者在本章会了解到大数据存储引擎的架构体系、数据模型、数据压缩、负载均衡等。

第5章介绍了分布式实时计算。由于搜索引擎处理的是海量数据,数据分析必须依靠具有较强数据处理能力的计算平台,因此搜索引擎通过分布式实时计算去处理大数据并在尽可能短的时间内返回处理结果。本章中,读者会了解到分布式实时计算设计架构、负载均衡及通信设计等相关知识。

第6章对爬虫进行了深入分析。读者在本章中将会深入理解分布式可扩展爬虫的体系架构,以及对网页如何进行解析,并抽取出结构化的数据信息。本章还涉及链接去重、网页去重、广告识别等相关算法原理。

第7章详细介绍了知识图谱构建。知识图谱是智能化搜索引擎重要的组成部分,利用大数据分析构建出较为合理的知识图谱信息是当前主流的方式。读者将会从本章中深入了解到知识图谱的详细构建过程,以及利用机器学习原理对知识图谱中的实体抽取、关系抽取等相关技术进行。

第8章详细分析了索引构建机制。索引的设计与构造是搜索引擎能够进行快速检索的核心要件,主要针对文件检索的倒排索引与用于智能提示的字典树索引。本章不仅对倒排索引做了深入分析,对倒排索引的压缩、分布式存储等也做了详细介绍。

第9章深入分析了搜索引擎的整个对外服务工作流程。包括大数据分布式缓存、搜索智能提示、个性化搜索、图片搜索、搜索与广告等。读者通过本章可以详细了解到文本纠错算法、动态摘要算法、网页排序算法及搜索引擎的评价体系。

第10章探讨和分析了搜索引擎日志与搜索引擎本身的关系。搜索引擎日志记录了用户与搜索系统交互的整个流程。通过日志挖掘,不仅可以发现用户的自有特征和行为规律,还可以有效地帮助搜索引擎提升性能和效果。日志作为搜索引擎的核心数据之一,一直使搜索引擎技术中的各类算法不断向前发展。读者通过本章将学会通过搜索引擎日志分析用户特征、用户的部分搜索意图等相关知识。读者对象

• 适合对自然语言处理及机器学习应用领域有兴趣的读者。

• 适合对现代搜索引擎相关算法有兴趣的读者。

• 适合对大数据分析、数据挖掘应用有兴趣的读者。

• 适合互联网行业的不同层次从业者。

• 适合从事搜索引擎优化的网络营销读者。

• 适合高校中学习计算机、软件工程等相关专业的读者。第1章引 论

每个时代都有属于每个时代的故事,每项技术的发展历程,总是与社会的发展紧密结合,似乎验证着技术服务社会这一理念。社会的发展刺激着各行各业技术的不断向前推进,尤其在互联网大数据时代,搜索引擎技术发展越来越快。1.1 搜索引擎的过去

1990年年初虽然万维网还没有诞生,但是搜索引擎的鼻祖已经诞生,它没有响亮的名字,但作为一个搜索工具,它已经可以发现各个FTP主机中的文件。再到后来属于搜索引擎的各个时代来临,包括信息的人工分类时代、相关性检索时代、网页链接价值检索时代。(1)人工分类时代。搜索引擎最初的样子有点像一个导航网站,里面对网站进行分类,通过目录导航。但是由于在当时社会中,网站数量本身就比较少,用户和搜索引擎之间没有请求交互,此时的搜索引擎仅仅作为信息展示的载体。在人工分类时代,搜索引擎导航目录的整个构建过程都是通过人工完成的。(2)相关性检索时代。从这个时代开始,搜索引擎具备了和用户交互的能力。用户通过入口提交搜索请求。但是搜索引擎只考虑了用户搜索词与结果的相关程度,仅将文本相关度较高的结果返回给用户。虽然此刻的它依然比较简单,但却是现代搜索引擎的开始,或者说是搜索引擎历史上的一次重要跨越。(3)网页链接价值检索时代。这个时代的搜索引擎,已经开始分析网页链接给搜索引擎带来的价值,开启了搜索效果评估的新篇章。以Google为代表的搜索引擎公司在最初的网页链接价值检索中在搜索效果和商业价值上取得了巨大成功,引领着更多搜索引擎公司挖掘网页链接的深层次价值。1.2 搜索引擎的现在

过去代表着历史,但历史终将是尘埃。随着互联网技术的不断发展,现在的搜索引擎已经是具备个性化、多样化、智能化、社会化的现代搜索引擎。(1)个性化。指根据用户特征进行定制化的搜索服务,核心在于发现和理解用户的搜索行为,以及理解隐藏的用户特征价值,从而辅助用户进行搜索,使得个性化搜索满足用户的搜索需求。(2)多样化。用户的一次搜索不再是仅仅局限于网页文档的搜索,更多的信息类型(如音乐、图片、视频等)也会根据用户的搜索需求适机展示。(3)智能化。现代搜索引擎基本特性之一,越来越多的搜索引擎从搜索结果的数据量上转换为对搜索结果精准智能化的重视。智能化搜索通过用户的交互,最大限度地了解用户意图,并给予最佳排序结果甚至最终答案。(4)社会化。在搜索引擎集中研究网页之间关系、链接之间关系的时候,社会化试图通过把用户加入,研究在搜索过程中人与人、人与信息之间的关系。用户可以通过共享的方式将知识分享出来,以使得在搜索过程中结果更加准确,可通过问答、共享百科、圈子讨论等方式实现。社会化依赖于具体的社交平台,通过这些社交平台进行知识分享,然后搜索引擎将这些信息进行索引。社会化搜索是Web 2.0中诞生的产品,在Web 2.0诞生不久,各类百科网站、博客网站、问答网站、交友分享社区层出不穷,经过多年的发展,它们将互联网信息进行了一个高度的总结和扩展,社会化搜索是对搜索引擎利用Web 2.0中的互联网产品对搜索服务和体验的一次改进。随着移动互联网的兴盛,社会化搜索已经更加明显。

现在,无论是兴盛的移动搜索还是被视为日渐衰落的传统PC搜索,从技术角度看,它们的本质并没有太多改变。当前的搜索引擎已经发展出全网搜索引擎、垂直搜索引擎、元搜索引擎三大重要分支。(1)全网搜索引擎。网民使用最多的都是全网搜索引擎,当前几乎成为整个互联网的入口,面向所有网民使用。当前在全网搜索引擎领域各大厂家竞争激烈,如百度、搜狗、好搜(奇虎)等互联网公司。(2)垂直搜索引擎。垂直搜索引擎的数据限于特定垂直领域。垂直领域是针对某一个行业或者细分领域的,这些垂直领域是全网搜索引擎的子集。垂直搜索引擎的采集数据源具备针对性,面向特定领域或特定人群使用,如学术、图片、视频搜索等。(3)元搜索引擎。是在用户输入搜索词之后,根据其他多个搜索引擎合理组织出新的数据,从而返回组织后的结果,元搜索引擎没有自己的爬虫。

当前的搜索引擎的输入方式也发生了重要变化,不仅可以通过文本输入,还可以通过图片、语音等输入。尤其语音输入,是当代搜索引擎在移动互联网发展下的重要变化。随着语音识别技术的发展,给语音搜索发展创造了机会,从而产生了更加便捷的搜索方式,尤其是在移动搜索方面。

知识图谱是通过对常识、领域知识等建立的一种关系图结构。知识是对信息总结的描述,搜索引擎之所以会逐步发展到知识图谱,是因为世界并不是由文字组成的,而是通过各个实体之间的相互作用而形成的,因此搜索引擎从研究文本本身,转向于研究自然界知识实体之间的关系。每一个知识实体或者概念知识都在图谱中拥有全局唯一的标识。知识图谱目前主要在互联网大数据领域、图书情报领域(如引用分析、思维导图、复杂社会网络等领域)的发展比较迅速,这些领域基本上是以互联网大数据领域发展为基础。如果未来的搜索引擎是机器人的大脑,那么知识图谱则是这个大脑的知识库,任何决策都依赖于此知识库。当前各大互联网公司已经在大力发展知识图谱相关项目,可谓战略意义重大。

在搜索引擎使用知识图谱之前,使用的是名为知识卡片的中间产品,但是很快就成功过渡到知识图谱。从知识图谱理解知识卡片即每一个知识图谱上的实体,都拥有它自己的描述信息。

当前搜索引擎的数据除通过分布式爬虫获取之外,还通过开放平台使得数据更具实时性和有效性,例如,针对火车票、飞机票等的搜索,都是基于搜索引擎开放平台。

此外,在大数据和云计算的发展推动下,更多的互联网厂商也逐步涉足搜索引擎垂直搜素领域,如电商、房地产等领域。这些垂直搜索引擎与丰富的商业模式结合,使得搜索引擎更加专业和智能化,也正因如此,搜索引擎与传统领域相互结合,成为了“互联网+”的重要体现之一。1.3 搜索引擎的未来

在过去30年,互联网Web技术从Web 1.0进化到Web 3.0。Web 1.0打开了人与网络,网民可以自由地浏览互联网信息。Web 2.0又称为社交网络(Social Web),产生了大量以社交为主的服务网站,如开心网、微博、人人网。当前的Web 3.0更是以大数据和智能为主题的时代,不仅对搜索结果追求更加极致,而且对于多媒体信息的搜索需求已经开始急剧增加。即将蓬勃发展和到来的Web 4.0将会是无处不在的网络,搜索引擎将会在这个无处不在的网络中,发挥其更加独特的作用。

从笔者角度来看,未来的搜索引擎应当是“人工智能”化。当前的搜索引擎在个性化、智能化、垂直化、简单化、社交化等方面都已经比较成熟。这必将使得人们对信息的追求发生改变,甚至希望搜索引擎成为每一个人的“智能伴侣”。因此,笔者认为搜索引擎是开启未来人工智能世界的一把钥匙。

未来的输入方式也不再限于文本、语音、图片等输入,还可能包括体温、温度、情感等各类生活环境的输入。输出方式也会变得多种多样,具备更强的交互性,如动态媒体输出、文字描述的动画展示理解等。

人类之所以比其他生物聪明,在于人类善于“归纳、总结、学习”,而这些都是当下搜索引擎试图做得更好的方法。搜索引擎将会从一个互联网工具转变为人工智能平台,移动互联网、物联网、PC互联网领域,搜索引擎都可以与各大产业相互结合,以帮助其解决问题。未来的机器人时代定会是以搜索引擎为基础的大脑控制系统,目前来看其他一般系统则很难完成,原因在于机器人和人一样都在随时学习,而学习的必经途径就是搜索引擎,通过搜索引擎发现信息、拓展知识、自我学习,而机器人也会一样。俗话说“授人以鱼,不如授人以渔”,而从机器人角度看,这个“渔”不正是未来的搜索引擎吗?

从现代社会来看,年轻人经常“提笔忘字”,他们似乎在失去部分记忆,而且越基础的知识越容易失去。偶尔甚至连最基本的算术计算,现在都使用计算器或者搜索引擎完成,在未来我们的更多工作会交给搜索引擎,人类的意识和思考将会更加依赖搜索引擎。1.4 大数据与搜索引擎

搜索引擎一直在海量数据中挖掘最优质信息为网民提供最佳服务。在大数据时代,新的数据给予搜索引擎新的篇章。大数据的“大”决定了数据大而全面的特性,在传统计算模式中,通过抽样数据分析得到的结果已经不如通过大数据分析得出的结果精确。大数据挖掘几乎可以拿到任何想要的数据信息。搜索引擎经过最近十几年的发展,已经在文本分析、数据挖掘、图谱构造、语义分析等方面有了丰富的积累,结合现有大数据将会给现有搜索技术带来全方位提升。这些改变不仅可以帮助搜索引擎找到更加准确的答案,还有助于搜索引擎个性化精准分析。1.4.1 搜索价值提升

现代的人类学习、生活、工作都已经离不开信息,从过去的信息大爆炸到如今的数据大爆炸,搜索引擎不仅能帮助用户从海量信息中找到结果,更是一种互联网服务。搜索引擎成为一个数据工厂,通过大数据挖掘,抽象结构化有价值的信息,加速信息流动,促使搜索为用户提供更多服务及更高价值。

让用户对搜索结果进行筛选的时代很快就会被抛弃在时代的浪潮中,当前大数据时代研究最多的深度学习也是研究搜索引擎能够直接命中用户答案的途径之一。现在的搜索主要是基于互联网中已经存在的数据,返回结果。但是在大数据背景下,搜索引擎可以发现互联网中不存在的信息。搜索引擎通过自我学习,给出一个参考,例如,用户搜索“下周股市会大涨吗?”在互联网中一定不会有“下周股市会大涨”的确切数据,但是会有很多相关性点评,很多业内人士对下周股市的看法,深度学习可以通过汇集行业相关人士看法、行业市场状况等信息,为网民提供可靠的参考信息。

大数据的发展使得搜索引擎成为更加开放的搜索平台,伴随着计算机视觉、深度学习等领域的发展,社会信息将会发生巨大变化,搜索引擎需要对外开放其大数据存储、数据分析能力、智能化处理等,吸引更多的开发者、企业,以弥补搜索引擎在外部资源中的不足,从而促使其不断提升搜索价值。1.4.2 用户价值提升

用户在互联网中留下的任何数据,都已经成为搜索引擎研究的数据对象,搜索引擎通过基于海量数据的机器学习、统计学、模式识别等技术,从大数据中提取出其中隐藏的有效信息,逐步成为用户的知心朋友。

用户获得信息的方式不再仅仅是主动的搜索,还包含被动的信息接收。当用户在搜索过程中寻找相关信息时,搜索引擎通过大数据分析可以为用户提供解决问题的更多可能性,实现从主动寻找答案转变为被动接受答案。1.5 大数据与人工智能

大数据使得人工智能技术开始新的发展,而人工智能技术也深入影响着搜索引擎。例如,传统搜索方式中,通过搜索尽可能显示全面的信息,而现在只需要显示满足用户需要的信息即可。1.5.1 人工智能发展

大数据人工智能是建立在大数据基础之上的人工智能技术。人工智能(Artificial Intelligence,AI)是对人类的意识、思维及信息处理过程的模拟。曾经,很多人都说人工智能“已死”,一直处于停滞不前的状态,但是伴随着近几年大数据的发展,人工智能似乎“死而复生”,获得了新的发展机遇。而搜索引擎利用人工智能技术的原因是希望其搜索结果更加精准,甚至直接命中答案。Google也在不断利用人工智能技术改善它的搜索技术,还开源了其机器学习系统(代号:TensorFlow),相似机器学习系统还有Facebook开源的Torch、微软开源的DMTK、IBM开源的SystemML。

人工智能技术是计算机科学发展的重要分支。从1956年达特茅斯会议中诞生,人工智能技术经历了两次大起大落,它的第一次黄金年代是1956—1974年,这个阶段中计算机逐渐可以解决代数应用相关问题,LISP语言也在1960年诞生,是令人兴奋的一个开端。但是后来对于人工智能的过度乐观,研究项目甚至也不能如期完成,研究者的项目资助也出现了问题,甚至连哲学家也开始反对人工智能。1974—1980年是人工智能发展的低谷期。

从历史的角度分析,每一次失败,都在为下一次发展做铺垫,技术的发展似乎如过山车一般,后来的专家系统程序在人工智能领域发展势头较好,得到了不少企业的认可,使得从1980年开始,人工智能技术似乎迎来了新的繁荣。但是也再次验证期望和失望是正比例相关,好景不长,仅仅7年之后,人工智能的冬天就又来到。这将注定是好事多磨,直到20世纪90年代中期以后,人工神经网络研究取得新进展,以深蓝战胜国际象棋的世界冠军为里程碑,再加之计算机性能随着摩尔定律疯狂似的增长,似乎又进入了新的人工智能时代,尤其在当前的大数据和云计算时代,数据的多样性和丰富性更加显现,数学模型和算法也在不断地改进,人工智能仿佛迎来了它的第三次繁荣。

2016年3月,Google的人工智能围棋程序AlphaGo对战世界围棋冠军、职业九段选手李世石,并以4:1的总比分获胜,人工智能再次展现出蓬勃的生命力,未来充满了无限的想象。

在当前技术发展趋势下,人工智能(弱人工智能)已经不刻意去研究模拟人脑,而是利用大数据通过计算机视觉、数据挖掘、统计理论,深化演绎、推理、归纳去解决现实中的各类问题。人工智能对互联网的发展和帮助是不言而喻的,如现实中的指纹识别、人脸识别、视网膜识别、专家系统等,都是人工智能的实际应用案例。

任何技术的发展之路都是崎岖的,人工智能则是典型的代表,从科学技术发展史来看,技术解决人类的需求是永无止境的,无论现在的人工智能发展到哪个水平,它对于搜索引擎的促进作用都是潜移默化的,两者在未来的发展中将更加紧密相连。机器学习作为现代搜索引擎的基本工具,在搜索引擎的多样性、个性化、准确性方面有着举足轻重的作用,成为当代搜索引擎智能化的标志。因此对待人工智能技术,以一种坦然和宽容的方式,它的进步焦点不在于它能否超过人类的智慧,而在于其是否帮助人类更好地生活。1.5.2 人工智能技术

大数据人工智能技术在应用层面包括机器学习、人工神经网络、深度学习等,它们都是现代人工智能的核心技术。在大数据背景下,这些技术得到了质的提升。(1)机器学习。又称为统计学习理论,通过数据分析获得数据规律并将这些规律应用于预测或判定其他未知数据。机器学习目前已经广泛应用于数据挖掘、自然语言处理、语音识别等,尤其在搜索引擎领域,在海量数据面前机器学习的方法成效显著,具体算法包括决策树、感知器、支持向量机、马尔科夫链、最近邻居法等。(2)人工神经网络。是机器学习的一个重要算法,人工智能技术中,人工神经网络(Artificial Neural Network,ANN)是常用的方法之一,是一种通过模仿生物的神经网络结构和功能的数学模型,也是一种自适应的计算模型,通过感知外部信息的变化,改变系统内部结构。人工神经网络由许多神经元组成,神经元之间相互联系构成信息处理的庞大网络。假设做一件事情有多种途径,那么神经网络会告知用户哪一种途径是最佳方式。人工神经网络的优势在于,它是一个能够通过现有数据进行自我学习、总结、归纳的系统,能够进行推理产生一个智能识别系统。(3)深度学习(Deep Learning)。它是机器学习的重要分支,深度学习的模型框架已经很多,如深度神经网络、卷积神经网络、递归神经网络等,作为多层非线性神经网络模型,它拥有强大的学习能力,与大数据结合,再利用云计算、GPU并行计算,使得其在图形图像、视觉、语音等方面获得较高评价,因此深度学习被大众视为人工智能前进的重要一步。

除此之外,人工智能的基本技术包括自然语言处理、知识表示与知识库技术、推理技术、搜索技术(问题求解)等。而这些技术也是当前搜索引擎的基础,结合大数据它将为搜索引擎带来潜移默化的作用。(1)自然语言处理。用户常常通过不断更换调整搜索词以获得更好的搜索结果,大数据时代背景下的搜索引擎更需要了解用户的搜索意图,以减少用户的搜索次数。而自然语言处理即是帮助搜索引擎理解用户意图的重要方法之一,自然语言处理不仅是对用户的搜索进行分词,还需要做到语义分析,甚至信息拆解。自然语言在搜索引擎中的处理过程不仅针对用户的搜索,还包括对网页文档的分析、表述观点分析等。虽然目前自然语言处理中的一些模块已经做得很好,但是在大数据背景下自然语言处理还有很大的提升空间。(2)知识表示与知识库技术。其主要的目标是存储知识,一个好的存储方式可以让程序更加灵活。涉及的问题包括“知识的本质是什么”“如何表示知识”“表达方式是否通用”等。在搜索引擎中,知识图谱作为现在知识表示和知识库技术的呈现,虽然研究者不确定知识图谱是否是知识表示和知识库技术的最终表现形式,但至少知识图谱已经为搜索引擎带来了巨大的改变。(3)推理技术。推理作为人类思维中解决问题的主要思考模式,主要利用知识及知识之间的关系,获得推导信息的过程与结论。推理包括演绎推理、归纳推理和默认推理。例如,已知明明的爸爸是大明,而大明的爸爸是老明,根据已知条件,能够推理和判定得出明明的爷爷是老明。(4)搜索技术。搜索技术不是搜索引擎技术的简称,而是人工智能领域中的专业术语,实质是一个问题求解的过程,简单的如“八皇后问题”“九宫图”“河内塔”等,在实际算法中,类似包括“A*”算法,在传统算法或游戏中,搜索技术在寻求一个问题解决的最佳办法,搜索引擎也一样,在给用户寻找最佳答案。1.6 本章小结

搜索引擎从历史中走来,向未来迈步跨进,在不足30年的时间里,取得了高速发展。但目前的搜索引擎依然不能完全满足用户需求,未来的搜索引擎将会朝着更加智能,并结合知识与情景交互的方向发展,连接人与服务,为用户提供更加准确的搜索结果和最适合用户的数据。在大数据背景下的互联网时代,搜索引擎将是改变人类生活的引擎。搜索引擎通过大数据人工智能技术不断提升其“智商”,逐步成为每一个人的“伴侣”与信息专家,但是无论怎样发展,它们都需要技术的强大支持。本章通过对搜索引擎历史的介绍及大数据、人工智能的相关分析,使读者对搜索引擎能够产生初步的了解。第2章搜索引擎原理与技术

互联网的数据每天都在不间断增长,搜索引擎对日新月异的互联网数据进行抓取获取,并经过数据整理之后,为用户提供搜索服务,而这些过程都需要较好的工作流程和技术体系作为支撑。理解搜索引擎的工作原理和基本技术是认识搜索引擎的基础。2.1 基本工作原理

搜索引擎技术不同于传统的全文检索技术,虽然搜索引擎技术是基于全文检索的技术,但是也存在不同点,包括对数据的处理量、处理性能、体系结构等方面。(1)数据的处理量。搜索引擎技术面向的是互联网海量数据整合,并提供检索服务,而全文检索服务针对的是小规模数据,例如对企业内部数据进行的检索服务。(2)处理性能。搜索引擎技术不仅仅需要快速获得互联网信息,还需要在最短的时间内反馈用户的请求。而全文检索技术不仅大多数据已经存在,而且数据差异性较小。全文检索技术仅是对数据进行全文索引,对检索时间性能要求也没有搜索引擎高。(3)体系结构。搜索引擎是一套完整的技术体系,包括爬虫服务、索引服务、缓存服务、搜索服务、日志服务等一系列技术,而全文检索更多针对于索引服务与搜索服务。

正是由于上述不同点,从工程应用角度看,搜索引擎技术的难度远远大于全文检索技术。对于搜索引擎的工作原理,简单地说,搜索引擎后台首先进行互联网信息采集,建立结构化网页数据库;然后对数据建立索引并构建索引库;在用户访问搜索服务器之后,先通过缓存服务器获得可能缓存的搜索数据,若缓存服务器中未命中相关数据,则通过后台建立的索引查询出与用户搜索相关的网页,最后利用网页存储数据库在搜索结果中显示网页标题及部分内容摘要等信息。图2-1所示为搜索引擎工作原理的简单结构示意。图2-1 搜索引擎工作原理的简单结构示意2.2 基本模块结构

在搜索引擎的结构体系中,主要包含网络爬虫服务(Web Crawler)、索引服务、缓存服务、搜索服务、日志服务等几大服务模块。各服务模块之间相互影响,构成了搜索引擎运作的整个流程。2.2.1 爬虫服务

网络爬虫又称为网络蜘蛛(Web Spider),是一种基于互联网的自动化浏览程序。互联网通过网页链接相互之间产生关联,形成巨大的网络图结构。网页链接一般简称为URL,实质上是互联网中的统一资源定位符,是互联网资源存放位置的标准地址。因此,爬虫作为搜索引擎对数据获取的工具,通过URL对互联网进行尽可能广泛的遍历,使得搜索引擎拥有海量的互联网信息。普通爬虫的基本功能逻辑如图2-2所示。图2-2 普通爬虫的基本功能逻辑(1)爬虫从已经初始化好的网页链接队列中取出种子链接(如http://www.iveely.com等),通过这些种子链接不断地从互联网中获得新的网页数据。(2)通过网页链接下载相应网页数据,通过分析网页数据提取新的链接存储到链接的后续队列中,且将访问过的网页链接进行已访问标记。(3)依次不间断地从队列中获取链接并逐一访问,理论上链接集合中的所有链接均被访问后,爬虫将停止工作。

在爬虫不断获取新数据的过程中,也会定期更新一部分网页,使得数据尽可能保持时效性。

由于互联网数据不仅量大,而且更新频率也较快,然而一般爬虫每天下载的互联网资源有限,这意味着爬虫的设计者必须对爬虫架构进行优化,并且需要对资源下载方式及下载性能进行全面考虑,以保证在最短时间内下载更多的互联网数据信息。除此之外,还需要考虑互联网资源的持续可访问性,并对网页去重、链接去重等一系列问题深入思考。2.2.2 索引服务

索引是一种用于数据快速查找的数据结构,例如,本书的目录也是一种索引结构。索引的价值在于在最短的时间内获得最相关、最全、最深的信息集合。

对于搜索引擎而言,要在数十亿的网页中筛选出最合适的网页并不容易,虽然用户通过搜索词搜索互联网资源,若想通过依次遍历的方式获得最相关的网页,从工程应用角度来说则不具备可行性,主要是由于时间性能和资源访问的效率不允许。在对爬虫获取的网页进行分析的过程中,可以发现互联网上的网页与词语是一个巨大的矩阵,如表2-1所示。表2-1 网页与词语的对应关系矩阵

表2-1中,“×”表示该网页不包含对应词语,“√”表示网页包含对应的词语,例如,对于网页1则包含词语A、词语C、词语E,不包含词语B、词语D。如果用户在搜索词语B时,对网页1~5依次遍历,查找包含词语B的网页,显然不是一种可取之法,但是可以通过表2-1得知,与其从矩阵的纵向去寻找包含词语B的网页,不如横向比较词语B在哪些网页中出现过。这个横向比较的结构,即为搜索引擎索引结构中典型的倒排索引(Inverted Index)结构。

因此,为保证用户对互联网数据的快速有效访问,索引服务对爬虫抓取到的数据建立倒排索引。倒排索引是搜索引擎中核心的数据结构之一,尤其是针对海量数据的索引。倒排索引不仅实现简单,操作也极为方便。倒排索引的合理使用可以使得搜索性能、搜索相关性都能达到较为满意的期望。

索引拥有了良好的数据结构是作为快速访问的基础,面对庞大的网页数据,对其建立索引,还需要工程架构上的支持,采用分布式索引分析、索引存储等可以使得建立索引的时间和索引访问的时间事半功倍。当然为了保证良好的搜索体验,索引的更新也是开发者面临的巨大挑战。2.2.3 缓存服务

缓存服务在一般大型的分布式应用中都会涉及,目的在于减少磁盘I/O及网络带宽等资源消耗。搜索引擎作为典型的分布式应用,也毫不例外利用缓存服务对外提供更加优质的搜索体验。缓存服务在一般的分布式应用中的角色如图2-3所示。图2-3 缓存服务在一般的分布式应用中的角色

通过图2-3可以知道用户通过数据访问层进行数据访问时,数据访问层会通过缓存服务器去检查用户访问的数据是否在缓存中存在;如果不存在则会通过数据服务器进行数据获取操作;数据访问层检测到用户高频率访问某一数据时,会将该数据存入缓存服务器,以便用户下次快速获取。

同一般的缓存服务器一样,搜索引擎的缓存是搜索引擎对外服务过程中帮助用户快速进行数据访问的策略之一,目前几乎所有的搜索引擎都会采用缓存技术。搜索引擎的缓存机制是在用户的大量搜索词中,选择搜索流量较高的搜索词,将其放入缓存服务器,在下一次用户搜索相同搜索词时,从缓存服务器中直接获取数据,而不再访问数据后台。搜索引擎引入缓存服务的目的一方面是加快用户查询的响应速度;另一方面是减少服务器后台计算量,节省系统资源,以使得后台资源更加高效利用。

搜索引擎的缓存服务器不同于其他中小型缓存服务,主要搜索引擎的应用场景使得缓存对分布式要求及实效性要求更高。(1)分布式协同缓存。搜索引擎缓存的搜索信息不仅复杂多变,而且量非常庞大,采用简单的几台服务器做缓存服务,很难满足搜索引擎的缓存需求,间接性会导致后台请求压力过大等情况。所以搜索引擎需要采用分布式协同缓存的方式,并且对此分布式技术架构也提出了新的要求,需要保证稳定的提供缓存服务,否则不仅会导致用户搜索体验下降,更会导致搜索引擎流量安全。(2)时效性要求更高。实效要求不仅是指缓存服务器能够快速反馈结果信息,还要保证返回缓存结果具备时效性,也就是对缓存更新策略提出了更高的要求,例如,将一个月前缓存的搜索信息保存到今天是搜索引擎不能允许的。2.2.4 搜索服务

搜索服务包括搜索服务接口及搜索服务后台两方面。其中,搜索服务接口是用户与搜索引擎进行交互访问的接口,目前主流的搜索服务接口包括网页站点、移动应用和桌面助手。(1)网页站点。是基于传统的方式采用HTML搭建的网站,用户通过访问网站进行搜索获得搜索结果,如百度的http://www.baidu.com、好搜的http://www.haosou.com等。(2)移动应用。在移动互联网蓬勃发展的今天,各大搜索引擎公司均提供了基于移动操作系统的移动应用,提供搜索服务,如手机百度、搜狗搜索客户端等。(3)桌面助手。这是在智能时代一种新的搜索方式,如微软公司的桌面应用Cortana、百度公司的百度桌面应用等,都是基于桌面操作系统平台构建的应用软件。

但是无论采用上述哪种搜索服务接口,它们对应的搜索服务后台是一致的,搜索服务后台是将用户提交的搜索关键词获得返回相应数据信息结果,并对搜索结果的数据进行整理的过程,包括排序、个性化处理等。缓存服务也是在搜索服务接口访问搜索服务后台过程中产生作用,如图2-4所示。图2-4 搜索接口与搜索后台对应关系

搜索服务作为搜索引擎最重要的组成部分之一,用户对其非常敏感,不同于爬虫或者缓存服务,从用户角度看,不管爬虫多么强大、缓存多么高效,如果搜索服务不能达到预期,用户就会对该搜索引擎产生负面心理。一个具备极限用户体验的搜索服务接口和极致智能的搜索服务后台是一个商业搜索引擎的基础,目前大多数搜索引擎公司在搜索交互及搜索服务后台智能化方面不懈努力。2.2.5 日志服务

日志并不是搜索引擎内部主动产生的数据,属于搜索引擎的外部数据。用户在搜索引擎上每天产生大量的搜索记录,这些搜索记录包括搜索词与搜索词之间的关系、搜索词与用户之间的关系、搜索词与点击情况的关系等,而所有这些情况称为搜索日志。

日志服务是对用户产生的搜索日志进行进一步分析,为提供更好的搜索体验及搜索引擎的技术自我升级提供保障。因为没有任何一个搜索引擎在刚诞生的时候就是完美的,更何况互联网数据日新月异的变化。日志服务对于实事焦点信息分析、增进对用户的了解、完善搜索技术三个方面拥有较好的帮助。(1)实事焦点信息分析。通过日志可以知道在某些事件范围内,网民最关心的事件焦点、最热门的电视剧、最爱玩的游戏,甚至还可以分析出最新出现的网络新词、网络热词等。(2)增进对用户的了解。用户不间断地通过搜索引擎产生搜索行为,他们的行为点点滴滴都被记录,搜索引擎通过分析用户的行为,不断增加对用户的了解,为用户推荐更好的搜索结果。(3)完善搜索技术。排序是搜索引擎中非常重要的组成部分,但是搜索引擎在最初很难发现当前的排序是否能够满足用户的需求,因此通过用户的日志分析,可以计算用户在使用相关搜索词时,对返回的排序结果是否达到了期望,如果没有达到期望,则不断反馈学习调试,最终使搜索技术不断完善。

在大数据时代,需要对日志进行分析并且达到了解用户、搜索技术自我完善的目的,仅仅是普通的数据分析,还不能满足。需要通过一定的分析模型及大数据处理平台,才能更加有效地分析出准确结果。2.3 技术概要

搜索引擎中各大服务模块构成了搜索引擎的工作流程,但是每个服务模块需要正常运作,还需要强大的技术支撑,这些技术主要包含自然语言处理、知识、图谱海量数据存储、分布式计算及搜索排序等,其中的每项技术都会对搜索引擎的搜索结果产生非常重要的影响。2.3.1 自然语言处理

自然语言处理(Natural Language Processing,NLP)是人工智能领域与语言学的交叉学科,目的在于让计算机能够认知人类语言。在搜索引擎技术中自然语言处理主要用于海量数据的文本挖掘。

在搜索引擎获得海量互联网数据之后,利用大数据分析原理及自然语言处理对数据进行文本挖掘,以发现更多具有价值的信息。文本挖掘主要分为文本分析及特征分析。文本分析包括分词技术、词性分析、语义分析、依存句法分析和句子相似度等。特征分析包括文本语种检测、文档核心句子提取、文本关键词提取、文本情感分析以及文本聚类和分类等。文本挖掘流程如图2-5所示。图2-5 文本挖掘流程

文本挖掘中采用的各大自然语言处理模块的具体含义如表2-2所示。表2-2 文本挖掘中采用的各大自然语言处理模块的具体含义自然语言处含 义理子模块中文分词对中文句子进行分词处理,将完成一句话处理为词语的集合英文分词将英文进行词形还原,并将英文句子拆分为一个一个单词的形式词性分析主要针对中文分词后的词语,确定词语在句子中的词性成分,如名词、动词等语义分析针对不同的词语,计算在语义上的相似度,例如,两个词虽然文字不同,但可能表述相同的信息依存句法分将分词后的句子,对句子成分进行结构化分析,以析及句中词语之间的相互关系分析句子相似度根据句子中的成分,确定句子在表述上的相似程度语种检测对处理文本的表述语种进行检测,并确定其所属语言,如简体中文、繁体中文、英文等关键词提取对处理的文本进行分析,抽取其最具典型代表的词语核心句提取对于一篇文档内容,由多句文本组成,选取出最具代表该文档的句子情感分析获得文本在进行信息描述时,带有一定的情感,例如积极与消极程度文本聚类不同的文本,可能表述的是同一个类别的信息,将此类型的文本放置在一起文本分类不同的文本可能属于各种类别,将文本所属的类别进行识别,并给定其确定性类别

在搜索引擎的基本模块结构中,爬虫服务从互联网中采集的大量数据信息,在通过自然语言处理框架处理之后,将文本信息逐步分析成为结构化数据及价值性数据,实现构建知识图谱及数据索引。在搜索服务中也会使用自然语言处理去深入理解用户的搜索意图。2.3.2 知识图谱技术

知识图谱目前已经是现代搜索引擎的标配,但是在大数据时代之前,很多公司还不愿涉足此领域,原因在于研发成本较高,但是现在已经截然不同。知识图谱技术是为搜索引擎提供精准答案的技术基础,目前几乎所有的搜索引擎公司都非常重视知识图谱的研发工作。知识图谱作为一种图结构,实质是对一个结构化数据的形式化表达,它的构建是通过大数据不断分析各类知识信息、知识之间的关系最终构成的。

知识图谱中有三个非常重要的概念:实体、实体标签和实体关系,它们是知识图谱中基本的组成元素。(1)实体。表示具有分析价值的具体对象,包括人、物、时间、地理位置等,如“马云”“打印机”“1949年”“北京”“颐和园”等。(2)实体标签。是在实体中,具有标识意义的标签信息,能够对实体做到一定的区分度。例如“中国艺人梁朝伟”,其中“梁朝伟”作为人名,被视为实体,“中国艺人”即实体“梁朝伟”的实体标签。(3)实体关系。顾名思义是指实体与实体之间存在的关系,例如“北京是中国的首都”,其中“北京”和“中国”分别代表两个实体,而“首都”表示两者之间的关系,即实体关系。

再通过具体的例子分析实体、实体关系,如表2-3所示,对“唐朝”与“李白”相关的两个句子进行实体与实体关系分析。表2-3 对句子进行实体与实体关系分析

上述完成了对实体及实体关系分析,但是还需要通过上述信息构建知识图谱,图2-6所示为依据表2-3构建的知识图谱信息,充分表现出实体、实体标签和实体关系相关元素。

对于实现图2-6中所示效果,默认情况下的句子中不会告知实体标签信息,需要根据实际情况获取。完成整个知识图谱构建不仅依赖于自然语言处理技术,而且文本中的实体识别、实体关系抽取及实体标签自动化标注、实体对齐去重等,都是构建过程中必须解决的问题。图2-6 实体“唐朝”与“李白”知识图谱构建示例2.3.3 海量数据存储

现代的搜索引擎在数据层面已经发生巨大的变化,无论是传统的PC互联网还是移动互联网,每天都在产生新的数据。搜索引擎中的海量数据主要来自原始数据、索引数据和日志数据三个方面。(1)原始数据。这些原始数据是爬虫服务夜以继日地在互联网中不间断下载的互联网数据,包括文档、图片、视频等信息。(2)索引数据。索引服务会对爬虫服务下载的庞大数据进行数据分析,以及建立索引,而索引一般情况下均会超过原始数据的大小。(3)日志数据。每天数以亿计的用户请求源源不断地产生,为达到较好的搜索效果,日志服务记录下了所有用户请求信息,而这些日志数据也在日益增大。

面对原始数据、索引数据及日志数据,使得海量数据的存储不得不依靠大规模分布式存储技术,一般的分布式存储逻辑结构如图2-7所示。图2-7 一般的分布式存储逻辑结构

海量数据的分布式存储中,不同数据可能会被存储到各个不同存储节点中。分布式存储也面临着非常重要的数据压缩、负载均衡、容灾还原等问题。(1)数据压缩。虽然庞大的数据被分布式存储到各个存储节点中,但是由于庞大的数据存储会导致企业硬件成本偏高,一般情况下各个节点存储数据时也会考虑对数据进行压缩。而压缩就要权衡压缩比和解压缩性能,倘若压缩比过高,则会导致解压缩性能变慢,对数据访问会造成影响。(2)负载均衡。在数据存储过程中,分布式集群中的每一个数据节点,都有可能导致数据倾向现象,即少量数据存储节点中存储的数据量极大或者极小。需要采用各种方法来协调数据存储中的负载均衡问题。(3)容灾还原。任何存储节点都可能出现故障,一旦某部分数据出现故障,将导致该存储节点中的数据不可读。因此,整个分布式存储系统需要具备发生故障后,进行数据恢复的能力,并保证整个分布式存储系统稳定性一直处于可控范围内。

上述问题都是海量数据存储中必须解决的问题。2.3.4 分布式计算

在海量数据面前,搜索引擎需要发掘里面的数据价值,仅仅通过普通的数据库分析很难达到理想效果,即使采用编程分析也是比较难的,因此需要一个计算平台协助搜索引擎进行数据分析。所以对于大数据的处理,需要引入分布式计算,分布式计算是采用多台服务器分散处理的方式,将由于数据过大而导致计算时间过长的任务拆解为更多的子任务,将这些子任务分别交给更多的服务器去处理,各个服务器处理完毕之后,将最终结果合并。整个过程中,从处理方式上可以分为流计算和批量计算,批量计算是先存储后计算,而流计算是直接计算。

从搜索引擎角度看,对这些海量数据的分析,不得不依赖分布式计算平台。但是部分信息采用的是离线批处理运算;对于部分信息的处理实时性越高越好,例如,针对数据抓取是离线运算,而对于结果排序需要采用实时计算。分布式计算之所以成为大数据处理分析的重要工具在于如下两个方面:(1)高性能服务器也能进行复杂运算,但是高性能服务器不仅价格昂贵,而且一旦出现故障将导致众多问题。相反,将廉价的普通计算机组成一个分布式计算网络,不仅可以进行复杂运算,还可以避免单机故障导致系统瘫痪,具备高容错性。(2)采用分布式计算可以有效将资源进行汇总,可以灵活扩展计算性能,维护成本低,并且可以让不同的分布式应用运行在分布式计算集群中,意味着任何开发者都可以向分布式计算平台发起执行应用的可能。

利用分布式计算,使得搜索引擎能够在尽可能短的时间内处理海量数据,分析出数据的价值,例如,在极短的时间内分析出当前实事热点新闻、为用户推荐最相关的广告、最短时间内为用户反馈搜索结果等。分布式计算和分布式存储作为搜索引擎的基础平台,是后续一切工作的基础。2.3.5 搜索排序技术

在搜索服务中,搜索服务接口通过搜索服务后台获得搜索结果,而在搜索服务后台向搜索服务接口返回结果之前,搜索服务后台有一项非常重要的工作即对结果排序,通俗意义上是对搜索结果中的文档集合进行排序。文档集合排序是搜索引擎中核心的组成部分之一,是用户直观感觉搜索引擎质量优劣的主要标准,时至今日各互联网公司依然在持续深入研究搜索引擎排序策略。

目前,主流的搜索引擎主要从利用搜索词、文档质量及用户信息三方面对搜索结果的文档集合进行排序。(1)利用搜索词进行排序。该过程又称为相关性排序,是根据用户的搜索词与文档本身的相关程度进行排序,整个过程只考虑文档与用户搜索词的匹配程度。(2)利用文档质量进行排序。文档的质量是一个多方面的评价标准,它包括对文档链接权值、文档链接质量的分析,对文档内容真实性、文档内容权威性等各方面情况计算一个合理参考值,给予文档基于质量上的评分。(3)利用用户信息进行排序。该过程又称为个性化排序,是根据用户搜索的历史记录、个性喜好、身份特征等方面为用户定制的搜索结果,即可能导致不同用户使用相同搜索词看到的搜索结果可能不一致。

对于用户搜索文档的最终排序结果是上述三类排序的综合排序,例如,三个文档:文档A、文档B、文档C。在上述三类排序中均存在不同的排序序列,通过将三方面综合,给予一个最终排序序列,如图2-8所示。图2-8 搜索文档最终排序与三类排序的综合关系

换个角度看搜索排序,除对搜索排序结果质量有很高的要求之外,对排序完成的时间也具有极高的要求,在极短的时间内完成排序也是搜索体验的重要影响因素之一。在上述三类排序中,利用搜索词和用户信息的排序方式采用分布式实时计算,而文档质量则在数据分析过程中已经完成,并不需要在用户搜索过程进行文档质量评分。2.4 本章小结

本章从相对简易的角度去认识搜索引擎中的工作原理及大致使用到的技术体系。从基本模块结构上看,搜索引擎主要包括爬虫服务、索引服务、缓存服务、搜索服务及日志服务。这些服务相互之间产生关联影响。搜索引擎的所有服务均是由自然语言处理、知识图谱、海量数据存储、分布式计算、搜索排序等提供技术支持,这些技术支撑了搜索引擎的整个服务运作流程。读者通过对搜索引擎原理和技术的了解,有助于后续深入分析搜索引擎内部结构和实现。第3章自然语言处理框架

自然语言处理包括文本朗读、语音识别、分词、词性标注、句法分析、文本分类、自动摘要等技术范畴。在中文搜索领域,自然语言处理可以帮助搜索引擎深入认知中文语言表达的含义和意图。自然语言处理作为搜索引擎的技术之本、核心技术之一,几乎搜索引擎的每个技术环节都需要自然语言处理技术,也没有其他领域比搜索引擎更依赖于自然语言处理技术。3.1 英文分词

分词是自然语言处理过程中对文本处理的最基本工作,是自然语言理解的基础。从语言学的角度讲,分词技术是将语句拆分成语句的各个组成的单元;从搜索引擎角度讲,分词技术是将长文本拆分为可理解的短文本信息,目的是更好地进行文本分析。在中文搜索引擎领域,分词主要包含英文分词和中文分词。

英文分词作为中文搜索领域中非常重要的一部分,它的分词效果也会对结果产生非常重要的影响。然而英文分词相对中文分词算法比较简单,首先只需要通过指定分隔符进行英文单词切分;其次是对切分好的单词进行单词还原(lemmatization),例如,将“got”还原为“get”;最后,可以选择是否移除停用词即可。(1)单词还原。单词还原涉及两个问题,一个是词形还原:把一个单词还原为单词的一般形式;另外一个是词干提取,并不是指利用词形还原词典对英文单词进行词形还原。通过波特词干算法(Porter Stemmer)进行词干提取,词干提取是还原词语的修饰形式,得到单词最一般的写法形式,并不完全是词形还原,而是将词转换为词根,例如“fishing”“fished”“fish”和“fisher”为同一个词根“fish”通过转变而来,因此只需要将前四个单词还原为“fish”即可。

波特词干算法可以利用词库实现,也可以利用规则实现。在工程应用中,一般采用基于规则实现,首先处理单词复数形式及“ed”和“ing”结束的单词,例如,将“meetings”转换为“meet”;其次是如果单词中包含元音并且以“y”结尾,将“y”改为“i” ;然后将双后缀的单词映射为单后缀;最后再处理类似“-ic-”“-full”“-ness”“-ant”“-ence”等后缀;波特词干算法中提取到的词干并不一定正确,但可以保证用户的输入和后台的处理是一致的。(2)停用词处理。在搜索引擎的搜索及数据分析过程中,为节省存储空间和提高效率,对被处理的自然语言数据(或文本)执行分析之前,会自动过滤掉一些字符或单词,这些词又称为停用词。原因在于停用词对于搜索引擎无法产生具体价值,对搜索结果也无法做到区分,与句子中的关键词恰好相反。

停用词并非自动生成,而是手动创建。这些停用词包括“is”“on”“at”等词汇,主要包括广泛无意词和无明确限定词。广泛无意词是表示被广泛使用的词汇,但是在实际搜索中不会产生实际意义的词。从词性角度讲,停用词是一些无明确限定词,涵盖语气助词、副词、介词、连接词等词语,这些词语对于句子的重要性需要在具体的语义环境中才能足够体现。过滤掉停用词,有助于搜索引擎减小搜索范围,减少搜索索引量和文档量,对于提升搜索整体性能,有着积极效果和作用。

对于英文分词,除按照空格正常分词的方法之外,还可以采用N-Gram分词方法。N-Gram是一种基于前后词语关系的语言模型,该模型表示当前词语仅与前面第N–1个词语相关,而与其他词汇均不相关。采用N-Gram的分词方法,可以适当保持上下文关系。在N-Gram中,常常包括Uni-Gram(一元组)、Bi-Gram(二元组)和Tri-Gram(三元组),分别表示拆分句子为一个单词为单位、两个单词为单位、三个单词为单位。例如,对“welcome to the national conference center”进行Uni-Gram、Bi-Gram、Tri-Gram分词。移除停用词和词形还原之后句子为“welcome national conference center”,分词结果如表3-1所示。表3-1 “welcome national conference center”的Uni-Gram、Bi-Gram、Tri-Gram分词结果N-Gram分词结果Uni-Gram"welcome" "national" "conference" "center"Bi-Gram"welcome national" "national conference" "conference center"Tri-Gram"welcome national conference" "national conference center"

值得说明的是,N-Gram虽然主要应用于英文,但是也可以用于其他语言文字,尤其是对未知语言的文字进行分词,可以采用N-Gram进行默认分词。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载