本文正在参加「金石计划 . 瓜分6万现金大奖」
前言
生活中我们已经离不开互联网,而互联网也离不开一门技术,这种技术在早期的互联网中发挥着决定性的作用,它连接着人与人,人与网。它,就是我们的搜索引擎。
当前耳熟能详的搜索引擎,例如:Google,百度这些:
那他们是如何做到把零散的信息组织起来的呢?
构建索引
搜索引擎不会一股脑地将文章的所有内容存储下来,而是进行较为细致的观察,挑选重点部分,比如重点关注标题、时间、正文等内容,给予这些信息不同的权重,再进行存储:
搜索引擎通常不会在搜索的时候,临时从全网爬取网页,而是提前通过爬虫将收集到的信息构建成索引,存储在便于快速检索的数据库中。只有在自己的数据库中搜索,才会使得我们的及时搜索更有效率。
如果你的网页内容有更新,你可以选择自己主动告诉搜索引擎:“我更新了内容”,或者等待它定时用蜘蛛来爬取你的更新信息。这些蜘蛛每天都在各类网站上爬行着,收集所有能够爬的网络信息,然后将这些信息都放入自己的数据池中,等待我们通过搜索来获取。
目前我们都只是提到了搜索引擎对于文字信息的理解。那当我们搜索图片或者视频的时候,它又是怎么处理的呢?
数值匹配搜索
在深度学习还没有进入黄金年代的时候,大多的图片和视频搜索都是以文字形式记录的。也就是说在数据库中构建索引的时候,搜索引擎对图片和视频并不敏感,它为图片和视频构建的索引都是基于它们周围的文字信息,比如视频的标题等。
但是现在的深度学习给我们提供了另一条思路,也就是用模型从非文字的信息中提取计算机能够识别的可计算信息。在用户用文字搜索时,将搜索的文字内容转换成深度学习能识别的数字内容,然后再和之前存储的图片、视频数字信息进行匹配,对比两种数字之间的关联性,然后找到最相近的内容。这种搜索,有一个专业名词叫作 “多模态” 搜索。
多模态搜索并不仅限于文字搜图片视频,它还能颠倒过来,用图片搜图片,图片搜视频等,因为在深度学习看来,只要它们能被转换成统一的数字形态,我就能对比相似性。
接下来我们从技术层面分析一下,你用文字搜文字时,究竟会发生什么呢。
搜索过滤
虽然现在的深度学习技术可以识别文字,进行文字相似性的打分,排序。但是深度学习模型有一个速度的硬伤,相比传统方法,每一次预测需要消耗更多的时间。而用户是无法忍受搜索中的延迟。为了实现在海量网页和文件中的快速搜索遍历,我们不得不使用到更加传统的方法, 而把深度学习方法放到后续更加适合的步骤中。
目前比较常用的方式,类似于上图的层层筛选过滤的方式,将筛选结果用不同的方法,从海量的网页中,一层层过滤到最符合搜索条件的结果。而在需要做大量文档过滤处理的阶段,我们就使用时间消耗相对较少的技术,最后把深度学习放在文档量和计算量都少的地方。
接下来我们就介绍一下,什么样的技术能在数据量庞大的地方,能够又快又准地找到搜索内容。
正排 / 倒排索引
我们总说自然语言处理(NLP)会让计算机懂得文字的内涵,但是有时候,有更加投机取巧的方法可以让计算机在不理解文字内涵的时候,还能给我们快速带来准确的结果。特别是在搜索中不得不提到的倒排索引技术。倒排索引是一种批量召回技术,它能快速在海量数据中初步召回基本符合要求的文章。
假设你开了家咨询公司,手上有100篇材料。这时有人来找你咨询 NLP 的问题,你会怎么在这100篇材料中找到合适的内容呢?
方法一:一篇一篇地阅读,找到所有包含 NLP 内容的材料,然后返回给提问者。这种方法需要每次搜索的时候,都对所有的材料进行一次阅读,然后在材料中找到关键词,并筛选出材料,效率非常差。
方法二:在刚拿到所有材料时,就把它们通读一遍,然后构建关键词和文章的对应关系。当用户在搜索特定词的时候,比如 𝓼𝓲𝓭𝓲𝓸𝓽,就会直接返回 𝓼𝓲𝓭𝓲𝓸𝓽 这个 关键词索引 下的文章列表。先构造索引的好处就是,能够将这种索引放在后续的搜索中复用,搜索也就变成了一种词语匹配加返回索引材料的过程了。
这里的方法一就是所谓的正排索引,而方法二是更加快速的倒排索引。
但当处理的是海量数据的时候,通过倒排索引找到的文章可能依然是海量。如果能有种方法对这些文章进行排序操作,再选取排名靠前的文章列表,这将会帮我们节省大量的时间。
处理匹配排序,最有名的算法之一叫做 TF-IDF。这里就不再赘述了,有兴趣的小伙伴可以阅读博主的这篇文章:【NLP】入门(三):TF-IDF(理论篇)
后记
以上就是 【NLP】入门(二):搜索引擎是怎么工作的 的全部内容了。
本文简单地从构建索引、数值匹配搜索、搜索过滤、正排 / 倒排索引几个方面来讲述搜索引擎的工作原理,希望对大家有所帮助!
📝 上篇精讲:【NLP】入门(一):简介
💖 我是 𝓼𝓲𝓭𝓲𝓸𝓽,期待你的关注;
👍 创作不易,请多多支持;