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