归纳总结:SEO采集海量文章,用倒排索引找出"类似的标题"

优采云 发布时间: 2022-10-06 03:11

  归纳总结:SEO采集海量文章,用倒排索引找出"类似的标题"

  到现在,站群的模式依然有效,使用站群的方法拦截海量搜索流量,偷偷变现是正常的。一个人管理一批网站,内容更新离不开采集。

  本文使用倒排索引的逻辑来解决SEO采集场景下“标题相似”的问题,顺便引入了一个小算法,将结合这个小算法分享一个案例一段时间后“重要热点自动推送到微信”。

  倒排索引是搜索引擎检索的基石。理解倒排索引有助于理解搜索引擎的排序逻辑。很多SEO朋友连基本的排序规则都不知道,无法将这些规则结合到日常优化中。搜索引擎优化是关于感觉。

  一些我在文章中偶尔出现的技术细节和小想法,表面上看起来与赚钱相去甚远,但实际上正是这些小东西支撑着一个人的判断,只有机会来临时才能对。s 选择。

  采集每个SEOer都亲自指导或做过,因为网站内容的数量和质量对于流量的增加至关重要。早年的PC时代,自媒体的概念还没有盛行。如果一个网站的内容制作完全靠公司编辑组的几个同学,很可能撑不过他被开除的那一天。那个时候,版权和原创的概念还是很模糊的。网站 20% 的内容是 原创,80% 的内容是 采集。我认为这是行业的良知。,网站内容互相采集是业内的常态,个别站长的网站内容大多从第一篇开始。

  2016年,看了市面上大部分的采集工具(当时一般是优采云,现在好像也一样),我用我的少数产品思维来反感,简单地用 Python 开发了一个 采集 工具:

  四年后,我有点感慨。人越缺,越喜欢炫耀。他们的技能很差,尤其是英语。因此,在设计界面时,特意将相关领域和标题用英文表达。现在看来,眼睛很热。

  但是这个工具的功能对我来说仍然没有过时的感觉。我曾经评论过曹政先生的公众号。我是一个喜欢动脑筋,不喜欢动脑筋的人。重复的事情让我重复操作 10 次和 8 次。考虑是否可以自动化,否则会开始烦人。

  为什么他们会鄙视市面上的采集工具,因为我跟着他们的流程,发现流程不够灵活,不够全面。我希望这个工具完成后,我不需要去想任何问题,我只需要按照步骤进行,我会把所有可能的情况都尽可能地设计进去。本工具可以对接三大主流开源内容管理系统:dedecms、phpcms、ecms,接口自己写,整体模型如下:

  以自己的网站为一级目录,该目录收录多个目标采集网站为二级目录,每个采集网站收录多列,每列存储自己的采集规则和历史记录。正常情况下,一天存储几万件是没有问题的。

  程序支持:随时切换自己网站的不同操作,自动调出预设目标网站和规则。

  每个目标网站的采集规则支持添加、删除、修改、搜索、保存、导入和导出。单个目标可以设置多组规则,根据页面自动识别最优爬取规则。HTML 格式(删除其他人的所有 HTML 标记,同时保留原创段落)

  特定字符的替换、特定规则的字符替换(正则)、图像提取和链接补全。按网站,立柱旋转采集,定时定量,自动判断重量,自动入库,等待复查。

  说到判断的权重,我们就来到我们今天的话题:“相似标题”的判断问题。当你打开程序,它开始工作,从你为它配置的每个网站中抓取内容,相当于整个网络采集,目标网站本身和目标网站 之间可能有 文章 重复。

  一个网站中相同的文章,除了技术或人为问题外,一般都是同一个链接,所以只要让程序判断链接是否完全一样,就很简单了。

  入库不是完全一样的,而是在不同的网站中,既然大家都在挑挑拣拣,那么很可能采集就是一模一样的文章,而且有多个文章具有相同的标题和相同的文本。文章在网站上一起发帖,从优化的角度来看是不可取的,尤其是采集的情况,长期自动化采集,没有人为干预,会久而久之就会积累很多重复的内容,那么网站离死不远了。

  所以除了初步的链接判断外,还要加上title的判断,不管是内部的网站还是直接的网站和网站,如果要进入图书馆,你必须做出判断。

  如果标题完全一样,处理方法和链接一样,直接丢弃即可。麻烦的问题是标题相似。

  假设目前网站中有​​10篇文章这样的文章,标题分别为(以微博热搜为例):

  四字哥借蔡国庆坐沙发,特朗普团队说有死票。美国队回应与拜登的面对面碰撞。阿云嘎可以把钢琴借给蔡国庆躺下。李东旭给孔刘送咖啡车支持拜登 称特朗普拒不承认选举结果尴尬 专家建议女性退休年龄延长至55岁最后一件网上买的东西生育力对女性职业的影响是2万倍日本首相菅义伟想第一个见到拜登

  这时,程序采集抓取了一篇文章文章,标题为:

  拜登称特朗普拒绝承认选举结果令人尴尬

  它与现有数据库中的标题具有相同的含义。它描述了一件事。标题几乎相同。”。

  如果我们让程序自动判断这两个标题是否相同,那么对于一台要么为0要么为1的计算机,它给出的结果是:不。但我们显然不能让这样的文章重新输入库,所以必须有合适的处理方式,让程序能够识别,同时我们网站数据库中可能有几亿甚至更多方法是有效的,但必须考虑效率,不能花几秒钟的时间做出判断。

  那段时间,我也很不适应。我在 Internet 上没有找到任何可以解决此问题的工具。都是一样的都被丢弃了,单词之间的区别被认为是不同的文章。

  一段时间后,我在搜索引擎书籍中了解到“倒排索引”的思想。

  我们想一想:为什么百度或者谷歌可以在毫秒内搜索到我们需要的内容?

  其实支持这一点的技术方案有很多,但所有的方案都是以“倒排索引”为前提的。正是“倒排索引”使“搜索”行为大大提高了检索效率,并伴随着一定的相关性。

  倒排索引:

  假设这是我们的数据库,文档是网页或文章文章,我们在这里使用标题,当用户搜索:特朗普

  因为没有相同的(瞬间可以找到相同的),数据库一一查找,取出收录特朗普的文档对应的ID,可以得到:2、6,这样就可以找到用户需要的相关内容。

  但是如果里面有100亿条数据,我们就不知道怎么求猴年马月了。这时候,我们再建一张这样的表:

  如图所示,我们为单词创建另一个表。表中的每个单词都是唯一的。哪些文档收录每个单词,并列出 ID。

  当用户搜索:特朗普和拜登,搜索引擎细分:特朗普,拜登根据第二个表格,特朗普的关键词显示涉及:2、6、拜登这个关键词是:3、 6 记得初中路口:2、6和3、6取路口,常见的是6,所以本次搜索找到的相关内容为:文档6,该文档同时收录特朗普和拜登,满足基本相关。

  文章可能有上千个,但世界上的词汇总是有限的,只要一模一样,马上就能查到数据库。

  不管第一张表有多少亿的数据,我们都可以通过第二张表瞬间找到所有收录目标关键词的文档ID,然后使用文档ID直接从第一张表中获取,不需要一一检查。这第二张表是:倒排索引,也称为反向索引。

  至于所谓的正向索引,我觉得是没有这个概念的,只是有了倒排索引之后的相对而已。

  

  当时知道了这个想法后,真的很感动。一开始人家是怎么想出来的,我很佩服。

  此应用程序适用于文档 (文章)。看完之后我在想:能不能把文章换成title,用这个思路来判断title是否极其相似?如果你已经有了初步的想法,说明倒排索引的思路已经了解了。

  谈谈技术细节:

  遇到这个问题,正在思考解决方案的人肯定是技术人员,所以干脆给出核心代码,用Python实现,其实就是dict的设计。此过程还将涉及搜索结果的初步分数计算。SEO朋友不知道的话,一起来了解一下吧。

  刚才是为了方便理解倒排索引,所以我用一个简单的例子来解释一下它是如何为我们的搜索工作的。其实,搜索引擎在检索数据的时候,并不是简单的取出所有的文档ID,取交集。会有一些大问题。

  这是一个比较专业的知识,我自己也没有深入的了解。我只是依靠这些想法来解决业务问题。有兴趣的朋友可以看看这本书:《这就是搜索引擎——核心技术详解》PS:感谢SEO界大神ZERO的各种分享,在他的文章中得到了很多帮助和提升早期!

  倒排索引建立后,用户搜索时,一般有以下检索逻辑:

  一次一个文档,一次一个词结合一次一个文档的跳转指针一次一个文档的本质是取交集的逻辑。我们这里使用一种比较简单的一次一个词的方法。

  搜索:Trump和Biden Trump,所有收录它的文件对应的ID分别是:1、2、3

  拜登,对应的文档ID为:3、4、5

  淘汰特朗普,1、2、3各得一分

  再次拿出拜登,1、2、4、5各得一分,3累积两分

  因此,文件 3 是最相关的。这是一次一个字的逻辑。最后,我们得到每个相关文档的相似度得分。列表从大到小是一次搜索的初步排序。实际上,我们叠加文档出现的次数来计算分数。在实际检索中,分数并不是简单的这样计算的。每个文档需要结合很多因素单独计算分数,然后叠加,但只处理我们的问题就足够了。

  核心代码:

  # 存储历史入库的所有标题,相当于表1<br />seen_title ={<br /> '1':['拜登称特朗普拒绝承认选举结果令人尴尬'],<br /><p>        '2':['特朗普团队称出现死人票']

  }

  <br />

  # 把标题对应分词单独建表,方便提取(与表1同步更新)title_word ={<br /> '1':['拜登','特朗普','拒绝','承认','选举','结果','令人','尴尬'],<br />

          '2':['特朗普','团队','出现','死人票']

  }

  <br />

  # 表2,单词对应的所有包含它的标题ID(与表1同步更新)word_id ={<br /> '特朗普':set(['1','2','3']),<br />

          '拜登':set(['3','4','5'])

  }

  <br />

  # 求余弦值

  defcount_cos(new_word,old_word):        return cos<br /><br />

  # 计算相关性得分

  defget_doc_id(title):<br /> # defaultdict创建的整数型字典,存储文档得分<br /> id_count = defaultdict(int)<br /> # 存储本次新增标题的所有分词<br /> new_word =[word.encode('utf-8')for word,flag in pg.cut(title)]<br />

          # 循环提取每个单词对应的所有文档ID并计算得分 for word in new_word:<br /> # 数据库里没有记录的单词忽略计算<br /> if word notin word_id:continue<br />

   for ids in word_id[word]:id_count[ids]+=1

  <br /> # 最终得到所有文档的最终得分,降序<br /> id_count = sorted(id_count.items(),key=lambda x:x[1],reverse=True)<br /> # 取得分最高的与本次标题计算余弦值,大于目标值就算类似重复,反之其他的相似度更低,不必计算<br /> return count_cos(new_word,title_word[id_count[0][0]])>=0.8<br /><br />get_doc_id(title)</p>

  2016年,我没有写向量分类。最后一个比较是使用“Shingle”算法提取文本块。相对来说,vector比较合适,整体查询速度基本保持在几毫秒以内。

  这是基本的处理模型。其实我们可以看到,随着数据的增加,计算速度会线性增加(还好不是指数),内存开销也很可怕,所以需要采取一些措施来保持稳定。

  比如分段存储,文本转md5等,千万级数据没有压力,如果不能增加机器数量。

  虽然我在学习数据库,但当时我不在课堂上。毕业后,我只知道几个数据库的名字。显然,最好用数据库来处理,但也只是处理一些小问题,不会花太多钱。更多精力,有更好的方法也欢迎指教。

  用这样的思路来处理SEO的过程——采集——标题重,这样的问题似乎有点矫枉过正,看来离钱还很远。

  很多人都不愿意做,但将一件事做到极致,往往是拉开与对手距离的关键。

  接下来说一下开头提到的小算法:

  我们刚才说的是为了方便对倒排索引的理解。其实整个倒排索引是很复杂的。为了支持它正常工作,必须设计很多技术方案,比如存储方式、更新逻辑、检索方案等,同时在数据库中不能简单的存储我们刚才提到的东西,尤其是Table 1:

  在这里,我们简单地存储文档中收录哪些单词。其实在一个文章中,总有一些词是不相干的,有没有没关系,反之,有些词最能代表这个文章写的是文章 的主题。

  用户搜索时:特朗普和拜登一起喝茶

  有一个文档只收录“together”这个词,但是你要知道这样一个词会出现在不同领域的各种文章中,一点也不稀奇,这个词不重要,去掉不会影响文章表达的主题。

  因此,我们不能简单地认为该文档也与搜索词有关。鉴于此,我们必须计算 文章 中的哪些词是重要的,哪些不重要。为它们计算一个单独的权重值,例如这样:

  每个词在这个文章 中都有它的权重值。这些权重值可以添加到刚才提到的文档相关性分数的计算中。这样的分数更有意义,更相关。而这个权重值的计算是:TF-IDF算法。

  让我们用小明的日记来解释:

  小明10天写了10本日记。我们想知道今天日记中小明的遭遇。普通人看了登山的乐趣,看到了登山的风景,看到了爬山的感觉,就知道小明今天去登山了。

  不过,这10天来,小明没有爬过山,所以其他的日记里也没有出现爬山二字。

  反之:“今日天晴,万里晴空有白云飘”,几乎是全国小学生对自身文采的第一次尝试。

  可以看出,这些词出现在很多日记中,对理解某一个文章并没有什么作用。

  在某个类别的某篇文章文章中,有一些重复性高的词,很少出现在该类别的其他文章中,这些词最能描述文章的主题,反之,总是出现在任何文章中的词对理解文章没有帮助,也不重要和相关。

  这就是TF-IDF的简单思路。

  TF-IDF 用于评估一个词对文章 文章 的重要性(权重)。一个词的重要性与其在文章中出现的次数成正比,与在其他文章中出现的次数成反比。

  使用TF-IDF计算出来的值就是我们刚才提到的一个文章中一个词的权重,而文章和结合它计算出来的搜索词的相关性得分是非常有效的。TF-IDF的公式和具体理解可以参考百度百科。

  TF-IDF的应用比较少,基本用在搜索引擎上。我用它来做一件事。

  

  今天,随着互联网的发展,每天发生在我们身上的各种事情,都是通过媒体平台推送给我们的。其中,有全国大事、娱乐八卦、行业资讯。如何判断今天发生的哪件事比较突出?核心的关键主题是什么?

  今年年初,因为疫情,我一直待在家里。我还写了一个热点推送工具,自动将昨天出现在各大平台的热点推送给我。

  推送给我的内容是加权的,哪些热点出现在多个平台上,哪些热点在过去一段时间内不可用。最后形成一个简单的报告,每天早上9:00推送到我的微信上。

  在这里,我最初看到了一个应用程序:

  我们都知道,能火遍全网的热点,总是首先出现在泛媒体上,经过一系列的发酵和传播,到达全网讨论。

  比如抖音或者微博往往会先显示一些热点新闻。事情开始传开后,知乎相关的讨论问题也出现了,然后是公众号的头条等。自媒体开始写内容跟风。

  我在想:对于常年蹲点热点的自媒体同学们,能不能找到一些泛媒体平台上普遍讨论的热点,而这些热点还没有在知乎公众号等地方可以看到,出现的时候,是不是可以擦键盘开始准备擦呢?

  我不是专业的自媒体,常年炙手可热的自媒体同学们各有各的专业。经常看到的一个现象是:抖音微博刚出现热点的时候,自媒体@知乎还没有,后来知乎提出相关问题的时候,基本就热点了榜单,一个调侃的第一个回答,分分钟就能获得上万个赞。

  蹭热点、截取流量的逻辑本身价值无需验证。关键是这个方法能不能让我们及时擦。

  目前我只是猜测,我还在思考这个工具的其他应用,后面会写下相关的方法。

  插入一件事:

  很多朋友经常加我问一些已经回答了很多次的问题,包括技术和思考。

  时不时会有朋友问能不能在评论里加谁谁是谁的微信账号,想联系他或者找他买源码。

  陆续有朋友用文章的思路做了一些效果,但毕竟是小部分,更多的人因为基础薄弱无法入手,缺乏指导。

  程序员普遍缺乏营销思维,运营商不懂技术,双方互相仰视。

  有鉴于此,前段时间我决定成立一个读者交流群来解决以上问题。

  目前,自媒体方面只是我花时间去操作。很多时候,我不能投入太多的精力。开个微信群要负责管理,随时回答各种问题。这会消耗很多能量。我犹豫的地方。

  不过考虑到上述问题会随着时间的推移反复出现,开个微信群可以缓解很多,利大于弊。

  关于费用,如果有正式的入团费用,当然不用担心精力的投入。正是因为进群不收费,我才不得不考虑要不要开。

  虽然不收费,但一定要有一点门槛,我不希望它成为一个聊天群。

  先说一下组的价值或意义:

  最重要的是大家可以提出我所有文章中涉及的任何技术问题、思考问题、实际操作、应用场景等,我会在群里解答。

  Python、seo、sem、信息流、产品、运营、数据等,专业的我会回答,非专业的我会给出自己的建议。

  对于互联网创业、自由职业、副业、个人技能提升等问题,以及信息不畅、项目选择等判断性问题,我也有一些看法。

  我会优先在群里推送新的内容或资源。

  其他方面:

  读者和朋友如果想相互联系,可以私下联系他们。我不会参与其中,只是提供一个方便。

  允许在一定频率内宣传您自己或您的业务,包括 文章 或社区。

  另一个正在考虑的问题是问答式咨询。你有一个其他人怀疑的专业领域。小组中有人提出问题,而您愿意提供答案。那我会很乐意扮演一个桥梁的角色,但如何保护双方的权益很麻烦,需要重新考虑流程设计。知乎的付费咨询风气还没有兴起,很大程度上是由于其流程的简单粗暴造成的。

  关于入群门槛,本质上我不打算收费,但原则上不欢迎聚会,这和看文章不同,文章贴出来给人看,但是群是用来换位子的,相信不欢迎大家互相交换名额,所以进群门槛的逻辑如下:

  过去,我主动付费:付费阅读文章,付费咨询(不管知乎还是公众号,不管多少钱),私下给我发红包(不管是否我有没有,不管你收多少钱),这些朋友都是自己贡献的,没有人问,我尊重你尊重他人贡献的态度,请直接进群。

  反之,请转10元,这是对我和其他付出的人的尊重。没有这些朋友的积极反馈,我是不可能继续制作的。同时,我也让这些付费的朋友知道,他们都和他在一起。相同的人愿意交换付出,从而平等交流。

  毕竟这个群体没有正式的商业产品或服务,所以不会有正式的收费。10元只是说说态度。我无法检查任何加入该组的人是否已付款。初衷是为了解决上面提到的问题。,不能本末倒置,多花精力。

  我相信大多数人仍然是诚实的人。如果真的有不诚实的人,请相信我:圈子不大。

  我之所以选择微信群,是因为我目前没有精力去运营一个社区,而这样的优秀社区其实还有很多。如果这个群体的价值很明显,对大家的个人提升、业务推荐、资源都有帮助。交流确实很有帮助,以后会考虑专业问答社区,重点解决实际问题。

  群二维码:

  已满或过期请加我注:加群

  因为担心被打扰,所以没有邀请一些原本是朋友的朋友。如果你需要加入这个群,请告诉我。

  周末刚到,让有需要的人进来,下周一起讨论。

  总结归纳:外贸建站常用SEO工具整理汇总

  搜索引擎优化 (SEO) 是运行 网站 最困难的部分之一,因为 Google 和其他搜索引擎对您的 网站 进行排名的方式在不断变化。我们可以使用许多优秀的SEO工具来处理和获取所需的数据以提高排名。本文章为大家总结了外贸网站建设常用的SEO工具。

  1.谷歌搜索控制台(谷歌网站管理员工具)

  谷歌站长工具是一个将你的网站与谷歌搜索引擎关联起来的工具,通过它你可以知道谷歌对你的网站、网站在谷歌搜索引擎的看法。安全可靠,哪些页面被谷歌搜索引擎收录,还可以观察网站近期访客浏览统计等。

  2. SEMrush

  SEMrush 是一个强大的一站式数字营销工具箱,可用于分析任何网站,包括流量、关键词 来源和排名、外部链接等数据。SEMrush 也是一种在线可见性管理和内容营销 SaaS 工具。营销人员可以使用 SEMrush 更有效地完成数字营销工作并取得卓越的成果。无论是营销负责人,还是特定的数字营销渠道运营商,如SEO、广告、公关、社交媒体、内容、数据分析等岗位,都可以使用这个工具来辅助自己的工作。

  

  3. BuzzStream

  BuzzStream是一个反向链接发布SEO工具,采集和连接知名人士。BuzzStream可以给团队分配任务,更适合专业的互联网销售团队申请,而且还具备发现目标公司邮箱、整理相关外部链接、发现行业网络热点的能力。

  4.莫兹临

  Moz Pro 是一套工具,旨在帮助您使用数据驱动的方法进行优化。这么说会让你快速理解:Moz Pro 有点类似于 SEMrush,因为它可以帮助你研究特定的长尾关键词和其他领域。您可以使用此信息来避免低潜力关键字并改进竞争对手的做法。

  5.链接

  Linkody 是一个关于反向链接的工具。使用此工具,您可以找出谁在链接到您的 网站,找出他们使用的关键字,甚至拒绝一些您不喜欢的链接。如果您认为有人向您的 网站 发送了垃圾邮件,后一个功能会很方便。因为,如果搜索引擎发现你在使用这种方法,那对网站的排名会很不利。虽然 Linkody 的主要吸引力是反向链接报告,但 Linkody 还提供了许多值得注意的补充。例如,您可以选择生成一份报告,然后发送给您的客户、监控您网站的社交分享以及连接到 Google Analytics。

  

  6. 安托洛

  Ontolo 是一种研究工具,可用于寻找营销和 SEO 机会。它还可以帮助您找到反向链接和访客发帖机会,并且做得很好。它可以帮助您找到增加关键字研究之外的网站流量的方法。

  7. Yoast 搜索引擎优化

  Yoast SEO 目前是 WordPress 中最常用的 SEO 搜索优化插件之一。功能非常齐全,会根据谷歌搜索优化规则的更新及时进行优化调整。Yoast SEO插件支持站点地图、永久链接优化、标题和元标签优化、内部链接优化(面包屑)、RSS优化等,每个都可以定制,也可以为付费用户定制,视频网站,新闻网站 和导航扩展,可以根据需要选择和使用。

  8. Ahrefs

  Ahrefs是著名的反向链接分析和seo分析工具集,其中Site Explorer、Content Explorer、Keyword explorer等工具深受网络营销人员的好评。它拥有自己的爬虫和强大的数据库,并开发了一系列独家的SEO指标,如AR、DR和UR,市场份额也在逐年增加。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线