短文重复性检测综述,谷歌文本重复性检测: Detect duplicate content like Google
文本重復(fù)性檢測一直是NLP等領(lǐng)域非常重要的一項(xiàng)研究工作,今天 #paperClub# 給大家翻譯一下"Detect duplicate content like Google"。
重復(fù)的內(nèi)容是影響網(wǎng)站排名的最重要的負(fù)面因素之一。這就是為什么近重復(fù)檢測 (NDD) 在任何 SEO 應(yīng)執(zhí)行的任務(wù)之間占據(jù)重要位置的原因。但是,盡管近乎重復(fù)檢測是一個(gè)眾所周知且經(jīng)過深入研究的科學(xué)主題,但 SEO 工具市場并沒有提供開箱即用的解決方案。
1. 近重復(fù)檢測:內(nèi)容與圖像消歧
圖像的近似重復(fù)檢測也是一個(gè)重要的 SEO 主題。這是一個(gè)性能問題,一個(gè)站點(diǎn)是否加載一個(gè)圖像版本而不是十個(gè)具有自己 URL 的相似圖像。然而,本文的主題是文本內(nèi)容之間的近似重復(fù)檢測。圖像的 NDD 在技術(shù)上是另一項(xiàng)任務(wù),因?yàn)閳D像具有與文本文件不同的文件性質(zhì)。對(duì)于圖像之間的重復(fù)和相似性檢測,市場上有一些很好的工具,但在內(nèi)容 NDD 部分中并非如此。
2. 查找重復(fù)項(xiàng)和近似重復(fù)項(xiàng),例如 Google!
我以兩種算法為例描述了兩種近似重復(fù)檢測算法。一種經(jīng)過測試的算法在可接受的時(shí)間內(nèi)提供可靠的結(jié)果,因此您可以在 SEO 日常業(yè)務(wù)中使用。從 SEO 的角度來看,這兩種方法,即使是輸出不可靠的方法,也特別有趣,因?yàn)樗鼈兪褂昧怂惴?#xff0c;用于谷歌的近重復(fù)檢測。
我在常規(guī)內(nèi)容(HTML、DOCX、TXT、CSV、PDF)上測試了這兩種分析方法,并且在有足夠硬件資源的前提下,不限數(shù)量(在 30.000 個(gè)文件和 3.000 個(gè)字符上進(jìn)行了測試)。
NDD算法
一般而言,近重復(fù)檢測的工作原理
- 文本文檔被分割成帶狀皰疹,
- 對(duì)于每個(gè) shingle,它是令牌(單詞)的連續(xù)子序列,進(jìn)行所謂的指紋計(jì)算,
- 每個(gè)文檔的瓦組相互比較,
相似性的定義:如果文檔具有一定數(shù)量的相同指紋,則認(rèn)為文檔相似。
對(duì)我們來說,了解Minhash和SimHash是什么、它們做什么、Google 如何使用它們、它們?cè)谀睦锵嗨啤⑺鼈內(nèi)绾蜗嗷^(qū)分以及它們?cè)谀睦锸∈呛苤匾摹?/span>
兩種算法都將每個(gè)比較的文檔轉(zhuǎn)換為標(biāo)記序列,并從文檔的標(biāo)記序列中生成位串。位串用于確定相似度。
MinHash:1997 年為 AltaVista 發(fā)明,被谷歌用于谷歌新聞個(gè)性化。該算法考慮了單詞的順序,但忽略了帶狀皰疹的頻率。
SimHash:于 2007 年為 Google 發(fā)明,并被 Google 用于在網(wǎng)頁抓取時(shí)進(jìn)行重復(fù)檢測。該算法生成對(duì)象的緊湊表示,稱為 scatches。可以比較不同對(duì)象的數(shù)量,從而將對(duì)象的相似性轉(zhuǎn)化為知識(shí)。該算法考慮了術(shù)語頻率,但忽略了令牌的順序。
這種行為會(huì)導(dǎo)致誤報(bào)和誤報(bào),這是我在 SimHash 算法測試中所經(jīng)歷的。除此之外,我的設(shè)置中的 Python 實(shí)現(xiàn)需要太多的計(jì)算時(shí)間才能在生產(chǎn)環(huán)境中使用。但是,讓我們進(jìn)入正題。
SimHash + Python + Screaming Frog
什么?已知條款?當(dāng)然!至少 Screaming Frog 對(duì)任何 SEO 來說都是熟悉的。但是,它在這里只扮演數(shù)據(jù)采購的一小部分角色。
在這里您可以找到Python 代碼和一些信息。
首先,我們應(yīng)該收集我們想要分析的數(shù)據(jù)。關(guān)于應(yīng)該比較的內(nèi)容有不同的含義:
- <body> 的全部內(nèi)容,帶有所謂的 chrome(HTML 標(biāo)簽、頁眉、頁腳、側(cè)邊欄 - 網(wǎng)頁中所有沒有意義的部分)
- 只有 SEO 文本,例如 <article id="seo-text"> 的內(nèi)容。
在我的測試中,我比較了整個(gè)正文內(nèi)容——您可以測試 SEO 文本并報(bào)告您的體驗(yàn)。我會(huì)喜歡并分享你的通知。
假設(shè) Screaming Frog 提取引擎會(huì)為您解決問題,請(qǐng)為您想要從中獲取內(nèi)容的頁面部分創(chuàng)建一個(gè)提取器。如果是全身的話,
- 將提取器命名為“BodyExtractor 1”。為什么這樣?Python 腳本將使用此名稱。您可以自由重命名它 - 不要忘記更改腳本中的列名。
- 選擇作為提取器類型 XPath,
- 用作選擇器 //body/*
就像屏幕截圖一樣:
?
現(xiàn)在您已準(zhǔn)備好收集數(shù)據(jù)。將您的 Screaming Frog 指向您要分析和運(yùn)行它的網(wǎng)站。運(yùn)行完成后,將您的自定義提取導(dǎo)出為 CSV 文件。
讓我們?nèi)?Python。安裝它,如果還沒有的話 - Python2 是選擇的分支(我在 Windows10 的 3.7 上運(yùn)行它,并且在 Windows上將 mmh3作為所需的包遇到了一堆問題。我的解決方法是安裝 Visual Studio 的某些部分并從內(nèi)-但我不希望您獲得如此痛苦的經(jīng)驗(yàn);)。
我的自定義提取 CSV 的大小為 2.7GB。將腳本指向提取文件,如自述文件中所示:
python sf_shingling.py -i internal_html_ap.csv -o output_html_ap.csv -c "BodyContent 1"我的提取過程用了 18 個(gè)小時(shí)。在這臺(tái)機(jī)器上:
?
處理后我得到了幾乎相同大小的文件,2,7GB。為什么?因?yàn)榫哂蟹治鼋Y(jié)果的文件除了包含 URL 對(duì)及其計(jì)算的 SimHash 索引之外,還包含它們的內(nèi)容。
但這不是問題 - 只需刪除包含內(nèi)容的列,無需打開文件。再次使用 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 )```
簡單:只需列出您要保留的列,并將它們寫入新文件。
我的新結(jié)果文件大約 6MB - 不是什么大問題。
結(jié)論
我分析過的網(wǎng)站對(duì)我來說非常熟悉——我在它上面工作了大約一年。這就是為什么我能夠在分析中看到誤報(bào)。
SimHash 索引計(jì)算如下:索引越高,文檔越相似。據(jù)此,SimHash 索引等于 1 的文件是 100% 重復(fù)的,索引從 0,6 向上的文件應(yīng)該被審查。好吧,我過濾掉了所有文件,SimHash 索引小于 0,99 并且正在查看剩余文件。
其中一些是具有不同 URL(真實(shí)重復(fù))的相同文檔 - 檢測到規(guī)范化和/或 hreflang 問題,
其中一些是真正的半重復(fù):產(chǎn)品頁面具有非常相似的產(chǎn)品描述。在這些情況下,我抓取了他們的規(guī)范以了解這種相似性是否是一個(gè)真正的問題。
該算法產(chǎn)生的問題是大約 10% 的誤報(bào)和誤報(bào)。加上很長的處理時(shí)間,我決定進(jìn)一步調(diào)查。
SoftCorporation LLC 的 Neardup
起初:在寫這篇文章的時(shí)候,原來的網(wǎng)站似乎不再可用,所以我創(chuàng)建了一種鏡像GitHub存儲(chǔ)庫以將其保存以供社區(qū)使用。Github 存儲(chǔ)庫包含所有需要的文件(包括第三方 Java 庫)。該軟件以另一種方式工作 - 它直接分析文件。所以下載它,指向你的文件所在的目錄,然后從選擇的終端運(yùn)行。好消息是:離線幾天后,他們的網(wǎng)站又可以正常工作了。
Neardup 到底是什么,它做了什么,為什么它是我選擇的工具
Neardup是近重復(fù)檢測專利編號(hào):8.370.390的 Java 實(shí)現(xiàn),由Vadim Permakoff于 2011 年提交,于2013 年授予。我在ResearchGate獲得了全文和描述。
簡而言之,該算法考慮了先前算法的缺點(diǎn),特別是那些導(dǎo)致假陰性/陽性的算法。
由于該算法的實(shí)際實(shí)現(xiàn)服務(wù)于一個(gè)易于使用的 Java 軟件,幾乎沒有依賴關(guān)系。我已經(jīng)在 PDF 和 TXT 文件上對(duì)其進(jìn)行了測試,在這兩種情況下都在可容忍的時(shí)間內(nèi)獲得了非常可靠的結(jié)果。分析 6.000 個(gè) PDF 文件不到兩分鐘,分析了 30.000 個(gè) TXT 文件不到 10 分鐘。
假設(shè)你已經(jīng)在你的機(jī)器上安裝了 Java,Neardup 的使用很簡單:
- 將包含您的文本的文件夾放在 Neardup 目錄 /neardup/docs/ 中
- 在您的終端中將程序指向包含文檔的文件夾:
處理后將生成三個(gè)包含感興趣信息的文件:
你可以做一些進(jìn)一步的設(shè)置——它們列在原始站點(diǎn)和我的 Github 鏡像中。
注意:如果您想測試使用 Screaming Frog 抓取的相同文件,并且不想再次下載它們,我建議您直接從 Excel 創(chuàng)建 TXT 文件。只需為此使用我的 Gist 中的簡單 VB 腳本,它將從 Excel 文件的每一行生成一個(gè) TXT 文件,文件名來自第一列。
結(jié)論
Neardup 的速度和研究質(zhì)量(我試圖通過該工具找到任何錯(cuò)誤信號(hào),但最終無法找到)使其成為我選擇的內(nèi)容分析工具。使用它,別忘了給開發(fā)者點(diǎn)贊!
Tl; dr:搜索引擎優(yōu)化的近重復(fù)檢測
用于 SEO 的近乎重復(fù)檢測是一項(xiàng)至關(guān)重要的任務(wù),但沒有現(xiàn)成的工具可以完成這項(xiàng)任務(wù)。我分享了一個(gè)工具,用于對(duì)任何內(nèi)容文件進(jìn)行近乎重復(fù)的檢測,該工具是免費(fèi)的,可提供可靠準(zhǔn)確的結(jié)果并且運(yùn)行速度極快。
總結(jié)
以上是生活随笔為你收集整理的短文重复性检测综述,谷歌文本重复性检测: Detect duplicate content like Google的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql导入sas文件夹_SAS建立本
- 下一篇: 年产4000吨果味奶糖生产车间工艺设计