第一章:搜索引擎概述
大家好,我是这门课的主讲人。在开始讲NLP之前,我觉得有必要先聊聊搜索引擎本身。你想想看,没有搜索引擎这个载体,NLP再强也没地方使。所以这一章,我们先打好基础。
1.1 搜索引擎发展史
搜索引擎的历史,其实挺有意思的。我刚开始接触这行时,还在用Yahoo!那种人工分类目录。说白了,就是有人手动把网页分门别类。你搜"苹果",它给你列出水果、电脑公司两个分类。效率嘛,可想而知。
后来Google出现了。我记得2004年第一次用Google,那种震撼感至今难忘。它用PageRank算法,靠链接关系判断网页质量。嗯,这招确实高明。
再往后,就是咱们熟悉的百度、Bing了。到了2010年左右,搜索引擎开始引入机器学习。为什么?因为用户的需求越来越复杂。你搜"北京今天限行吗",传统关键词匹配根本搞不定。
现在呢?大模型时代来了。搜索引擎开始理解语义,而不是死磕关键词。我个人习惯把这段历史分成四个阶段:
- 第一阶段(1990-1997):人工分类 + 简单爬虫。代表:Yahoo!、AltaVista
- 第二阶段(1998-2005):链接分析 + 关键词匹配。代表:Google、百度
- 第三阶段(2006-2018):机器学习 + 用户行为分析。代表:Google RankBrain
- 第四阶段(2019-至今):深度学习 + 语义理解。代表:Google BERT、百度ERNIE
核心观点:搜索引擎的进化,本质上是从"匹配字符串"走向"理解意图"的过程。NLP在其中扮演的角色越来越重。
1.2 搜索引擎工作原理
搜索引擎怎么工作的?我给大家拆解一下。其实就三步:抓取、索引、检索。
第一步:抓取(Crawling)
爬虫程序满世界跑,把网页内容拉回来。这里有个坑——我曾经遇到过爬虫被网站封IP的情况。后来加了User-Agent伪装和请求频率控制,才算解决。嗯,细节决定成败。
第二步:索引(Indexing)
抓回来的网页不能直接用。你得建个索引,就像书的目录一样。倒排索引是核心——记录每个词出现在哪些文档里。举个例子:
// 倒排索引示例
"苹果" -> [doc1, doc3, doc7]
"手机" -> [doc1, doc2, doc5]
"搜索" -> [doc3, doc4, doc6]
这样用户搜"苹果手机",系统就能快速定位到同时包含这两个词的文档。说白了,就是用空间换时间。
第三步:检索(Retrieval)
用户输入查询,系统去索引里找。然后排序、返回结果。排序算法是核心中的核心。我建议你记住这个公式:
Score = 内容相关性 × 网页质量 × 用户偏好
三者缺一不可。内容再相关,网页质量差也不行。质量再高,用户不买账也白搭。
1.3 搜索引擎核心架构
搜索引擎的架构,说白了就是几个模块各司其职。我画个简图给大家看:
| 模块名称 | 功能描述 | 技术要点 |
|---|---|---|
| 爬虫模块 | 抓取网页内容 | URL调度、去重、限速 |
| 索引模块 | 建立倒排索引 | 分词、去停用词、压缩 |
| 检索模块 | 匹配用户查询 | 布尔检索、向量检索 |
| 排序模块 | 对结果打分排序 | BM25、Learning to Rank |
| 用户模块 | 处理查询、展示结果 | 查询改写、意图识别 |
每个模块都有NLP的用武之地。比如爬虫模块需要判断网页语言,索引模块需要分词,检索模块需要理解语义,排序模块需要计算相关性。你想想看,没有NLP,这些活怎么干?
小提示:在实际项目中,我建议你重点关注索引和排序两个模块。它们对搜索质量的影响最大,也是NLP技术落地最多的环节。
1.4 NLP在搜索中的角色
好了,终于到重点了。NLP在搜索引擎里到底干啥?我给大家总结四个核心角色:
角色一:查询理解
用户输入"北京的天气怎么样",系统得知道"北京"是地点,"天气"是需求,"怎么样"是询问。这需要分词、命名实体识别、意图分类。我曾经遇到一个案例——用户搜"苹果怎么吃",系统却返回了苹果公司的产品页。为什么?因为没做意图消歧。
角色二:文档理解
网页内容千奇百怪。有的写"苹果是一种水果",有的写"苹果是一家公司"。系统得能区分。这需要文本分类、关键词提取、摘要生成。说白了,就是让机器读懂文章在讲什么。
角色三:语义匹配
用户搜"怎么减肥",和"如何瘦身"其实是同一个意思。传统关键词匹配搞不定这个。现在用BERT这类模型,可以把查询和文档都转成向量,然后算相似度。嗯,效果确实好。
角色四:结果优化
搜索结果出来了,还得优化。比如生成摘要、高亮关键词、推荐相关搜索。这些都需要NLP技术。我记得有一次做搜索摘要,发现截断位置总是不对。后来用了文本分割算法,才解决了这个问题。
注意事项:NLP不是万能的。在搜索场景中,它更多是辅助角色。核心还是索引结构和排序算法。千万别本末倒置。
好了,第一章就到这里。下一章我们聊聊分词技术——搜索引擎理解用户的第一步。有什么问题,欢迎课后交流。