几种常见的搜索引擎检索模型
2016-05-14 10:24
239 查看
布尔模型
苹果 AND 公司:表示搜索既包含“苹果”,又包含“公司”这两个词的文档。苹果 OR 公司:表示搜索包含“苹果”,或包含“公司”这两个词中任意一个的文档。
特点:简单粗暴
向量空间模型
把文档被分词后的每一个词当作向量空间的一个维度,把文档表示为一个线性矩阵,比较某个文档的矩阵和查询词的矩阵之间的余弦距离,距离越近,则相关性越大。最后根据相关性对搜索结果做排序。注意事项:使用TF-IDF对部分词权重进行调整,对文档长度过大的做惩罚等。
特点:依赖于经验对模型的参数进行调整。
BIM、BM25、BM25F
这三个算法是逐步完善的关系BIM
对于用户的一次搜索,假设拆分为三个词W1、W2、W3,假设索引库中的文档总数为100,有10个文档包含W1,20个文档包含W2,30个文档包含W3,则把W1的权重记为10%,W2的权重记为20%,W3的权重记为30%。假设有一个文档Doc1包含W1、W2两个搜索词,则它的相关性为10%,20%两个权重的汇总。依此对索引库中的100个文档算出相关性得分,把搜索结果按相关性得分排序即可。
BM25
在BIM的基础上增加了两个新的参考因素:1、搜索词在文档中的权重;2、搜索词自身的权重。
BM25F
在BM25的基础上增加考虑了文档中不同Field的权重。比如,标题中包含搜索比内容中包含搜索词要有更高的相关性得分。
特点:当前效果最好的模型,在商业搜索引擎中广泛使用。
统计语言模型
先引入一个概念:抽取概率把一篇文档进行分词,统计其中每个词的出现频率进行计数,则一个词Word在文档Doc中的抽取概率为“Word词的计数/Doc中所有词的计数之和”。所谓抽取概率,就是在Doc中随机抽取一个词的话,Word被抽取到的概率。
假设用户搜索“野鸟装备 跑步”,野鸟装备在文档Doc1中的抽取概率1%,跑步的抽取概率为2%,则该次搜索中,Doc1的相关性得分为1%*2%。依此可以计算出所有文档的相关性得分,并按相关性得分对搜索结果进行排序。
特点:与BM25效果相当,但需使用大量语料库来训练,语料库最好与使用场景比较相似。
机器学习模型
机器学习与前面的模型相比,有几个显著的不同:1、这里一般使用有监督的机器学习,因此需要对训练结果有监督反馈,用户对搜索结果的隐性评价(即点击)可以看作是一种监督反馈。
2、传统搜索计算搜索结果相关性一般也就考虑关键词匹配、词频等少数几个维度的数据,使用前面提到的模型已经足够,只有当考察的数据维度比较多时,机器学习的优势才会体现出来。比如像百度、Google这种大型的商业搜索引擎,考察的数据维度要多很多,比如链入链出链接数、网站类型、网站权威度、用户地理位置、历史搜索习惯、设备类型等等,据说Google考察的数据维度多达几百个。
特点:复杂度高,适合大型商业搜索引擎。
相关文章推荐
- 编译和使用zlib
- 为什么西汉“透光镜”会产生奇异的透光现象?
- Coursera机器学习-第四周-Neural Network ForwardPropagation
- Swift工程使用OC类
- jquery md5加密
- 征服你的面试官系列1---消息机制
- code1214 线段覆盖
- Git使用之SourceTree
- vector 用法
- java md5,md2,md4 加密算法
- Python HTML操作(HTMLParser)
- android关于AndroidManifest.xml详细分析
- android studio中去掉默认的标题栏
- 字符串函数-strcpy
- iOS学习网站
- CSS中的#和.
- HDU 1247 Hat’s Words
- nginx无法编译的解决方法
- 网络请求
- 阶梯问题 动态规划浅析