本書向讀者提供了一套完整的大數(shù)據(jù)時(shí)代背景下的搜索引擎解決方案,詳盡地介紹了搜索引擎的技術(shù)架構(gòu)、算法體系及取得的效果,以模塊化的方式進(jìn)行組織。著重介紹了機(jī)器學(xué)習(xí)在搜索引擎中的應(yīng)用,包括中文分詞、聚類、分類等核心的機(jī)器學(xué)習(xí)算法,并結(jié)合示例加以介紹和分析,使讀者可以更好地理解機(jī)器學(xué)習(xí)在搜索引擎中的價(jià)值。還闡述了大數(shù)據(jù)給搜索引擎帶來的新特性,結(jié)合目前大數(shù)據(jù)分析的主流工具,在搜索引擎中構(gòu)建知識(shí)圖譜,以及進(jìn)行日志反饋學(xué)習(xí)機(jī)制,使得搜索引擎更加智能。本書適合作為互聯(lián)網(wǎng)行業(yè)從業(yè)者的技術(shù)參考書,也適合作為搜索引擎愛好者的參考讀物。
前 言
搜索引擎本身作為一門綜合性的互聯(lián)網(wǎng)技術(shù),在行業(yè)中一直具備較高的關(guān)注度。隨著最近幾年大數(shù)據(jù)的發(fā)展,搜索引擎的關(guān)注度越來越高,原因在于搜索引擎技術(shù)是大數(shù)據(jù)應(yīng)用最前線的領(lǐng)域,也是最容易產(chǎn)生價(jià)值的大數(shù)據(jù)應(yīng)用。大數(shù)據(jù)存儲(chǔ)、大數(shù)據(jù)計(jì)算都是從搜索引擎中衍生出的新領(lǐng)域。目前搜索引擎技術(shù)的發(fā)展不僅以大數(shù)據(jù)為基礎(chǔ),還利用分布式實(shí)時(shí)計(jì)算對(duì)數(shù)據(jù)進(jìn)行高性能處理,以及利用機(jī)器學(xué)習(xí)將數(shù)據(jù)變得更具價(jià)值。在行業(yè)中吸引了包括搜索研發(fā)工程師、算法研發(fā)工程師、大數(shù)據(jù)分析工程師、自然語言處理工程師、計(jì)算平臺(tái)架構(gòu)師、數(shù)據(jù)挖掘工程師等行業(yè)各類精英的關(guān)注,這些工程師占據(jù)了整個(gè)互聯(lián)網(wǎng)研發(fā)體系的50%~60%,在BAT中,甚至超過60%的是研發(fā)人員。
這類群體薪資水平處于互聯(lián)網(wǎng)研發(fā)人員中較高水平,以獵聘網(wǎng)公布的數(shù)據(jù)顯示,北京地區(qū)搜索引擎研發(fā)工程師年薪為35萬~60萬元,大數(shù)據(jù)工程師年薪為20萬~25萬元,大數(shù)據(jù)架構(gòu)師年薪為40萬~70萬元,等等。也正是由于薪資水平處于較高位,很多互聯(lián)網(wǎng)相關(guān)從業(yè)者也積極關(guān)注大數(shù)據(jù)搜索引擎領(lǐng)域動(dòng)態(tài)。
本書通過介紹大數(shù)據(jù)下的自然語言處理框架、大數(shù)據(jù)存儲(chǔ)引擎、搜索引擎的分布式實(shí)時(shí)計(jì)算、高性能可擴(kuò)展爬蟲,以及利用大數(shù)據(jù)構(gòu)建知識(shí)圖譜、基于大數(shù)據(jù)日志的搜索引擎反饋學(xué)習(xí)等相關(guān)信息,不僅使讀者對(duì)當(dāng)代搜索引擎研發(fā)體系有一定的認(rèn)識(shí),還可以使讀者在搜索引擎領(lǐng)域及大數(shù)據(jù)領(lǐng)域進(jìn)行深入思考。
本書特色
本書以當(dāng)前搜索引擎主流技術(shù)為基礎(chǔ),密切結(jié)合前沿技術(shù)發(fā)展趨勢,行文通俗易懂,由初步的原理性了解到各模塊應(yīng)用示例,并結(jié)合分布式存儲(chǔ)、實(shí)時(shí)計(jì)算等,向讀者提供了一套完整的大數(shù)據(jù)時(shí)代背景下人工智能搜索引擎的解決方案。
(1)內(nèi)容循序漸進(jìn)、行文有條有序地介紹搜索引擎知識(shí)。
本書充分考慮了不同層次的讀者對(duì)搜索引擎的理解程度,因此本書由簡入深、獨(dú)特的技術(shù)寫作視角符合廣大讀者對(duì)于技術(shù)類讀物的理解需求,使得讀者能夠在掌握搜索引擎基礎(chǔ)的情況下,不斷按照搜索引擎的設(shè)計(jì)深入理解。
(2)技術(shù)前瞻性強(qiáng),注重最新主流技術(shù)在現(xiàn)代搜索引擎中的應(yīng)用。
本書充分利用了最新技術(shù)發(fā)展的應(yīng)用成果,在自然語言處理的基礎(chǔ)上不僅結(jié)合大數(shù)據(jù)分析,還包括分布式計(jì)算、機(jī)器學(xué)習(xí)、知識(shí)圖譜等當(dāng)前大數(shù)據(jù)應(yīng)用與分析處理的主流技術(shù),摒棄了傳統(tǒng)過時(shí)的研發(fā)體系及算法。本書中相關(guān)研發(fā)成果在當(dāng)前甚至在未來3~5年,都具有實(shí)際意義。
(3)將技術(shù)理論與應(yīng)用范例結(jié)合,具備較高的商業(yè)實(shí)用價(jià)值。
本書內(nèi)容緊密結(jié)合當(dāng)前一線工程師工作研究成果,將眾多的技術(shù)理論以實(shí)際工作經(jīng)驗(yàn)的方式展示應(yīng)用效果。本書介紹的內(nèi)容也廣泛結(jié)合工作中的應(yīng)用示例,并以搜索引擎工程實(shí)踐的脈絡(luò)流程介紹技術(shù)要點(diǎn),使讀者在短時(shí)間內(nèi)能夠掌握當(dāng)前搜索引擎研發(fā)的技術(shù)理論。
本書結(jié)構(gòu)
本書按照由淺入深、循序漸進(jìn)的順序?qū)ΜF(xiàn)代搜索引擎原理和實(shí)現(xiàn)進(jìn)行介紹。全書分為10章,各章的主要內(nèi)容如下。
第1章針對(duì)搜索引擎發(fā)展的過去、現(xiàn)在、未來的相關(guān)概要介紹,以及現(xiàn)代搜索引擎與大數(shù)據(jù)、人工智能的相互關(guān)系,使廣大讀者能夠在了解現(xiàn)代搜索引擎的背景之下,去了解本書的后續(xù)內(nèi)容。
第2章是對(duì)搜索引擎原理與技術(shù)的初步分析,從模塊方面大致介紹爬蟲、索引、緩存等;從技術(shù)方面大致介紹自然語言處理、知識(shí)圖譜技術(shù)、海量數(shù)據(jù)存儲(chǔ)、分布式計(jì)算等。目的是使得讀者對(duì)搜索引擎的體系結(jié)構(gòu)、部分技術(shù)有一定認(rèn)識(shí),便于讀者深入了解后續(xù)章節(jié)。
第3章從自然語言角度開始深入分析原理和實(shí)現(xiàn),自然語言是搜索引擎進(jìn)行文本處理的基礎(chǔ),其中包括分詞、詞性分析、語義分析、關(guān)鍵詞抽取、核心句抽取、聚類分類等。讀者將會(huì)從本章中獲得當(dāng)前主流的自然語言處理技術(shù)相關(guān)知識(shí)。
第4章主要是針對(duì)大數(shù)據(jù)存儲(chǔ)引擎的介紹。大數(shù)據(jù)存儲(chǔ)是搜索引擎最先遇到的問題,解決數(shù)據(jù)存儲(chǔ)問題可以使搜索引擎在數(shù)據(jù)分析、索引構(gòu)建、知識(shí)圖譜等工作持續(xù)進(jìn)行。讀者在本章會(huì)了解到大數(shù)據(jù)存儲(chǔ)引擎的架構(gòu)體系、數(shù)據(jù)模型、數(shù)據(jù)壓縮、負(fù)載均衡等。
第5章介紹了分布式實(shí)時(shí)計(jì)算。由于搜索引擎處理的是海量數(shù)據(jù),數(shù)據(jù)分析必須依靠具有較強(qiáng)數(shù)據(jù)處理能力的計(jì)算平臺(tái),因此搜索引擎通過分布式實(shí)時(shí)計(jì)算去處理大數(shù)據(jù)并在盡可能短的時(shí)間內(nèi)返回處理結(jié)果。本章中,讀者會(huì)了解到分布式實(shí)時(shí)計(jì)算設(shè)計(jì)架構(gòu)、負(fù)載均衡及通信設(shè)計(jì)等相關(guān)知識(shí)。
第6章對(duì)爬蟲進(jìn)行了深入分析。讀者在本章中將會(huì)深入理解分布式可擴(kuò)展爬蟲的體系架構(gòu),以及對(duì)網(wǎng)頁如何進(jìn)行解析,并抽取出結(jié)構(gòu)化的數(shù)據(jù)信息。本章還涉及鏈接去重、網(wǎng)頁去重、廣告識(shí)別等相關(guān)算法原理。
第7章詳細(xì)介紹了知識(shí)圖譜構(gòu)建。知識(shí)圖譜是智能化搜索引擎重要的組成部分,利用大數(shù)據(jù)分析構(gòu)建出較為合理的知識(shí)圖譜信息是當(dāng)前主流的方式。讀者將會(huì)從本章中深入了解到知識(shí)圖譜的詳細(xì)構(gòu)建過程,以及利用機(jī)器學(xué)習(xí)原理對(duì)知識(shí)圖譜中的實(shí)體抽取、關(guān)系抽取等相關(guān)技術(shù)進(jìn)行。
第8章詳細(xì)分析了索引構(gòu)建機(jī)制。索引的設(shè)計(jì)與構(gòu)造是搜索引擎能夠進(jìn)行快速檢索的核心要件,主要針對(duì)文件檢索的倒排索引與用于智能提示的字典樹索引。本章不僅對(duì)倒排索引做了深入分析,對(duì)倒排索引的壓縮、分布式存儲(chǔ)等也做了詳細(xì)介紹。
第9章深入分析了搜索引擎的整個(gè)對(duì)外服務(wù)工作流程。包括大數(shù)據(jù)分布式緩存、搜索智能提示、個(gè)性化搜索、圖片搜索、搜索與廣告等。讀者通過本章可以詳細(xì)了解到文本糾錯(cuò)算法、動(dòng)態(tài)摘要算法、網(wǎng)頁排序算法及搜索引擎的評(píng)價(jià)
體系。
第10章探討和分析了搜索引擎日志與搜索引擎本身的關(guān)系。搜索引擎日志記錄了用戶與搜索系統(tǒng)交互的整個(gè)流程。通過日志挖掘,不僅可以發(fā)現(xiàn)用戶的自有特征和行為規(guī)律,還可以有效地幫助搜索引擎提升性能和效果。日志作為搜索引擎的核心數(shù)據(jù)之一,一直使搜索引擎技術(shù)中的各類算法不斷向前發(fā)展。讀者通過本章將學(xué)會(huì)通過搜索引擎日志分析用戶特征、用戶的部分搜索意圖等相關(guān)知識(shí)。
讀者對(duì)象
適合對(duì)自然語言處理及機(jī)器學(xué)習(xí)應(yīng)用領(lǐng)域有興趣的讀者。
適合對(duì)現(xiàn)代搜索引擎相關(guān)算法有興趣的讀者。
適合對(duì)大數(shù)據(jù)分析、數(shù)據(jù)挖掘應(yīng)用有興趣的讀者。
適合互聯(lián)網(wǎng)行業(yè)的不同層次從業(yè)者。
適合從事搜索引擎優(yōu)化的網(wǎng)絡(luò)營銷讀者。
適合高校中學(xué)習(xí)計(jì)算機(jī)、軟件工程等相關(guān)專業(yè)的讀者。
收起全部↑
劉凡平。曾任職微軟亞太研發(fā)集團(tuán),從事互聯(lián)網(wǎng)廣告與分布式實(shí)時(shí)計(jì)算相關(guān)研發(fā)工作。后任職百度(中國)有限公司,并擔(dān)任高級(jí)研發(fā)工程師。現(xiàn)任薇問(北京)科技有限公司首席技術(shù)官,負(fù)責(zé)搜索引擎技術(shù)與大數(shù)據(jù)人工智能平臺(tái)研發(fā)工作。擅長于搜索引擎、大數(shù)據(jù)分析、分布式計(jì)算等相關(guān)研發(fā)工作,是Iveely開源搜索引擎的主要貢獻(xiàn)者之一,也是執(zhí)著于將互聯(lián)網(wǎng)技術(shù)演繹為藝術(shù)的完美追求者。
目 錄
第1章 引論 1
1.1 搜索引擎的過去 1
1.2 搜索引擎的現(xiàn)在 2
1.3 搜索引擎的未來 4
1.4 大數(shù)據(jù)與搜索引擎 6
1.4.1 搜索價(jià)值提升 6
1.4.2 用戶價(jià)值提升 7
1.5 大數(shù)據(jù)與人工智能 7
1.5.1 人工智能發(fā)展 7
1.5.2 人工智能技術(shù) 9
1.6 本章小結(jié) 11
第2章 搜索引擎原理與技術(shù) 12
2.1 基本工作原理 12
2.2 基本模塊結(jié)構(gòu) 13
2.2.1 爬蟲服務(wù) 14
2.2.2 索引服務(wù) 15
2.2.3 緩存服務(wù) 16
2.2.4 搜索服務(wù) 17
2.2.5 日志服務(wù) 19
2.3 技術(shù)概要 20
2.3.1 自然語言處理 20
2.3.2 知識(shí)圖譜技術(shù) 21
2.3.3 海量數(shù)據(jù)存儲(chǔ) 23
2.3.4 分布式計(jì)算 25
2.3.5 搜索排序技術(shù) 26
2.4 本章小結(jié) 27
第3章 自然語言處理框架 28
3.1 英文分詞 28
3.2 中文分詞 30
3.2.1 中文分詞概述 30
3.2.2 基于詞庫的分詞技術(shù) 31
3.2.3 基于條件隨機(jī)場的中文分詞 33
3.2.4 分詞粒度 41
3.3 詞性標(biāo)注 41
3.3.1 隱馬爾科夫模型概要 42
3.3.2 隱馬爾科夫模型與詞性標(biāo)注 43
3.4 語義相似度 51
3.5 依存句法分析 53
3.5.1 依存句法分析概要 53
3.5.2 依存句法分析實(shí)現(xiàn) 56
3.6 情感傾向分析 59
3.7 文檔關(guān)鍵詞抽取 61
3.7.1 關(guān)鍵詞抽取概述 61
3.7.2 基于TF-IDF算法 62
3.7.3 基于TextRank算法 64
3.8 文檔句子相似度分析 67
3.8.1 句子相似度 68
3.8.2 文檔相似度 70
3.9 文檔核心句抽取 71
3.10 聚類分類 74
3.10.1 文本分類 75
3.10.2 文本聚類 80
3.11 語種檢測 84
3.12 本章小結(jié) 87
第4章 構(gòu)建大數(shù)據(jù)存儲(chǔ)引擎 88
4.1 架構(gòu)體系 89
4.1.1 結(jié)構(gòu)概要 89
4.1.2 服務(wù)器上線 92
4.1.3 服務(wù)器下線 92
4.1.4 數(shù)據(jù)讀取 93
4.2 數(shù)據(jù)模型 94
4.3 數(shù)據(jù)壓縮 96
4.4 負(fù)載均衡 97
4.5 數(shù)據(jù)存儲(chǔ)邏輯視圖 100
4.6 本章小結(jié) 103
第5章 構(gòu)建分布式實(shí)時(shí)計(jì)算 104
5.1 概述 104
5.2 設(shè)計(jì)架構(gòu) 106
5.2.1 設(shè)計(jì)思想 106
5.2.2 基本框架 108
5.3 運(yùn)行模式 110
5.4 負(fù)載均衡 111
5.5 通信設(shè)計(jì) 112
5.5.1 基本方式 113
5.5.2 分布式遠(yuǎn)程服務(wù)調(diào)用 113
5.6 容災(zāi)恢復(fù) 114
5.7 數(shù)據(jù)容錯(cuò)原理 115
5.8 數(shù)據(jù)處理設(shè)計(jì)示例 117
5.9 本章小結(jié) 118
第6章 分布式可擴(kuò)展爬蟲 119
6.1 爬蟲體系架構(gòu) 119
6.1.1 主從分布式結(jié)構(gòu)爬蟲 120
6.1.2 對(duì)等分布式結(jié)構(gòu)爬蟲 120
6.1.3 基于分布式計(jì)算平臺(tái)爬蟲 121
6.2 網(wǎng)頁解析 122
6.2.1 狀態(tài)碼處理 123
6.2.2 鏈接去重 123
6.2.3 廣告識(shí)別 125
6.2.4 網(wǎng)站地圖 128
6.2.5 非網(wǎng)頁數(shù)據(jù)獲取 129
6.2.6 網(wǎng)頁去重 130
6.2.7 鏈接提取 134
6.2.8 爬蟲協(xié)議 135
6.3 網(wǎng)頁結(jié)構(gòu)化 137
6.3.1 網(wǎng)頁的編碼信息 137
6.3.2 網(wǎng)頁的正文信息 138
6.3.3 網(wǎng)站的關(guān)鍵詞信息 142
6.3.4 網(wǎng)站的標(biāo)題 142
6.3.5 網(wǎng)頁的發(fā)布時(shí)間 144
6.3.6 網(wǎng)站語言檢測 144
6.3.7 其他結(jié)構(gòu)化數(shù)據(jù) 145
6.4 網(wǎng)頁抓取策略 146
6.5 爬蟲權(quán)限應(yīng)對(duì) 147
6.6 深網(wǎng)抓取 150
6.7 抓取更新策略 151
6.8 本章小結(jié) 153
第7章 大數(shù)據(jù)構(gòu)建知識(shí)圖譜 154
7.1 概述 154
7.2 搜索引擎與知識(shí)圖譜 155
7.3 可靠數(shù)據(jù)源選擇 157
7.4 實(shí)體抽取 158
7.5 關(guān)系抽取 159
7.5.1 關(guān)系抽取概述 160
7.5.2 隱藏關(guān)系抽取 161
7.5.3 結(jié)構(gòu)化確定關(guān)系抽取 164
7.5.4 非結(jié)構(gòu)化確定關(guān)系抽取 166
7.6 知識(shí)圖譜檢測 171
7.6.1 實(shí)體關(guān)系修正 171
7.6.2 實(shí)體對(duì)齊整合 172
7.6.3 實(shí)體歧義分析 174
7.7 知識(shí)推理與計(jì)算 175
7.7.1 知識(shí)推理 175
7.7.2 知識(shí)計(jì)算 176
7.8 知識(shí)聚類 179
7.9 智能搜索實(shí)現(xiàn) 181
7.9.1 模式匹配 181
7.9.2 知識(shí)拆解 182
7.9.3 合并求解 184
7.10 智能搜索擴(kuò)展 186
7.10.1 常識(shí)性智能搜索 186
7.10.2 實(shí)時(shí)信息智能搜索 187
7.10.3 可交互式智能搜索 187
7.11 本章小結(jié) 189
第8章 索引構(gòu)建機(jī)制 190
8.1 倒排索引 190
8.1.1 倒排索引概述 191
8.1.2 索引結(jié)構(gòu) 192
8.1.3 構(gòu)建過程 194
8.1.4 排序規(guī)則 195
8.1.5 索引壓縮 196
8.1.6 更新策略 202
8.2 分布式存儲(chǔ) 202
8.2.1 存儲(chǔ)劃分方式 203
8.2.2 存儲(chǔ)平衡策略 204
8.3 存儲(chǔ)索引 209
8.3.1 二叉搜索樹 210
8.3.2 B樹 211
8.3.3 B+樹 213
8.3.4 B+樹與文件索引 214
8.4 字典樹索引 216
8.4.1 字典樹索引概述 217
8.4.2 字典樹索引構(gòu)建 219
8.4.3 字典樹查詢優(yōu)化 221
8.5 本章小結(jié) 221
第9章 搜索服務(wù)構(gòu)建 223
9.1 概述 223
9.1.1 體系結(jié)構(gòu) 223
9.1.2 七何分析法 224
9.1.3 搜索語法 225
9.1.4 相關(guān)性排序 227
9.1.5 不安全信息過濾 231
9.2 大數(shù)據(jù)分布式緩存 235
9.2.1 緩存結(jié)構(gòu)設(shè)計(jì) 235
9.2.2 緩存更新策略 236
9.3 文本糾錯(cuò)算法 237
9.3.1 中文文本糾錯(cuò) 237
9.3.2 英文文本糾錯(cuò) 241
9.4 結(jié)果顯示算法 242
9.4.1 動(dòng)態(tài)摘要 243
9.4.2 關(guān)鍵詞高亮算法 246
9.4.3 網(wǎng)頁快照 250
9.5 搜索智能提示 250
9.6 網(wǎng)頁排序 254
9.6.1 基于PageRank的網(wǎng)頁重要性評(píng)價(jià) 254
9.6.2 基于Hits算法的網(wǎng)頁權(quán)威性評(píng)價(jià) 257
9.6.3 Hilltop算法 259
9.6.4 網(wǎng)頁作弊評(píng)價(jià) 260
9.6.5 網(wǎng)頁排序調(diào)試 263
9.7 個(gè)性化搜索 264
9.7.1 個(gè)性化搜索示例 264
9.7.2 人工神經(jīng)網(wǎng)絡(luò)與個(gè)性化搜索 265
9.7.3 地理位置搜索 266
9.8 圖片搜索 271
9.8.1 基于內(nèi)容的圖片搜索 271
9.8.2 基于文本的圖片搜索 272
9.9 搜索與廣告 274
9.9.1 廣告投放策略 275
9.9.2 基于User-Based協(xié)同過濾的廣告投放 275
9.9.3 基于Item-Based協(xié)調(diào)過濾的廣告投放 277
9.9.4 基于混合模式廣告投放 278
9.9.5 廣告投放評(píng)價(jià) 279
9.10 搜索引擎評(píng)價(jià) 282
9.10.1 搜索評(píng)價(jià)概述 282
9.10.2 基于準(zhǔn)確率、召回率及F值評(píng)價(jià) 283
9.10.3 歸一化折扣累計(jì)增益 285
9.11 本章小結(jié) 288
第10章 基于用戶日志的反饋學(xué)習(xí) 290
10.1 基于用戶搜索詞語的分析 290
10.1.1 發(fā)現(xiàn)搜索詞的價(jià)值 291
10.1.2 發(fā)現(xiàn)不明意圖下的用戶行為 292
10.2 基于用戶點(diǎn)擊日志的分析 293
10.2.1 時(shí)間與搜索意圖的關(guān)系 293
10.2.2 地理位置與搜索意圖的關(guān)系 294
10.2.3 點(diǎn)擊日志與同義詞 296
10.2.4 點(diǎn)擊日志與詞語權(quán)重 297
10.2.5 點(diǎn)擊日志與新詞分類 298
10.2.6 點(diǎn)擊日志與知識(shí)圖譜 300
10.2.7 點(diǎn)擊日志與網(wǎng)頁重排序 301
10.2.8 點(diǎn)擊日志與網(wǎng)頁評(píng)價(jià) 303
10.3 基于用戶的特征分析 304
10.3.1 用戶跟蹤 305
10.3.2 用戶群體特征 306
10.3.3 用戶個(gè)體特征 308
10.4 本章小結(jié) 309