NLP 自然语言处理

搜索引擎是怎么工作的
  1. 构建索引

搜索引擎会挑选重点部分,分别对待,比如重点关注标题、时间、正文。将这些信息给予不同的权重后,接着就是下一步,将它存储起来。

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

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

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

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

  1. 数值匹配搜索

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

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

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

  1. 搜索过滤

深度学习模型有一个速度的硬伤,相比传统方法,每一次预测需要消耗更多的时间。而用户是无法忍受搜索中的延迟。为了实现在海量网页和文件中的快速搜索遍历,我们不得不使用到更加传统的方法, 而把深度学习方法放到后续更加适合的步骤中。

在这里插入图片描述

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

  1. 正排/倒排索引

倒排索引是一种批量召回技术,它能快速在海量数据中初步召回基本符合要求的文章。

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

live_for_myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值