你天天用的搜索引擎是怎么工作的

【新】在线运行 Pandas 学习数据管理

【浏览器跑Python】交互式Python学习

【MiniPy】分享你的 Python 小程序

切换视频源:

你天天用的搜索引擎是怎么工作的

作者: 莫烦 编辑: 莫烦 发布于: 2020-09-04

学习资料:

  • 自然语言处理系列
  • TF-IDF 搜索算法教程
  • 搜索算法更上一层楼教程

生活中我们已经离不开互联网,而互联网也离不开一门技术,这种技术在早期的互联网中发挥着决定性的作用,它连接着人与人,人与网。它,就是我们的搜索引擎。欢迎来到莫烦Python,我是周沫凡,今天我们来聊一聊你每天都用到的搜索引擎是如何工作的。

搜索引擎 ¶

search

在早期互联网时代,世界上诞生了一个影响全世界的公司,Google,它所带来的搜索也突破老一代的技术,登上了历史舞台,并影响着后续2-30年的人类社会发展。华人比较熟悉的百度则是在稍后一些,为中文搜索带来了前所未有的体验。你以为google和百度就是我们搜索引擎的全部吗?其实搜索也不仅仅出现在这些典型的网页入口,他们已经悄然渗透进了我们生活的更多方面。

垂类搜索 ¶

search

搜个社交,点个外卖,查个账款,旅个游,这些生活中的服务体系,早已经深度嵌入了我们一天中每一个时间点,对应上了会发生在我们生活的每一个行为。当别人在谈论搜索引擎的时候,可能已经不再是谈论google百度这样的搜索入口了,那千千万万个长在垂类应用里的搜索,才是组成我们今天生活获取信息的主要入口。

你是不是突然发现,原来搜索的应用这么广泛~那么搜索引擎又是怎么做到把零散的信息组织起来的呢?今天我们就来揭开它这层神秘面纱。

构建索引 ¶

search

在一篇文章可以被搜索之前,搜索引擎将对他们进行细致的观察,因为它可不想把全部的信息,不分重点的一股脑存储下来。取而代之,它会挑选重点部分,分别对待,比如重点关注标题、时间、正文。将这些信息给予不同的权重后,接着就是下一步,将它存储起来。

搜索引擎通常在搜索的时候,不会临时从全网找材料,而是将刚刚收集到的信息提前构建成索引,存储在便于快速检索的数据库中。只在自己的数据库中搜索,使我们的及时搜索更有效率。

search

如果你的网页内容有更新,你可以选择自己主动告诉搜索引擎“我更新了内容”,或者等待它定时用蜘蛛来爬取你的更新信息。是的,搜索引擎他们家,最有趣的“宠物”就是蜘蛛了。他们养着成千上万的蜘蛛,每天都在各类网站上爬行着,收集所有能够爬的网络信息。然后将这些信息都放入自己的数据池中,等待我们通过搜索来获取。

目前我们都只是提到了搜索引擎对于文字信息的理解。那当我们搜索图片或者视频的时候,它又是怎么处理的呢?

在深度学习还没有进入黄金年代的时候,大多的图片和视频搜索都是以文字形式记录的。也就是说在数据库中构建索引的时候,搜索引擎对图片和视频并不敏感,它为图片和视频构建的索引都是基于它们周围的文字信息,比如视频的标题等。

数值匹配搜索 ¶

search

但是现在的深度学习给我们提供了另一条思路,也就是用模型从非文字的信息中提取计算机能够识别的可计算信息(具体怎么计算,我们在之后的视频中会介绍)。 在用户用文字搜索时,将搜索的文字内容转换成深度学习能识别的数字内容,然后再和之前存储的图片、视频数字信息进行匹配,对比两种数字之间的关联性,然后找到最相近的内容。这种搜索,我们有一个专业名词叫作多模态搜索。

多模态搜索并不仅限于文字搜图片视频,它还能颠倒过来,用图片搜图片,图片搜视频等,因为在深度学习看来,只要它们能被转换成统一的数字形态,我就能对比相似性。

接下来我们从技术层面分析一下,你用文字搜文字时,究竟会发生什么呢。

搜索过滤 ¶

search

虽然我们知道今天的深度学习技术可以识别文字,进行文字相似性的打分,排序。但是深度学习模型有一个速度的硬伤,相比传统方法,每一次预测需要消耗更多的时间。而用户是无法忍受搜索中的延迟。为了实现在海量网页和文件中的快速搜索遍历,我们不得不使用到更加传统的方法, 而把深度学习方法放到后续更加适合的步骤中。

目前比较常用的方式,类似于这里的层层筛选过滤的方式,将筛选结果用不同的方法,从海量的网页中,一层层过滤到最符合你搜索条件的结果。而在需要做大量文档过滤处理的阶段,我们就使用时间消耗相对较少的技术,最后可以把深度学习方案,放在文档量和计算量都少的地方。接下来我们就介绍一下,什么样的技术能在数据量庞大的地方,又快又准地帮你找到搜索内容。

正排/倒排索引 ¶

search

我们总说自然语言处理(NLP)会让计算机懂得文字的内涵,但是有时候,有更加投机取巧的方法可以让计算机在不理解文字内涵的时候,还能给我们快速带来准确的结果。特别是在搜索中不得不提到的倒排索引技术。倒排索引是一种批量召回技术,它能快速在海量数据中初步召回基本符合要求的文章。

假设你开了家咨询公司,手上有100篇材料。这时有人来找你咨询NLP的问题,你会怎么在这100篇材料中找到合适的内容呢?

方法1:我们一篇一篇地阅读,找到所有包含NLP内容的材料,然后返回给提问者。这种方法需要我们在每次搜索的时候,都对所有材料进行一次阅读,然后在材料中找到关键词,并筛选出材料,效率其实非常差。

search

方法2:我们在第一次拿到所有材料时,把它们通读一遍,然后构建关键词和文章的对应关系。当用户在搜索特定词的时候,比如“红”,就会直接返回“红”这个【关键词索引】下的文章列表。先构造索引的好处就是能够将这种索引,放在后续的搜索中复用,搜索也就变成了一种词语匹配加返回索引材料的过程。

这里的 方式1是我们所谓的正排索引,方式2是更加快速的倒排索引。但当处理的是海量数据的时候,通过倒排索引找到的文章可能依然是海量。如果能有种方法对这些文章进行排序操作,再选取排名靠前的文章列表也能帮我们节省大量的时间。处理匹配排序,最有名的算法之一叫做TF-IDF。

TF-IDF ¶

search

先来看看TF-IDF所处的位置是哪里吧,有了批量性地召回相对合适的内容后,比如我已经从1亿个网页中召回了100万个,但100万对于我来说,已经够让我看上好几年了。怎么能再继续提升一下精确度,找到我更在乎的内容呢?

那么对筛选出来的内容做一个【问题与内容】的相似度排序,只返回那些头部内容就好啦。这个工作显然还是有一定的计算量的,所以如果前面不做召回,在1亿个网页中直接用打分排序的逻辑,往往还是挺久的。所以最好是将召回作为初步筛选,然后再相似度打分找到我在乎的内容,从而减轻计算负担。

search

直接看TF-IDF的名词解释,可能比较晦涩难懂。一个是词频,一个是逆文本频率指数,Oh Nooo, 反正我当初是没有一遍看懂。我来说人话。如果是你,在将搜索问题当中的词与文章中的词比对时,我们可能要找到文章中的关键词才能比较好对比,那么你怎么确定文章中哪些词是重要的。或者一篇文章,它可以用哪些词表达出来?

有人会说,在一篇文章中,越重要的内容,强调的次数也越多,所以频率(TF)会大,我们可以用词频高的词代表这篇文章。所以TF可以用一张词和文章标号的表来展示。不过问题来了,像语气词或“你我他”这种词,同样也会出现很多次,光用TF,我们没办法除去这些词的影响。而TF-IDF中的IDF,就可以在这个时候帮上忙,它是所有词在这个系统中的区分力的大小,如果每篇文章里都有“我”这个字,那么它的在任意一篇文章当中的区分力都不强,而如果你关键词搜索的是“莫烦”,那么全网都没有几个叫“莫烦”的,“莫烦”IDF就会很大,意味着“莫烦”的区分力也够强。

如果说TF是以文章为中心的局部词信息,那么IDF则是全局的词信息。TF无法得知哪些词在全局中算垃圾词,但IDF可以呀。要不把它们俩结合一下?当然行,如果把TF和IDF变成相亲相爱的一家人,结合他们俩不同的优势,就能用TF-IDF信息来表达一篇文章啦。

search

TF-IDF 两者结合其实就是两者相乘的意思,这样的结果意味着所有的文章,都能用一串集合所有词的分数来表示。通过分数的高低,我们也能大概看出这篇文章的关键内容是什么。比如第一篇,虽然TF告诉我们文章中“爱”这个字最多,但是IDF却告诉我们“莫烦”在文章中更具有代表性,所以根据TF-IDF的结合,这篇文章更具有“莫烦”属性。我们在搜索时又都经历了什么呢?

search

假设我们搜索关键词“莫烦Python”,机器会利用词表的模式计算“莫烦Python”这个问题的TF-IDF值。然后会计算问句和每篇文章的cosine距离,这个例子中的计算过程,简单来说,就是将文章按照词的维度放到一个四维空间中,(这里我画不了四维,我就用个三维空间说明一下)然后把问句同样也放到这个空间里,最后看空间中这个问题离哪一个文章的距离最近,越近则相似度越高。通过这样的方式呢,我们就能找到搜索问题的最佳匹配文章了。

说到这里,我不得不提到一个在NLP问题中非常重要的东西,那就是向量。我们刚刚把问句或者是文章,用数字的模式,投射到空间中,都是将问句或文章转变成向量,然后按照向量的模式指向空间中的某个位置。

search

举个例子,第一串数字就是文章1的向量表达,第二串是文章2的向量表达,第三串是问题的向量表达。他们都是空间中的点。(以后当我们接触到NLP模型的时候,你会不断听到词向量,句向量,文章向量等等不同的向量表达形式。)而今天我们虽然没有用深度学习,但是TF-IDF何尝不也是一种向量表达形式呢?在后续的教学中,我们再继续探索NLP当中有趣的向量表达和应用吧。

我们今天认识了搜索引擎的基本原理,但是现实中的搜索引擎可不仅仅只有倒排索引和TF-IDF,它还汇集了更多人类智慧的精华,值得我们进一步探索。


降低知识传递的门槛

支持莫烦

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 【支持莫烦】 能让我感到认同,我也更有理由坚持下去。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat
    教程目录

    有趣的机器学习

      机器学习方法

    • 机器学习 (Machine Learning)

      神经网络

    • 科普: 人工神经网络 VS 生物神经网络
    • 神经网络 (Neural Network)
    • 卷积神经网络 CNN (Convolutional Neural Network)
    • 循环神经网络 RNN (Recurrent Neural Network)
    • LSTM RNN 循环神经网络 (LSTM)
    • 自编码 (Autoencoder)
    • 生成对抗网络 (GAN)
    • 科普: 神经网络的黑盒不黑
    • 神经网络 梯度下降
    • 迁移学习 Transfer Learning

      神经网络技巧

    • 检验神经网络 (Evaluation)
    • 特征标准化 (Feature Normalization)
    • 选择好特征 (Good Features)
    • 激励函数 (Activation Function)
    • 过拟合 (Overfitting)
    • 加速神经网络训练 (Speed Up Training)
    • 处理不均衡数据 (Imbalanced data)
    • 批标准化 (Batch Normalization)
    • L1 / L2 正规化 (Regularization)

      自然语言处理

    • 什么是自然语言处理 NLP
    • 你天天用的搜索引擎是怎么工作的
      • 搜索引擎
      • 垂类搜索
      • 构建索引
      • 数值匹配搜索
      • 搜索过滤
      • 正排/倒排索引
      • TF-IDF
    • 机器是这样理解语言 - 词向量
    • 机器是这样理解语言 - 句向量
    • 请注意用词 - 语言模型的注意力
    • 请注意注意力 - 将注意力发挥到极致
    • 肩膀上的眺望 - 预训练语言模型

      生成对抗网络 GAN

    • 生成对抗网络 GAN 简介

      强化学习

    • 强化学习
    • 强化学习方法汇总
    • Q Leaning
    • Sarsa
    • Sarsa(lambda)
    • DQN
    • Policy Gradients
    • Actor Critic
    • Deep Deterministic Policy Gradient (DDPG)
    • Asynchronous Advantage Actor-Critic (A3C)
    • AlphaGo Zero 为什么更厉害?

      进化算法

    • 遗传算法 (Genetic Algorithm)
    • 进化策略 (Evolution Strategy)
    • 神经网络进化 (Neuro-Evolution)

    深圳SEO优化公司四平市seo排名报价淄博网站优化推荐吴忠阿里店铺运营价格玉林优化芜湖seo按天计费永州市网站建设价格广元市seo优化价格莆田市网络推广价格横岗关键词排名价格怀化seo优化公司辽阳做网站哪家好绥化建站报价中卫关键词排名张掖网站建设价格惠州seo按天扣费哪家专业资阳市网站设计推荐营口市阿里店铺运营推荐广元市seo按天计费安康优化价格芜湖seo按天计费推荐遵义市企业网站建设多少钱南通市网站制作公司丽水seo按天计费多少钱承德市网站定制多少钱南平市网站搭建哪家专业怀化市企业网站建设价格黄山市优化公司四平seo优化多少钱吉林市建网站哪家专业铜川市网站推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化