文本重复性检测一直是NLP等领域非常重要的一项研究工作,今天 #paperClub# 给大家翻译一下"Detect duplicate content like Google"

重复的内容是影响网站排名的最重要的负面因素之一。这就是为什么近重复检测 (NDD) 在任何 SEO 应执行的任务之间占据重要位置的原因。但是,尽管近乎重复检测是一个众所周知且经过深入研究的科学主题,但 SEO 工具市场并没有提供开箱即用的解决方案。

1. 近重复检测:内容与图像消歧

图像的近似重复检测也是一个重要的 SEO 主题。这是一个性能问题,一个站点是否加载一个图像版本而不是十个具有自己 URL 的相似图像。然而,本文的主题是文本内容之间的近似重复检测。图像的 NDD 在技术上是另一项任务,因为图像具有与文本文件不同的文件性质。对于图像之间的重复和相似性检测,市场上有一些很好的工具,但在内容 NDD 部分中并非如此。

2. 查找重复项和近似重复项,例如 Google!

我以两种算法为例描述了两种近似重复检测算法。一种经过测试的算法在可接受的时间内提供可靠的结果,因此您可以在 SEO 日常业务中使用。从 SEO 的角度来看,这两种方法,即使是输出不可靠的方法,也特别有趣,因为它们使用了算法,用于谷歌的近重复检测。

我在常规内容(HTML、DOCX、TXT、CSV、PDF)上测试了这两种分析方法,并且在有足够硬件资源的前提下,不限数量(在 30.000 个文件和 3.000 个字符上进行了测试)。

NDD算法

一般而言,近重复检测的工作原理

  • 文本文档被分割成带状疱疹,
  • 对于每个 shingle,它是令牌(单词)的连续子序列,进行所谓的指纹计算,
  • 每个文档的瓦组相互比较,

相似性的定义:如果文档具有一定数量的相同指纹,则认为文档相似。

对我们来说,了解Minhash和SimHash是什么、它们做什么、Google 如何使用它们、它们在哪里相似、它们如何相互区分以及它们在哪里失败是很重要的。

两种算法都将每个比较的文档转换为标记序列,并从文档的标记序列中生成位串。位串用于确定相似度。

MinHash:1997 年为 AltaVista 发明,被谷歌用于谷歌新闻个性化。该算法考虑了单词的顺序,但忽略了带状疱疹的频率。

SimHash:于 2007 年为 Google 发明,并被 Google 用于在网页抓取时进行重复检测。该算法生成对象的紧凑表示,称为 scatches。可以比较不同对象的数量,从而将对象的相似性转化为知识。该算法考虑了术语频率,但忽略了令牌的顺序。

这种行为会导致误报和误报,这是我在 SimHash 算法测试中所经历的。除此之外,我的设置中的 Python 实现需要太多的计算时间才能在生产环境中使用。但是,让我们进入正题。

SimHash + Python + Screaming Frog

什么?已知条款?当然!至少 Screaming Frog 对任何 SEO 来说都是熟悉的。但是,它在这里只扮演数据采购的一小部分角色。

在这里您可以找到Python 代码和一些信息。

首先,我们应该收集我们想要分析的数据。关于应该比较的内容有不同的含义:

  • <body> 的全部内容,带有所谓的 chrome(HTML 标签、页眉、页脚、侧边栏 - 网页中所有没有意义的部分)
  • 只有 SEO 文本,例如 <article id="seo-text"> 的内容。

在我的测试中,我比较了整个正文内容——您可以测试 SEO 文本并报告您的体验。我会喜欢并分享你的通知。

假设 Screaming Frog 提取引擎会为您解决问题,请为您想要从中获取内容的页面部分创建一个提取器。如果是全身的话,

  • 将提取器命名为“BodyExtractor 1”。为什么这样?Python 脚本将使用此名称。您可以自由重命名它 - 不要忘记更改脚本中的列名。
  • 选择作为提取器类型 XPath,
  • 用作选择器 //body/*

就像屏幕截图一样:

现在您已准备好收集数据。将您的 Screaming Frog 指向您要分析和运行它的网站。运行完成后,将您的自定义提取导出为 CSV 文件。

让我们去 Python。安装它,如果还没有的话 - Python2 是选择的分支(我在 Windows10 的 3.7 上运行它,并且在 Windows上将 mmh3作为所需的包遇到了一堆问题。我的解决方法是安装 Visual Studio 的某些部分并从内-但我不希望您获得如此痛苦的经验;)。

我的自定义提取 CSV 的大小为 2.7GB。将脚本指向提取文件,如自述文件中所示:

python sf_shingling.py -i internal_html_ap.csv -o output_html_ap.csv -c "BodyContent 1"

我的提取过程用了 18 个小时。在这台机器上:

处理后我得到了几乎相同大小的文件,2,7GB。为什么?因为具有分析结果的文件除了包含 URL 对及其计算的 SimHash 索引之外,还包含它们的内容。

但这不是问题 - 只需删除包含内容的列,无需打开文件。再次使用 Python:

```

#!/usr/bin/env python
# coding:utf-8import pandas as pd
f=pd.read_csv( "output_html_ap.csv" )
keep_col = [ 'address' , 'status code' , 'status' , 'Sim Score ']
new_f = f[keep_col]
new_f.to_csv( "newFile.csv" , index= False )

```

简单:只需列出您要保留的列,并将它们写入新文件。

我的新结果文件大约 6MB - 不是什么大问题。

结论

我分析过的网站对我来说非常熟悉——我在它上面工作了大约一年。这就是为什么我能够在分析中看到误报。

SimHash 索引计算如下:索引越高,文档越相似。据此,SimHash 索引等于 1 的文件是 100% 重复的,索引从 0,6 向上的文件应该被审查。好吧,我过滤掉了所有文件,SimHash 索引小于 0,99 并且正在查看剩余文件。

其中一些是具有不同 URL(真实重复)的相同文档 - 检测到规范化和/或 hreflang 问题,

其中一些是真正的半重复:产品页面具有非常相似的产品描述。在这些情况下,我抓取了他们的规范以了解这种相似性是否是一个真正的问题。

该算法产生的问题是大约 10% 的误报和误报。加上很长的处理时间,我决定进一步调查。

SoftCorporation LLC 的 Neardup

起初:在写这篇文章的时候,原来的网站似乎不再可用,所以我创建了一种镜像GitHub存储库以将其保存以供社区使用。Github 存储库包含所有需要的文件(包括第三方 Java 库)。该软件以另一种方式工作 - 它直接分析文件。所以下载它,指向你的文件所在的目录,然后从选择的终端运行。好消息是:离线几天后,他们的网站又可以正常工作了。

Neardup 到底是什么,它做了什么,为什么它是我选择的工具

Neardup是近重复检测专利编号:8.370.390的 Java 实现,由Vadim Permakoff于 2011 年提交,于2013 年授予。我在ResearchGate获得了全文和描述。

简而言之,该算法考虑了先前算法的缺点,特别是那些导致假阴性/阳性的算法。

由于该算法的实际实现服务于一个易于使用的 Java 软件,几乎没有依赖关系。我已经在 PDF 和 TXT 文件上对其进行了测试,在这两种情况下都在可容忍的时间内获得了非常可靠的结果。分析 6.000 个 PDF 文件不到两分钟,分析了 30.000 个 TXT 文件不到 10 分钟。

假设你已经在你的机器上安装了 Java,Neardup 的使用很简单:

  • 将包含您的文本的文件夹放在 Neardup 目录 /neardup/docs/ 中
  • 在您的终端中将程序指向包含文档的文件夹:

处理后将生成三个包含感兴趣信息的文件:

  1. report.log:它包含具有相似性索引的 url 对
  2. 报告链.xml。什么是链条?该链是文档的有序集合,具有根文档,按文档差异排序。链中的最后一个文档可能与第一个文档完全不同,但是该软件允许您查看一组中的更改链。每个链都从根(原始)文档开始,然后是完全重复的和近似重复的文档,以树的形式呈现。
  3. report-cluster.xml 每个集群都以数据透视文档开始,然后是按相似度得分排序的完全重复或接近重复的文档列表。

你可以做一些进一步的设置——它们列在原始站点和我的 Github 镜像中。

注意:如果您想测试使用 Screaming Frog 抓取的相同文件,并且不想再次下载它们,我建议您直接从 Excel 创建 TXT 文件。只需为此使用我的 Gist 中的简单 VB 脚本,它将从 Excel 文件的每一行生成一个 TXT 文件,文件名来自第一列。

结论

Neardup 的速度和研究质量(我试图通过该工具找到任何错误信号,但最终无法找到)使其成为我选择的内容分析工具。使用它,别忘了给开发者点赞!

Tl; dr:搜索引擎优化的近重复检测

用于 SEO 的近乎重复检测是一项至关重要的任务,但没有现成的工具可以完成这项任务。我分享了一个工具,用于对任何内容文件进行近乎重复的检测,该工具是免费的,可提供可靠准确的结果并且运行速度极快。

短文重复性检测综述,谷歌文本重复性检测: Detect duplicate content like Google相关推荐

  1. 【百度飞浆】目标检测综述

    目标检测综述 什么是目标检测 应用场景 商品检测 智慧交通 巡检:安全生产 巡检:输电通道本体及缺陷识别 存在的挑战 垂类细分领域 算法进展 传统目标检测算法 深度学习的优势 两阶段之RCNN:深度学 ...

  2. 【计算机视觉】文本检测综述(含2019年)

    1 文本检测主流思路 到2019年中旬,目前的文本检测方案汇总如下:(看不清的可以点大图) 2 文本检测解决方案 含常用数据集上的检测结果 3 文本检测常用数据集介绍 Benchmark Datase ...

  3. 2022目标检测综述

    目录 0.引言 1.背景 1.1.问题描述 1.2.目标检测的核心问题 1.3.目标检测中的关键挑战 2.关于损失函数 3.关于IOU 4.数据集以及评价指标 4.1.评价指标 4.2.数据集 5.目 ...

  4. 安全研究 # 二进制代码相似性检测综述

    本文参考: [1]方磊,武泽慧,魏强.二进制代码相似性检测技术综述[J].计算机科学,2021,48(05):1-8. (信息工程大学数学工程与先进计算国家重点实验室, 国家重点研发课题,北大核心) ...

  5. 机器视觉表面缺陷检测综述

    转自:http://www.cjig.cn/html/jig/2017/12/20171202.htm#b22 机器视觉表面缺陷检测综述 <中国图像图形学报> Tang B, Kong J ...

  6. 2017-12-16 机器视觉表面缺陷检测综述

    机器视觉表面缺陷检测综述 转载自:http://www.cjig.cn/html/jig/2017/12/20171202.htm#top <中国图像图形学报> Tang B, Kong ...

  7. 《跨语言文本相似性检测》第一周—前期调研

    <跨语言文本相似性检测>第一周-前期调研 文本相似度计算在信息检索.数据挖掘.机器翻译.文档复制检测等领域有着广泛的应用. 文本相似性流程 分词-->权重-->选择相应算法 文 ...

  8. 论文阅读_基于深度学习的异常检测综述

    英文题目:Deep Learning for Anomaly Detection: A Review 中文题目:基于深度学习的异常检测综述 论文地址:https://arxiv.org/pdf/200 ...

  9. 自动谣言检测综述分享——Automatic Rumor Detection on Microblogs: A Survey

    谣言检测方法可以分为三类:基于人工特征的分类方法.基于传播的方法和基于神经网络的方法. 1 问题定义 谣言的定义 谣言的传统定义来源于社会心理学[27].也就是说,谣言是一种未经证实的说法,广泛传播, ...

最新文章

  1. MySQL5.7 Replication主从复制配置教程
  2. android 流量统计不准确_汽车里程表上显示的百公里油耗准确吗?是不是真的是欢乐表...
  3. 卡巴斯基最新激活码、授权文件,可用卡巴斯基
  4. Hyperion Essbase入门(五)SmartView
  5. 使用STL标准模板库实现的个人通讯录
  6. 【数字化】数字档案馆系统测试指标分布总览
  7. Openssl CA证书生成以及双向认证,及windows系统证书批量导出,android cer转bks
  8. html侧边导航栏,浮动侧边导航栏的基本布局
  9. iOS wifi认证
  10. C#-进击Hangfire
  11. Android肝帝战纪之字体图标库(iconify)的简单使用
  12. EventBus原理与源码解析
  13. 计算机网络工程的话术,话术工具电脑版
  14. Python基础+数据科学入门(三)组合数据类型
  15. 无人驾驶汽车系统入门(十七)——无人驾驶系统基本框架
  16. 一行代码解决网站防挂IFRAME木马方案,小鸽子序列(灵儿)
  17. MySQL DQL分组查询、条件查询、子查询
  18. Java毕设|课设项目-蛋糕店商城管理系统
  19. 左耳听风 第三十三周
  20. 【githubshare】可对 Web 容器、Web 服务器、Web 中间件以及 CMS 等 Web 程序进行漏洞扫描的软件

热门文章

  1. 难度较大题型--LeetCode
  2. 一文详解:Quick BI、帆软Fine BI等主流BI软件,各有哪些特点
  3. mysql no cache_mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  4. 2020年蓝桥杯B组个人题解(热的,不知道对错)
  5. 互联网研究系列之拼多多 附下载地址
  6. 一头小牛,小牛成长到第四年开始,会每年生一头小牛,N年后共有多少头牛
  7. DataSphere Studio数据应用开发管理集成框架【DSS基础】
  8. 【android-自定义键盘的设置】
  9. 磁盘坏道引起的hbase查询错误
  10. 零基础快速入门SpringBoot2.0教程 (三)