提问人:RobertPitt 提问时间:10/19/2010 最后编辑:Has QUIT--Anony-MousseRobertPitt 更新时间:7/3/2012 访问量:6376
搜索引擎如何找到相关内容?[已结束]
How do search engines find relevant content? [closed]
问:
我们不允许向读者、工具、软件库等寻求推荐的问题。您可以编辑问题,以便用事实和引文来回答。
6个月前关闭。
谷歌在解析网络时如何找到相关内容?
例如,假设 Google 使用 PHP 原生 DOM 库来解析内容。它们会是什么方法来在网页上找到最相关的内容?
我的想法是,它将搜索所有段落,按每个段落的长度排序,然后从可能的搜索字符串和查询参数中计算出每个段落的相关性百分比。
假设我们有这个 URL:
http://domain.tld/posts/stackoverflow-dominates-the-world-wide-web.html
现在,从该 URL 中,我将计算出 HTML 文件名将具有高度相关性,因此我将看到该字符串与页面中所有段落的比较程度!
一个很好的例子是Facebook分享,当你分享一个页面时。Facebook 会迅速机器人化链接并带回图像、内容等。
我在想某种计算方法是最好的,根据周围的元素和元数据计算出相关性的百分比。
是否有任何关于内容解析最佳实践的书籍/信息,涵盖如何从网站获取最佳内容、任何可能被谈论的算法或任何深入的回复?
我想到的一些想法是:
- 查找所有段落并按纯文本长度排序
- 以某种方式找到容器的宽度和高度,并按 (W+H) - @Benoit 排序
div
- 检查元关键字、标题、描述并检查段落中的相关性
- 查找所有图像标签并按最大节点和远离主段落的长度排序
- 检查对象数据,例如视频,并计算最大段落/内容 div 中的节点
- 找出以前解析的页面的相似之处
我需要此信息的原因:
我正在建立一个网站,网站管理员向我们发送链接,然后我们列出他们的页面,但我希望网站管理员提交一个链接,然后我去抓取该页面,找到以下信息。
- 图像(如果适用)
- 来自最佳文本片段的 < 255 段
- 将用于我们的搜索引擎的关键字,(Stack Overflow 样式)
- 元数据关键字、描述、所有图像、更改日志(用于审核和管理目的)
希望你们能明白,这不是针对搜索引擎的,而是搜索引擎处理内容发现的方式与我需要它的方式相同。
我不是在要求商业机密,我是在问你个人对此的态度是什么。
答:
谷歌的“网络爬虫、机器人、蜘蛛和智能代理”,也可能会单独尝试它们以获得单独的结果。
我认为您正在寻找的是 Screen Scraping(使用 DOM),Stack 对此有大量的问答。
评论
大多数搜索引擎在文档的头部寻找标题和元描述,然后在正文中寻找标题和文本内容。图像替代标签和链接标题也被考虑在内。最后,我读到雅虎正在使用元关键字标签,但大多数都没有。
您可能想从 Sourceforge https://sourceforge.net/projects/tsep/ 上的搜索引擎项目 (TSEP) 下载开源文件,看看他们是如何做到的。
评论
我不在谷歌工作,但大约一年前,我读到他们有 200 多个因素来对搜索结果进行排名。当然,排名靠前的是相关性,所以从这个意义上说,你的问题非常有趣。
什么是相关性,你如何计算它?有几种算法,我敢打赌谷歌有自己的算法,但我知道的是皮尔逊相关和欧几里得距离。
关于这个话题,我推荐的一本好书(不一定是搜索引擎)是 Toby Segaran (O'Reilly) 的 Programming Collective Intelligence。书中的一些示例展示了如何通过 API 或屏幕抓取从第三方网站获取数据,并找到类似的条目,这非常好。
无论如何,回到谷歌。其他相关性技术当然是全文搜索,你可能想得到一本关于MySQL或狮身人面像的好书。@Chaoley建议的是TSEP,这也很有趣。
但实际上,我认识来自一家名为Yandex的俄罗斯搜索引擎的人,他们所做的一切都在保密协议下,所以我想你可以接近,但你不可能变得完美,除非你在谷歌工作;)
干杯。
评论
很棘手,但我会试一试:
图像(如果适用)
- 页面上的第一张图片
- 名称中包含字母“徽标”的图像
- 最接近左上角(或右上角)呈现的图像
- 最常出现在网站其他页面上的图像
- 小于某些最大尺寸的图像
来自最佳文本片段的 < 255 段
- 标题标签的内容
- 元内容描述标记的内容
- 第一个 H1 标签的内容
- 第一个 P 标签的内容
将用于我们搜索引擎的关键字(堆栈溢出样式)
- 域名的子字符串
- URL 的子字符串
- title 标签的子字符串
- 术语与页面上和页面顶部最常用的单词之间的接近度
元数据关键字、描述、所有图像、更改日志(用于审核和管理目的)
- AK!插科打诨!语法错误。
评论
我只会抓住文本的第一个“段落”。大多数人写故事/问题/任何东西的方式是,他们首先陈述最重要的事情,然后详细说明。如果你看任何随机文本,你会发现它在大多数情况下是有道理的。
例如,您在原始问题中自己做。如果你把原来问题的前三句话拿出来,你就对你想做的事情有一个很好的总结。
而且,我自己也这样做了:我评论的要点总结在第一段中。其余的只是例子和阐述。如果你不相信,看看我最近从谷歌新闻中半随机挑选的几篇文章。 好吧,最后一个不是半随机的,我承认;)
无论如何,我认为这是一种非常简单的方法,大多数时候都有效。您可以随时查看元描述、标题和关键字,但如果它们不存在,这可能是一个选项。
希望这会有所帮助。
谷歌还使用一个名为Page Rank的系统,其中 它检查有多少个指向站点的链接。假设您正在寻找一个 C++ 教程,并在 Google 上搜索一个。你找到一个作为顶部结果,这是一个很棒的教程。谷歌知道这一点,因为它搜索了网络缓存,发现每个人都链接到本教程,同时咆哮它有多好。谷歌欺骗说这是一个很好的教程,并将其作为最佳结果。
它实际上是这样做的,因为它缓存了所有内容,如前所述,根据指向它的链接为每个页面提供页面排名。
希望这有帮助!
评论
为了回答你的一个问题,我现在正在阅读以下书籍,我推荐它:谷歌的PageRank及其他,作者是艾米·兰维尔(Amy Langville)和卡尔·迈耶(Carl Meyer)。
温和的数学。在图论上下文中使用一些线性代数、特征分析、马尔可夫模型等。我喜欢讨论求解线性方程的迭代方法的部分。我不知道谷歌采用了这些迭代方法。
短书,只有200页。包含偏离文本主流的“旁白”,以及历史视角。还指出了其他最近的排名系统。
评论
这是一个非常笼统的问题,但也是一个非常好的话题!绝对投赞成票:) 但是,我对到目前为止提供的答案并不满意,所以我决定就此写一个相当长的答案。
我不满意的原因是答案基本上都是正确的(我特别喜欢 kovshenin (+1) 的答案,它与图论非常相关......),但所有答案要么在某些因素上过于具体,要么过于笼统。
这就像问如何烤蛋糕,你会得到以下答案:
- 你做一个蛋糕,然后把它放在烤箱里。
- 你肯定需要糖!
- 什么是蛋糕?
- 蛋糕是谎言!
你不会满足,因为你不知道什么是好蛋糕。 当然,还有很多或互惠。
当然,谷歌是最重要的参与者,但是,根据用例的不同,搜索引擎可能会包含非常不同的因素或不同的权重。
例如,用于发现新的独立音乐艺术家的搜索引擎可能会放一个malus 艺术家网站有很多外部链接。
主流搜索引擎可能会做完全相反的事情来为您提供“相关结果”。
谷歌发布的(如前所述)有 200 多个因素。 因此,网站管理员知道如何优化他们的网站。 很可能还有更多公众不知道的(在谷歌的案例中)。
但是在非常无聊和抽象的术语SEO优化中,你通常可以将重要的部分分为两组:
答案与问题的匹配程度如何?艺术 页面内容与搜索词的匹配程度如何?
答案有多受欢迎/好?艺术 PageRank是多少?
在这两种情况下,重要的是我不是在谈论整个网站或域,而是在谈论具有唯一 URL 的单个页面。
同样重要的是,PageRank并不代表所有因素,而只代表Google归类为受欢迎程度的因素。我所说的好是指与受欢迎程度无关的其他因素。
如果是谷歌,官方声明是他们希望向用户提供相关结果。 这意味着所有算法都将针对用户的需求进行优化。
所以经过这么长的介绍(很高兴你还和我在一起......我将为您提供我认为非常重要的因素列表(目前):
第 1 类(答案与问题的匹配程度如何?
您会注意到,很多事情都归结为文档的结构!
- 该页面主要处理确切的问题。
含义:问题词出现在页面标题文本或标题段落段落中。 关键字的位置也是如此。页面越早越好。 也经常重复(如果不是太多,则以关键字填充的名称命名)。
整个网站都处理该主题(关键字出现在域/子域中)
单词是此页面中的一个重要主题(内部链接锚文本跳转到关键字的位置或锚文本/链接文本包含关键字)。
如果外部链接使用链接文本中的关键字链接到此页面,情况也是如此
类别 2(页面有多重要/受欢迎?
你会注意到,并非所有因素都指向这个确切的目标。 有些被包括在内(尤其是谷歌),只是为了给页面一个提升, 那。。。井。。。这是应得的/应得的。
- 内容为王!
在网络的其余部分找不到或只有很少的独特内容的存在提供了推动力。 这主要是通过网站上通常很少使用的单词(重要单词)的无序组合来衡量的。但也有更复杂的方法。
新近度 - 越新越好
历史更改(页面过去更新的频率。改变是好的。
外部链接受欢迎程度(有多少个链接?
如果一个页面链接到另一个页面,如果页面本身具有较高的PageRank,则该链接的价值更高。
- 外部链接多样性
基本上是来自不同根域的链接,但其他因素也起作用。 诸如链接站点的 Web 服务器在地理位置上的分离程度(根据其 IP 地址)等因素。
- 信任等级
例如,如果大型的、受信任的、具有编辑内容的成熟网站链接到您,您将获得信任等级。 这就是为什么《纽约时报》的链接比一些奇怪的新网站更有价值,即使它的PageRank更高!
- 域信任
如果您的域名受信任,您的整个网站都会提升您的内容。 好吧,这里有不同的因素。当然,从受信任的站点链接到您的域,但如果您与重要网站位于同一数据中心,它甚至会做得很好。
- 特定主题的链接。
如果可以解析为主题的网站链接到您,并且查询也可以解析为此主题,那就太好了。
- 链接随时间推移的分布。
如果你在短时间内获得了很多链接,这将在这个时候和之后的不久的将来对你有好处。但后来就不那么好了。 如果你缓慢而稳定地获得链接,它将对你有好处,因为它是“永恒的”。
- 来自受限制域的链接
来自域的链接很有价值。.gov
- 用户点击行为
搜索结果的点击率是多少?
- 在现场花费的时间
谷歌分析跟踪等。如果用户在打开您的结果后单击返回或单击其他结果,也会对其进行跟踪。
- 收集的用户数据
投票、评级等,Gmail中的参考资料等。
现在我将介绍第三类,上面的一两点将进入这一类,但我没有想到......类别是:
** 您的网站总体上有多重要/好**
根据您网站的质量,您的所有页面都会排名上升一点
因素包括:
良好的网站架构(易于导航,结构化。网站地图等
建立方式(长期存在的域名更有价值)。
寄宿商信息(您附近还有哪些其他网站?
搜索您的确切姓名的频率。
最后,但并非最不重要的一点是,我想说的是,这些因素中的很多都可以通过语义技术来丰富,并且可以引入新的因素。
例如,有人可能会搜索泰坦尼克号,而您有一个关于冰山的网站......可以设置为可以反映的相关性。
新引入的语义标识符。例如,OWL标签可能会在未来产生巨大的影响。
例如,一个关于电影《泰坦尼克号》的博客可以在这个页面上放置一个标志,表明它与维基百科上关于同一部电影的文章内容相同。
这种链接目前正在大量开发和建立中,没有人知道它将如何使用。
也许重复的内容被过滤了,只显示最重要的相同内容?或者反过来?您会看到许多与您的查询相匹配的页面。即使它们不包含您的关键字?
谷歌甚至会根据您的搜索查询主题应用不同相关性的因素!
评论
有许多高度复杂的算法可以从标签汤中提取相关内容。如果你想自己构建一些可用的东西,你可以看看源代码的可读性,并将其移植到php上。我最近做了类似的事情(不幸的是,无法共享代码)。
可读性的基本逻辑是找到所有块级标签并计算其中文本的长度,而不是计算子级。然后,每个父节点都会获得其每个子节点权重的片段(一半)。这用于为具有最大纯文本量的最大块级标记提供资金。从这里开始,内容被进一步清理。
无论如何,它都不是防弹的,但在大多数情况下效果很好。
实际回答您的问题(而不仅仅是关于搜索引擎):
我相信像 Instapaper 那样做一点将是最好的选择。
instapaper 背后的逻辑(我没有创建它,所以我当然不知道内部工作原理,但很容易预测它是如何工作的):
在类似文本的元素中找到最大的文本堆(依靠段落标签,虽然非常优雅,但不适用于那些使用 div 而不是 p 的蹩脚网站)。基本上,您需要在块元素(div、ps 等)和文本量之间找到良好的平衡。想出一些阈值:如果 X 个单词不按标记划分,则该文本属于正文文本。然后扩展到保持某种文本/标记阈值的兄弟姐妹。
一旦你完成了最困难的部分——找到属于实际文章的文本——它就变得非常容易了。您可以在该文本周围找到第一张图片,并将其用作缩略图。这样你就可以避免广告,因为它们不会那么接近正文文本标记。
最后,想出关键词是有趣的部分。你可以做很多事情:按频率对单词进行排序,消除噪音(ands、ors 等),你就有了好东西。将其与“检测到的正文文本区域上方突出的短文本元素”(即您的文章标题)、页面标题、元混合在一起,您就会得到一些非常美味的东西。
所有这些想法,如果实施得当,将非常防弹,因为它们不依赖于语义标记——通过使你的代码变得复杂,你可以确保即使是非常草率的编码网站也能被正确检测到。
当然,它也有性能不佳的缺点,但我想它不应该那么差。
提示:对于人们经常链接到的大型网站,您可以手动设置包含正文文本(我在 #1 点中描述的)的 HTML 元素。这将确保正确性并加快速度。
希望这能有所帮助。
我会考虑这些构建代码
- 检查同义词和首字母缩略词
- 在图像上应用 OCR 以搜索文本(Abby Fine Reader 和 Recostar 很好,Tesseract 是免费且精细的(没有 Fine Reader :)那么精细)
- 粗细字体(大小、粗体、下划线、颜色)
- 根据内容在页面上的位置对内容进行加权(例如页面上侧的内容更相关)
也:
- 要求网站站长定义网页的可选文本
您还可以在 Google 搜索 API 上查看是否能找到任何有用的东西:http://code.google.com/intl/tr/apis/ajaxsearch/
这里有一些很好的答案,但听起来它们没有回答你的问题。也许这个会。
您要查找的内容称为信息检索
它通常使用 Bag Of Words 模型
假设您有两份文件:
DOCUMENT A
Seize the time, Meribor. Live now; make now always the most precious time. Now will never come again
还有这个
DOCUMENT B
Worf, it was what it was glorious and wonderful and all that, but it doesn't mean anything
并且您有疑问,或者您想查找其他相关文件
QUERY aka DOCUMENT C
precious wonderful life
无论如何,您如何计算两个文档中最“相关”的?方法如下:
- 标记每个文档(分解为单词,删除所有非字母)
- 所有内容均以小写
- 删除停用词(和等)
- 考虑词干提取(删除后缀,请参阅 Porter 或 Snowball 词干提取算法)
- 考虑使用 N-gram
您可以计算单词频率,以获得“关键字”。
然后,为每个单词创建一列,并根据该单词在所有文档中的重要性来计算该单词对文档的重要性。这称为 TF-IDF 指标。
现在你有这个:
Doc precious worf life...
A 0.5 0.0 0.2
B 0.0 0.9 0.0
C 0.7 0.0 0.9
然后,使用余弦相似度度量计算文档之间的相似性。与文档 C 相似度最高的文档是最相关的。
现在,您似乎想要找到最相似的段落,因此只需将每个段落称为文档,或者考虑在文档上使用滑动窗口。
你可以在这里看到我的视频。它使用图形 Java 工具,但解释了以下概念:
http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-part-4.html
这是一本不错的 IR 书:
http://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf
我现在面临同样的问题,经过一些尝试,我找到了可用于创建网页片段的方法(必须进行微调):
- 获取所有 HTML
- 删除正文中的脚本和样式标签及其内容(重要)
- 删除不必要的空格、制表符、换行符。
- 现在浏览 DOM 以捕获 div、p、article、td(其他?),并且,对于每个 .获取当前元素的 html .采用元素内容的“纯文本”版本 .为此元素分配分数:文本长度 * 文本长度 / HTML 长度
- 现在对所有分数进行排序,取最大的分数。
这是一种快速(且肮脏)的方法,可以识别标记平衡相对较低的最长文本,就像在正常内容中发生的情况一样。在我的测试中,这似乎非常好。只需加水;)
除此之外,您还可以搜索“og:”元标记、标题和描述、h1 和许多其他次要技术。
评论
上一个:Windows 服务持续运行
评论
<meta>