确保您的客户获得更多 SEO 流量的一种可靠方法是将以 404 结尾的有价值的 URL 重定向到等效的 URL。

这些 URL 通常仍然可以获得流量,或者有价值的外部链接进入它们,或者两者兼而有之。

映射 404 URL 的一种懒惰且低效的方法是将所有 URL 重定向到主页或动态搜索结果。 ?

例如,Smarthome 302 将一个不存在的页面重定向到它的主页。此类重定向通常在 Google Search Console 中标记为软 404 错误。

正确的方法是将每个页面分别映射到等效页面(如果存在)。

但是,如果您需要手动执行此过程,则可能会非常乏味、耗时且成本高昂。

通常,您需要依赖网站默认的内部搜索引擎,这几乎没有什么好处。

在本专栏中,我们将学习如何使用神经匹配方法来自动化这项有价值的技术。

以下是我们的行动计划:

  • 我们将收集两个要映射的 URL 列表:一个包含 404 URL,另一个包含网站的规范 URL。
  • 我们会将 URL 转换为短语,为我们的神经匹配过程做准备。
  • 我们将使用一种利用神经网络的通用句子编码器方法。
  • 我将解释一些使这成为可能的高级概念。
  • 我还将分享社区项目和资源以了解更多信息。

下载URL集

获取404 URL的方法有很多种。您可以运行站点抓取、从 Google 或 Bing Search Console 下载 404 等等。

我最喜欢获取 404 URL 的地方之一是 Ahrefs Broken Backlinks Tool,因为它可以过滤带有外部链接的页面的 404。

但是,Google Search Console 可能会映射更多 404。如果您希望映射所有 404,并且下载次数超过一千,您可能需要考虑使用我们没有此类限制的 Cloudflare 应用程序。

会当它连接到 Google Drive 时,您最多可以导出 100,000 个 URL,或者任意数量的 URL。

接下来,您需要一组所有有效的网站 URL,最好是规范的 URL。

获取此类列表的一种简单方法是下载 XML 站点地图 URL。

如果您的客户没有 XML 站点地图,您可以执行传统的 SEO 爬网来获取 URL。

如果你喜欢代码,你可以从我的文章XML站点地图中找到一些可以改编的内容。

将 URL 集合上传到 Google 云端硬盘

有多种方法可以从 Google Colab 上传它们,包括直接从您的硬盘上传它们。这些天我最喜欢的选择是将它们上传到 Google 云端硬盘,然后从 Colab 访问它们。

如果您有来自 Google 云端硬盘的可共享链接,您可以使用以下代码将文件下载到您的 Google Colab 环境中。

如果您的文件需要保密,下面的代码可能是更好的选择。

将 URL 路径转换为短语

我们可以尝试使用其内容来匹配页面,但是 404 页面没有可用于匹配目的的内容。

Patrick Stokes 分享了使用 Wayback Machine 的巧妙方法。事实上,如果这些网站很受欢迎,他的技术对覆盖面广的网站很有效。然而,对于我们合作的许多网站,这种方法并不像我们希望的那样有效。

对我们有用的一个关键想法是,通过利用大多数 URL 中可用的丰富信息,将 404 页面与网站上的相关页面相匹配。

这个方法非常简单,在实践中效果很好。一个值得注意的例外是当网站选择糟糕的 URL 时,说它们只包含数字。

我们遵循两个简单的步骤:

  • 仅获取 URL 的路径。
  • 将斜杠、下划线和连字符转换为空格以从 URL 中提取文本。

这是代码:

这就是转换的样子。


通用句子编码器

现在,我们开始有趣的部分!我们将利用深度学习开发另一个强大的用例:语义文本相似性 (STS)。我们将使用 STS 通过其中包含的短语来匹配 URL。

请随时参考我之前的深度学习文章来理解这些概念,我们将在这里重新讨论。

对于我们的匹配任务,我们将利用 Google 的通用句子编码器。

根据他们的描述:

“The Universal Sentence Encoder (USE) encodes text into high-dimensional vectors, which can be used for text classification, semantic similarity, clustering和其他自然语言任务。

该模型经过训练和优化以处理比单词更长的文本,例如句子、短语或短段落。它在各种数据源和各种任务上进行训练,目的是动态适应各种自然语言理解任务,输入为变长英文文本,输出为512维向量,我们将该模型应用到STS benchmark进行语义相似度测试,结果见示例笔记本提供。通用句子编码器模型使用深度平均网络 (DAN) 编码器进行训练。”

我们使用这种方法是因为它比朴素的文本匹配功能更有效。使用允许匹配具有相同含义的页面/短语,即使它不是写的完全一样。您甚至可以匹配以不同语言书写的短语。

下面是一个示例代码片段:

基本上,USE 允许我们在虚拟空间中编码完整的句子(还记得我使用的是第一篇深度学习文章吗? ),因此相似的短语很接近,不同的短语相距很远。

您可以使用 USE 来解决各种自然语言问题。对于我们的具体问题,最合适的任务是语义文本相似性。

当当我们使用语义相似性时,我们想要匹配具有完全相同含义但可能不同短语的句子。

让我们开始吧。

转到使用页面并单击以打开示例 Google Colab 笔记本。

使用“文件”菜单在您的 Google 云端硬盘中保存一份副本。将运行时类型更改为 GPU。

然后点击“Runtime”菜单运行所有单元。

当你向下滚动笔记本时,你几乎可以在最后找到这个有趣的可视化。

这个是一个热图矩阵,以红色显示最相似的短语。

您可以看到有关电话、天气、健康和年龄的短语如何聚集在一起。这是一个非常强大的工具!

准备短语语料库

我们现在将向我们的笔记本添加一些自定义代码,以便将此技术与我们从之前上传的 URL 生成的短语一起使用。

这些简单的代码更改帮助我们将我们自己的 URL/短语聚类。这是我们自己的可视化。

网址样本集中的产品非常相似,所以红色方块比黄色方块多很多。

当结果接近时,我们会为每场比赛生成前 5 名名单,并将其传递给我们的一名团队成员,以手动审查并选择最佳比赛。这种方法仍然减少了大量的手动时间。

计算相似性建议

上面的热图虽然漂亮,但并不能帮助我们获得每个 404 URL 的实际建议。我们将为此创建一个自定义函数。

这里我们有一些 TensorFlow 代码,我们将编码的短语传递给 USE 模型并获得最接近的匹配嵌入。它需要一些解释。

此代码将编码的短语传递给 USE 并取回所有匹配的嵌入。

to_find_embeddings = session.run(similarity message encoding, feed_dict={similarity input placeholder: (phrase)})

由于embeddings只是向量,它们可以通过点积来计算找到最近的向量。

result = np.inner(message_embeddings, to_find_embeddings)

点积是可用于测量两个向量之间距离的技术之一。

您可能想查看维基百科文章以了解有关其工作原理的更多信息。

其余代码限制匹配前 5 个。

要了解更多信息的社区项目和资源

在过去的一个月里,我不知所措通过社区共享的项目。

首先,让我大声感谢 Kristin Tynski,感谢她改进了我的意图分类工作,并提出了一种更快、更好、更便宜的技术。

LocalSEOGuide 的 Dan Leibson 分享了使用 BigQuery、Python 和 Posgres 自动构建关键字分类的脚本。

Hülya Çoban 建立了一个惊人的机器学习模型来预测页面速度分数。

图片来源

语义相似度图片:TensorFlow Hub
作者截取的所有屏幕截图,2019 年 12 月