2014-12-02 43 views
2

我有10.000個HTML頁面。檢測兩個HTML頁面是否相似的算法?

我知道,有些是建立與同一CMS系統,因此有「種」相同的結構,雖然不是完全一樣的。我預計會有大約100個不同的CMS,但我不會預先知道它們,所以我無法查找預定義的模式。

這就是爲什麼我需要一個算法來計算每個頁面的相似性度量,然後集羣他們基於相似..?

我會很樂意找一些Ruby的工具,但其他語言也歡迎。

PS。我不希望看到內容(文本)的相似性。只想在元級進行比較。像HTML結構,CSS規則,類名等等,等等

+0

艱難的。如果這是現實生活中的問題,那麼您可能需要自己添加識別模式。只需打開頁面,看看它們是否符合你的任何模式。如果沒有,請手動分析頁面,找到CMS,然後在列表中添加一個模式。這樣,您最終會爲每個CMS添加模式。 – GolezTrol 2014-12-02 18:31:08

+0

這是現實生活中,我完成了你的建議。 :-) – 2014-12-02 18:32:21

+0

首先你必須定義「相似」的含義。你想看看他們是否有相同的結構?他們的內容是否相似(即相同或接近相同的文本)?他們都在討論同一個話題,儘管他們的結構和實際內容大不相同?你在這裏瞄準什麼樣的「相似性」? – 2014-12-02 18:55:28

回答

1

在過去的生活中,我寫了很多的分析軟件的公司,不得不通過頁面數量龐大挖,很容易你在談論的數量,返回相似類型的信息。

不管你怎麼想確定相似,你必須寫自己的規則。頁面變化太大,代碼不能真正理解「相似」的含義,也不能確定對您的特定用途重要的內容。

事情可以做:

  • 確定的「文本」節點的加總規模(可視和隱形文字CSS和JavaScript你可以得到近兩年的尺寸和減去從整體。文字大小以瞭解整體內容,但不會考慮CSS或JavaScript對可見頁面的影響
  • 請在元標記中查找有用的信息,例如關鍵字或相關頁面
  • 查找表格並獲取它們的行數和單元格數量以及它們的文本大小,並可能搜索數據以得到相關值或比較。
  • 查找鏈接和錨,並得到他們的文字和/或HREF中的相似性。
  • 尋找圖像和任何與「alt」文本,然後比較這些。

儘管如此,你必須瀏覽頁面並確定什麼是重要的,沒有其他程序員可以猜測這些可能是什麼。

HTML結構,單個標籤的順序並不像以前那樣有用,因爲CSS和JavaScript可以在頁面加載到瀏覽器中時將所有內容都移動到頁面中,所以眼睛看到的可以是與標準的基於代碼的工具看到的差別很大。相同CMS的兩個版本可能會有完全不同的輸出,但由於CSS/JavaScript的結果,對於觀衆來說顯示效果是一樣的,所以您必須確定如何關聯它們。

+0

嗯,我發現這似乎產生有效的輸出,在我已經嘗試並知道是「相同」的情況下,但我不知道它是如何工作的,所以很難重現... http:// tool.motoricerca.info/similarity-analyzer.phtml – 2014-12-02 20:05:47

+0

那麼,正如其他評論所說,這並不容易。你試圖做的太多事情都與你的特殊需求有關。找到一個靠近的工具是很好的,但是很多時候,一旦你進一步推進,你會發現重疊越來越少,因爲他們的需求不符合你的要求,那就是你必須推出自己的產品。不幸的是,這並沒有很好的解決方案,但另一方面,如果你有可能沒有找到解決這個問題的工作,別人就可以點擊一個按鈕,它會奇蹟般地發生。 – 2014-12-02 20:11:32