如何让搜索结果更准确呢?-八维教育
优采云 发布时间: 2021-08-23 21:32如何让搜索结果更准确呢?-八维教育
搜索引擎可以说是所有互联网应用中技术最先进的。虽然申请表比较简单:用户输入查询词,搜索引擎返回搜索结果。但是,搜索引擎需要达到的目标是:更全面、更快、更准确。如何让搜索结果更准确,一直是搜索引擎的一大难题。
公司目前正在开发某行业的垂直搜索引擎。作为项目组的核心成员,主要负责核心算法的研究。刚开始接触这个行业,还在摸索阶段,还有很长的路要走。
言归正传,说说这个项目的背景。这个项目是一个行业垂直搜索引擎。用户分为两类:普通用户和专业用户。整个项目分为:爬虫技术组、引擎组、大数据分析组和算法组。引擎的爬虫、词库的建立、引擎的选择不是本文的重点,我简单提一下,重点是推荐算法的设计。
一、网络爬虫
系统的数据需要从几个专业的网站采集。尝试了几个爬虫,最后选择了heritrix作为我们的爬虫框架。选择它的主要原因是虽然配置项很多,但是更加灵活,特别适合我们的需求。当然,爬虫技术团队也尝试过自己实现一个爬虫,主要是爬取几种固定地址的数据。
二、词库建立
词库初步分为专业词库、一般行业词库、一般一般词库、过时词库、情感分析词库。
专业词库实现初期采用人工处理,并为专业人士制作了多项辅助工具,用于选择、合并和删除主题词。
后几个词库的实现是基于对搜狗等几种输入法的词库的选择,然后在这些词库的基础上对爬虫爬取的文档进行矢量化处理。
三、工程建设
通过对采集数据进行去噪、分割、特征提取,然后将对应的数据导入solr中。
四、recommendation 算法
当用户输入关键词查询时,如何让用户查询更准确?我们设想,对于用户输入,如果我们能给出几个与用户输入的关键词相似的词,并以此作为查询条件,如果我们的算法足够好,搜索结果会大大提高检索准确率。具体算法思路如下:
从向量化的角度来看,每个文档对应一个向量
,哪里
表示特征项 i。
是由词、词位置、TF等含义确定的向量。对于版本 1,我们只取了单词和单词的位置。我们首先使用分类规则将文档分为几个类别,并根据每个类别计算如下:
表示两个特征项的相似度。
让我们定义距离公式
对于每个文档的特征项,我们成对地找出特征项的相似度。通过这个距离公式
我们可以得出结论,对于每个类别,以这些特征项为顶点,以相似距离为边来构建
它变成了下面的无向图。
(法律网)
类似于 Hownet 的 wordnet 和 hownet,我们称这种无向图为 lawnet。
那么我们的假设问题就转化为:选择任意一个顶点,找到一个由这些顶点组成的数(例如10),最小的生成树或者边权重之和最小的最小子图。这是一个具有局部最优性的随机问题。换句话说,我们只需要满足用户认可的体验级别。如果概率是90%,也就是说用户输入10000次,我们就可以成功给出9000个提示词。
目前,我尝试了两种解决方案:
一种 PRIM 算法。
算法二:首先通过floyd算法计算任意两点之间的最短距离,作为一条边;这些边被组合成一个集合。然后,对于任何顶点,从该边集中找到收录该顶点的前 N 个最小边。