第一章:搜索引擎概述

大家好,我是这门课的主讲人。在开始讲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不是万能的。在搜索场景中,它更多是辅助角色。核心还是索引结构和排序算法。千万别本末倒置。

好了,第一章就到这里。下一章我们聊聊分词技术——搜索引擎理解用户的第一步。有什么问题,欢迎课后交流。