主要是PR技术以及匹配技术。
最著名的并且获得了专利的当然就是google的PR技术
家可能听说过,Google革命性的发明是它名为“PageRank”的网页排名算法,这项技术彻底解决了搜索结果排序的问题。其实最先试图给互联网上的众多网站排序的并不是Google。Yahoo!公司最初第一个用目录分类的方式让用户通过互联网检索信息,但由于当时计算机容量和速度的限制,当时的Yahoo!和同时代的其它搜索引擎都存在一个共同的问题:收录的网页太少,而且只能对网页中常见内容相关的实际用词进行索引。那时,用户很难找到很相关信息。我记得1999年以前查找一篇论文,要换好几个搜索引擎。后来DEC公司开发了AltaVista搜索引擎,只用一台ALPHA服务器,却收录了比以往引擎都多的网页,而且对里面的每个词进行索引。AltaVista虽然让用户搜索到大量结果,但大部分结果却与查询不太相关,有时找想看的网页需要翻好几页。所以最初的AltaVista在一定程度上解决了覆盖率的问题,但不能很好地对结果进行排序。
Google的“PageRank”(网页排名)是怎么回事呢?其实简单说就是民主表决。打个比方,假如我们要找李开复博士,有一百个人举手说自己是李开复。那么谁是真的呢?也许有好几个真的,但即使如此谁又是大家真正想找的呢?:-)如果大家都说在Google公司的那个是真的,那么他就是真的。
在互联网上,如果一个网页被很多其它很多网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高。这就是PageRank的核心思想。当然Google的PageRank算法实际上要复杂得多。比如说,对来自不同网页的链接对待不同,本身网页排名高的链接更可靠,于是给这些链接予较大的权重。PageRank考虑了这个因素,可是现在问题又来了,计算搜索结果的网页排名过程中需要用到本身网页的排名,这不成了先有鸡还是先有蛋的问题了吗?
Google的两个创始人拉里佩奇(LarryPage)和谢尔盖布林(SergeyBrin)把这个问题变成了一个二维矩阵相乘的问题,并且用迭代的方法解决了这个问题。他们先假定所有网页的排名是相同的,并且根据这个初始值,算出各个网页的第一次迭代排名,然后再根据第一次迭代排名算出第二次的排名。他们两人从理论上证明了不论初始值如何选取,这种算法都保证了网页排名的估计值能收敛到他们的真实值。值得一提的事,这种算法是完全没有任何人工干预的。
理论问题解决了,又遇到实际问题。因为互联网上网页的数量是巨大的,上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。如果我们假定有十亿个网页,那么这个矩阵就有一百亿亿个元素。这样大的矩阵相乘,计算量是非常大的。拉里和谢尔盖两人利用稀疏矩阵计算的技巧,大大的简化了计算量,并实现了这个网页排名算法。今天Google的工程师把这个算法移植到并行的计算机中,进一步缩短了计算时间,使网页更新的周期比以前短了许多。
我来Google后,拉里(Larry)在和我们几个新员工座谈时,讲起他当年和谢尔盖(Sergey)是怎么想到网页排名算法的。他说:"当时我们觉得整个互联网就像一张大的图(Graph),每个网站就像一个节点,而每个网页的链接就像一个弧。我想,互联网可以用一个图或者矩阵描述,我也许可以在用这个发现做个博士论文。"他和谢尔盖就这样发明了PageRank的算法。
网页排名的高明之处在于它把整个互联网当作了一个整体对待。它无意识中符合了系统论的观点。相比之下,以前的信息检索大多把每一个网页当作独立的个体对待,很多人当初只注意了网页内容和查询语句的相关性,忽略了网页之间的关系。
今天,Google搜索引擎比最初的复杂、完善了许多。但是网页排名在Google所有算法中依然是至关重要的。在学术界,这个算法被公认为是文献检索中最大的贡献之一,并且被很多大学引入了信息检索课程(InformationRetrieval)的教程。
1、抓取网页
每个独立的搜索引擎都有自己的网页抓取程序(spider)。Spider顺着网页中的超链接,连续地抓取网页。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
2、处理网页
搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分析超链接、计算网页的重要度。
3、提供检索服务
用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。
什么是pagerank呢,PageRank的英文缩写是PR。 PageRank 是 Google 对网页重要性的评估;
PageRank值的提高可有效提升你的网页在 Google搜索引擎中的页面排名,但并不是说PageRank越高则排名越靠前。有一些网站尽管PageRank不算高,但却较一些PageRank高的网站排名还要靠前。所以你应该在对网站优化的同时,也要努力提高网站的PR值。提高PR最佳和最简单的办法在于:
1 提供有趣、有价值的网站内容,这样站长们会主动和你进行友情链接,从而提高你的外部链接值。
2 将网站提交到各大搜索引擎,这样可显著改善你的网站在Google上的排名。
3 可将网站添加到行业门户站点、网上论坛、留言簿等等各种允许添加网址链接的地方。
4 与其他网站交换链接来提高链接权值。
5 与其他网站交换链接时首先要查看对方站点是否被Google删除,或是否被Google收录,没有被Google收录的站点最好不要做连接。
注:转自于 有赞
在上篇文章(工程篇)中, 我们介绍了有赞搜索引擎的基本框架 搜索引擎主要3个部件构成 第一, hadoop集群, 用于生成大规模搜索和实时索引; 第二, ElasticSearch集群, 提供分布式搜索方案; 第三, 高级搜索集群, 用于提供商业搜索的特殊功能
商业电商搜索由于搜索的特殊性, 独立的ElasticSearch集群是无法满足多样的算法需求的, 我们在搜索的各个部件上都有相应的算法插件, 用于构建商业电商搜索引擎的算法体系
创建索引过程从原始数据创建倒排索引的过程 这个过程中我们对商品(doc)进行分析, 计算商品静态分, 并对商品进行相似度计算 商品的静态分对于提升搜索引擎质量起到至关重要的作用, 相当于网页搜索的pagerank, 想象一下如果没有pagerank算法, 网页搜索的质量会有多么差 在电商搜索中, 最常见的问题是相似商品太多, 必须在建立索引过程中就对商品间的相似度进行预计算, 以便在检索过程中进行有效去重
创建索引的过程如下
step 1 计算每个doc的静态分
step 2 计算两两doc的相似度
step 3 根据相似度和其他信息对数据进行分库
step 4 建立ES索引
检索过程是搜索引擎接收用户的query进行一系列处理并返回相关结果的过程 商业搜索引擎在检索过程中需要考虑2个因素: 1) 相关性 2) 重要性
相关性是指返回结果和输入query是否相关, 这是搜索引擎基本问题之一, 目前常用的算法有BM25和空间向量模型 这个两个算法ElasticSearch都支持, 一般商业搜索引擎都用BM25算法 BM25算法会计算每个doc和query的相关性分, 我们使用Dscore表示
重要性是指商品被信赖的程度, 我们应该吧最被消费之信赖的商品返回给消费者, 而不是让消费之自己鉴别 尤其是在商品充分竞争的电商搜索, 我们必须赋予商品合理的重要性分数, 才能保证搜索结果的优质 重要性分, 又叫做静态分, 使用Tscore表示
搜索引擎最终的排序依据是:
Score = Dscore Tscore
即综合考虑静态分和动态分, 给用户相关且重要的商品
检索的过程大致抽象为如下几个步骤
step 1 对原始query进行query分析
step 2 在as中根据query分析结果进行query重写
step 3 在as中使用重写后的query检索es
step 4 在es查询过程中根据静态分和动态分综合排序
step 5 在as中吧es返回的结果进行重排
step 6 返回结果
下面几章阐述几个重点技术
在电商搜索引擎里面商品的静态分是有网页搜索里面的pagerank同等的价值和重要性, 他们都是doc固有的和查询query无关的价值度量 pagerank通过doc之间的投票关系进行运算, 相对而言商品的静态分的因素会更多一些 商品静态计算过程和pagerank一样需要解决如下2个问题: 1 稳定性 pagerank可以保证一个网站不会因为简单链接堆砌可以线性提升网站的排名 同样, 商品静态分的计算不可以让商品可以通过增加单一指标线性增加分值(比如刷单对搜索引擎的质量的影响)
2 区分度 在保证稳定性的基础上商品静态分要有足够的区分度可以保证同样搜索的条件下, 排在前面的商品的质量比排在后面的商品的质量高
我们假设商品的静态分有3个决定性因素, 1下单数, 2 好评率 3 发货速度
静态分我们使用Tsocre表示, Tscore可以写成如下形式:
Tscore = a f(下单数) + b g(好评率) + c h(发货速度)
a,b,c是权重参数, 用于平衡各个指标的影响程度 f,g,h是代表函数用于把原始的指标转化成合理的度量
首先, 我们需要寻找合理的代表函数
z-score 标准化方法
这种方法非常不稳定, 假设一个奇异点是第二大的值的1000倍, 会让大部分的值都集中在0~001, 同样失去了归一化的目的
(图三: log-zscore归一化)
最后, 选择合适的权重 经过log-zscore归一化以后, 我们基本上吧f,g,h的表示的代表函数说明清楚 Tscore = a f(下单数) + b g(好评率) + ch(发货速度), 下一步就是确定a,b,c的参数 一般有两个方法:
a) 专家法 根据我们的日常经验动态调整权重参数;
b) 实验法 首先在专家的帮助下赋一个初始值, 然后改变单一变量的方法根据abtest的结果来动态调整参数
商品标题去重在电商搜索中起到重要作用, 根据数据, 用户通过搜索页购买商品80%选择搜索的前4页 商品标题的重复会导致重要的页面没有含金量, 极大降低了搜索的购买率
举个例子:
Title1:美味/香蕉/包邮/广东/高州/香蕉/banana//无/催熟剂/
Title2:美味/香蕉/广东/高州/香蕉//非/粉蕉/包邮/
首先, 进行特征向量化
这里用到 "bag of word" 技术, 将词汇表作为空间向量的维度, 标题的每个term的词频作为这个feature的值 以这个例子来说 这个词汇的维度为: 美味(0), 香蕉(1), 包邮(2), 广东(3), 高州(4), banana(5),无(6), 催熟剂(7),非(8),粉蕉(9) 位置: 0,1,2,3,4,5,6,7,8,9
Title1: 1,2,1,1,1,1,1,1,0,0
Title2: 1,2,1,1,1,0,0,0,1,1
这个每个title都用一个固定长度的向量表示
再次, 计算两两相似度
相似度一般是通过计算两个向量的距离实现的, 不失一般性, 在这里我们使用1-cosine(x,y)来表示两个向量的距离 这是一个"All Pair Similarity"的问题, 即需要两两比较, 复杂度在O(n^2) 在商品量巨大的时候单机很难处理 我们给出两种方法用于实现"All Pair Similarity"
方法一: spark的矩阵运算
方法二: map-reduce 线性方法 这个方法参考论文"Pairwise Document Similarity in Large Collections with MapReduce" 可以实现几乎线性的时间复杂度 相对于矩阵运算在大规模(10亿以上)pair similarity 运算上面有优势 这个方法简单的描述如下: 首先, 按照倒排索引的计算方式计算每个term到doc的映射 比如3个doc:
转化为倒排格式, 这个需要一次mapper reduce
然后, 对于value只有一个元素的过滤掉, 对于value大于2个doc的两两组合:
最后, 对于输出进行聚合,value为重复次数和两个doc乘积开根号的比
对于2个title1, title2, 如果X(title1, title2) > 07 则认为title1和title2相似, 对于相似的两个doc, 静态分大的定义为主doc, 静态分小的定义为辅doc 主doc和辅doc分别建库
区别于网页搜索(网页搜索直接将辅doc删除), 我们将主doc和辅doc分别建库 每一次搜索按比例分别搜主库和辅库, 并将结果融合返回 这样可以保证结果的多样性
店铺去重和商品标题去重有点不同 由于电商特定场景的需要, 不希望搜索结果一家独大, 这样会引发强烈的马太效应 店铺去重不能使用如上的方法进行 因为上面的方法的主要依据是文本相似, 在结果都相关的前提下, 进行适当的取舍 但是店铺去重不是这样的特性
设想一下, 如果我们根据店铺是否相同, 把同一店铺的商品分到主库和从库中, 如下图所示
A和B代表不同的店铺
在搜索香蕉的时候, 的确可以控制A店铺结果的数量, 但是在搜索"梨"的时候就错误的吧B店铺的梨排在前面了(假设A:梨比B:梨静态分高)
搜索的过程每个桶平均分摊搜索任务的25%, 并根据静态分合并成一页的结果 这样同一保证结果的相对顺序, 又达到了店铺去重的目的
如上图所示, 搜索"香蕉", 虽然A店铺有10个满足需求的结果, 但是每页搜索醉倒只有5个结果可以展示
上面介绍了几个建立索引过程中几项技术, 检索过程中的关键技术有很多 其中最著名的是query分析技术 我们使用的query分析技术主要包括核心词识别, 同义词拓展, 品牌词识别等等 query分析技术大部分都是NLP研究范围, 本文就不详细阐述很多理论知识 我们重点介绍同义词拓展技术 这个技术一般都需要根据自己的商品和和用户日志特定训练, 无法像分词技术和品牌词识别一样有标准的库可以适用
同义词拓展一般是通过分析用户session日志获取 如果一个用户输入"苹果手机"没有得到想要的结果, 他接着输入"iphone", 我们在"苹果手机"和"iphone"之间创建一个转移关系 基于统计, 我们可以把用户query创建一个相互联系的权重图
用户输入query "苹果手机", 根据query分析, "苹果手机"有 "iphone" 08, "iphone 6" 05 两个同义词 08和05分别表示同义的程度 我们想要"苹果手机", "iphone", "iphone 6" 3个query同时输入, 并且按照同义的程度对不同的query赋予不同的权重 ElasticSearch提供的BoostingQuery可以支持这个需求 参考: >
推荐一些Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等。
一、学习路线图
Hadoop家族学习路线图 开篇必读
Hive学习路线图
Mahout学习路线图
二、编程实践
Hadoop历史版本安装
用Maven构建Hadoop项目
Hadoop编程调用HDFS
用Maven构建Mahout项目
Mahout推荐算法API详解
用MapReduce实现矩阵乘法
从源代码剖析Mahout推荐引擎
Mahout分步式程序开发 基于物品的协同过滤ItemCF
Mahout分步式程序开发 聚类Kmeans
PageRank算法并行实现
三、案例分析
海量Web日志分析 用Hadoop提取KPI统计指标
用Hadoop构建**推荐系统
用Mahout构建职位推荐引擎
Mahout构建图书推荐系统
PeopleRank从社交网络中发现个体价值
PageRank是Google专有的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。它由Larry Page 和 Sergey Brin在20世纪90年代后期发明。
PageRank实现了将链接价值概念作为排名因素。PageRank将对页面的链接看成投票,指示了重要性。
您好,答题不易
如有帮助请采纳,谢谢!
用这个
memcpy(a, b, sizeof(float) size);
函数原型void memcpy(void dest, const void src, int n);
功能从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
头文件#include <memoryh>
返回值函数返回一个指向dest的指针。
补充:
按你说的,你可以释放a,然后把b赋值给a阿,能说说输出怎么有问题了吗?
(任一鸣)相比通用搜索引擎的海量信息和无序化,垂直搜索引擎显得更加专注、具体和深入。 根据iResearch的研究显示,2006年中国每天使用搜索引擎的用户数量有9000多万人,每个用户日均使用77次搜索引擎。到了2010年,每天使用搜索引擎的用户数将近两亿人,用户日均使用搜索引擎次数也将达到121次。市场需求的多元化进一步导致了搜索引擎的行业化和细分化,垂直搜索引擎应运而生。
为了对抗日益强大的Google,微软于今年2月份和3月份分别收购了法国的手机搜索引擎MotionBridge和移动搜索语音识别公司TellMe Networks。微软的这一系列举动也显示出垂直搜索引擎市场的巨大潜力。
垂直搜索引擎针对某一个行业或组织,提供满足行业专业需求或者业务需求的专业搜索引擎,是搜索引擎的细分和延伸,是对某类网页资源和结构化资源的深度整合,可为用户提供符合专业 *** 作行为的信息服务。
垂直搜索引擎的特色
信息采集: 主动与被动相结合
从采集方式看,互联网搜索以被动方式为主,搜索引擎和被采集的网页没有约定的、标准的格式; 企业搜索以主动方式为主,被采集的办公文档、CRM 和 ERP 中的数据等都和企业搜索引擎有着约定好的采集接口和安全接口; 垂直搜索则采用被动和主动相结合的方式,有效采集网页中标引的元数据,整合上下游网页资源或者商业数据库,提供更加准确的搜索服务。
从采集深度、动态网页采集的优先级、结构化数据库信息采集来看,互联网搜索采用广度为先的策略,所以对采集深度要求不高,而垂直搜索和企业搜索需要挖掘出行业内所有相关的网页信息,所以往往采用深度为先的策略。同时由于行业内的一些有商业价值的信息采用动态发布的方式,如企业数据库、供求信息等,所以垂直搜索对动态网页的采集优先级别较高。在实际应用中,垂直搜索和企业搜索都需要集成和采集关系数据库中的结构化信息,如垂直搜索中政府需要集成法律法规库、企业搜索中需要采集 ERP和CRM中的信息等。
信息加工: 将非结构化信息抽取为结构化数据
垂直搜索引擎和普通网页搜索引擎的最大区别,是对网页信息进行了结构化信息抽取加工,也就是将网页的非结构化数据抽取成特定的结构化信息数据。网页搜索是以网页为最小单位,而垂直搜索是以结构化数据为最小单位。
垂直搜索的结构化信息提取和加工主要包括两种: 网页元数据的提取,包括标题、作者、发表时间、版权所有等; 内容中结构化实体信息的提取,包括人名、地名、组织机构名、电话号码等。这些数据存储到数据库中,进行进一步的加工处理,如去重、分类、分词、索引,再以搜索的方式满足用户的需求。
目前,从垂直搜索的应用情况看,大部分垂直搜索的结构化信息提取都是依靠手工或半手工的方式来完成的,面对互联网的海量信息,很难保证信息的实时性和有效性,对智能化的结构化信息提取技术的需求非常迫切。但因目前国内非结构化信息的智能提取技术取得了重大进展,在一些领域得到了有效应用,因此智能化成为了垂直搜索引擎的发展趋势。
信息检索: 结构化和非结构化相结合
从信息检索来看,垂直搜索引擎不但能够对网页信息中的结构化信息进行检索,而且能够提供结构化和非结构化信息相结合的检索方式。比如我们找工作时关注的记录(职位信息:软件工程师; 公司名称: 软件公司; 地点: 北京海淀)。
从检索结果的排序方式看,互联网搜索主要通过 PageRank 算法来实现; 企业搜索大多采用检索内容和检索词的相关度来实现; 而垂直搜索的排序需求更加多样化,如按时间排序、按相关度排序、按某个结构化字段排序(比如购物搜索中的按价格排序)等等。
垂直搜索应用遍地开花
有效提升政务资源价值
门户技术中的“网站群技术”和“全文检索技术“有效地整合了行政领导关系比较紧密的部门的内部信息资源,垂直搜索技术则有效整合了行政领导关系比较松散的机构间的信息资源,使得政务信息资源的聚拢和整合得以最大化,政务资源的可挖掘能力得到提高,有效地提升了政务资源的价值。一站式检索和导航服务提高了政府门户的公众服务水平
面对多如繁星的政府门户网站,用户查询信息和网上办事时往往无所适从,政务垂直搜索引擎的建设恰恰解决了这个问题,用户可以通过搜索引擎的各种检索方式,方便地获取过去需要访问多个网站才能查全的信息,同时也可以通过检索获取网上办事的入口。
在政治体制改革环境下,政府介入微观经济领域越来越少,国家各个行业的部分机构由事业型机构转为企业。部委和下面的机构之间已经没有了行政领导职能,但是业务上还是存在千丝万缕的联系,两者还存在业务指导关系,垂直搜索引擎则将两者有效地“凝聚在一起”。垂直搜索通过“信息的关联”把大家联系在一起,有利于行业内的交流和协作。
打造企业竞争情报系统的核心引擎
企业的竞争情报信息既包括外部的互联网信息、商业数据库信息等,也包括内部的办公文档资料、内部交流信息等。垂直搜索引擎恰恰是整合这些内外信息资源的有效手段之一,在资源整合的基础上,形成以情报规划、情报采集、情报加工、情报服务、评估反馈为生命周期的统一的企业竞争情报平台,为企业的风险预警和决策支持提供信息服务。
随着企业信息化的发展和深入,为了提高企业内部、企业和客户、企业和供应商之间的信息传递和共享速度,加速企业的业务进程,大部分企业(特别是分支机构较多的大型集团性企业)都建立了内外网服务门户,通过垂直搜索引擎可以高效地采集内外网门户信息,为企业员工、客户、供应商提供统一的信息检索入口,并通过权限控制实现安全的检索服务,使得信息的传递和共享更加便捷和有序。
“内容门户”+”搜索门户”有效提高行业门户的竞争力
垂直搜索发展迅速,从购物搜索、影视搜索到旅游搜索、政府搜索、大学搜索等花样翻新、层出不穷,这些都给行业门户带来一定的冲击。通过垂直搜索引擎可以更好地整合行业的相关资源,增强内容资源的相关性,挖掘行业资源的价值; 同时,企业通过搜索可以为用户提供更加个性化的信息服务; 并通过把握和分析用户的搜索行为,改进信息服务质量,提高服务水平。
以上就是关于百度网站的开发技术全部的内容,包括:百度网站的开发技术、什么是PageRank、有赞搜索引擎实践(算法篇)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)