聚集大量的URL

时间:2012-01-30 10:28:07

标签: url cluster-analysis similarity

我必须找到类似的网址,例如

' http://teethwhitening360.com/teeth-whitening-treatments/18/'
' http://teethwhitening360.com/laser-teeth-whitening/22/'
' http://teethwhitening360.com/teeth-whitening-products/21/' ' http://unwanted-hair-removal.blogspot.com/2008/03/breakthroughs-in-unwanted-hair-remo'
' http://unwanted-hair-removal.blogspot.com/2008/03/unwanted-hair-removal-products.html'
' http://unwanted-hair-removal.blogspot.com/2008/03/unwanted-hair-removal-by-shaving.ht'

并将它们收集在群组或群集中。我的问题:

  • 网址数量很大(1,580,000)
  • 我不知道哪种群集或找到相似之处的方法更好

对此我有任何建议。

3 个答案:

答案 0 :(得分:5)

这里有一些问题。首先,您可能希望使用字典清洗URL,例如转换

http://teethwhitening360.com/teeth-whitening-treatments/18/

teeth whitening 360 com teeth whitening treatments 18

然后你可能想以某种方式阻止这些词,例如使用Porter词干分析器:

teeth whiten 360 com teeth whiten treatment 18

然后你可以使用一个简单的向量空间模型来映射n维空间中的URL,然后在它们上运行k-means聚类?这是一种基本方法,但它应该有效。

所涉及的网址数量不应该是一个问题,它取决于您使用的语言/环境。我认为Matlab能够处理它。

答案 1 :(得分:5)

令牌化阻止是显而易见的事情。然后,您可以轻松地将这些矢量转换为TF-IDF稀疏矢量数据。抓取实际的网页以获得额外的令牌可能太多了?

在此之后,您应该能够在数据集上使用任何灵活的聚类算法。灵活的我意味着你需要能够使用例如余弦距离而不是欧几里德距离(在稀疏矢量上不能很好地工作)。例如,GNU R中的k-means仅支持Euclidean距离和密集向量。理想情况下,选择一个非常灵活的框架,但也要很好地优化。如果你想尝试k-means,因为它是一个简单的(因此很快)和完善的算法,我相信有一个称为“凸k-均值”的变体可以适用于余弦距离和稀疏tf-idf向量

经典的“层次聚类”(除了过时和表现不太好)通常是一个问题,因为大多数算法和实现的O(n^3)复杂性。有一些特殊情况下已知O(n^2)算法(SLINK,CLINK),但工具箱通常只提供天真的立方时间实现(包括GNU R,Matlab,sciPy,来自我刚刚用Google搜索)。再加上,他们通常只能选择有限的距离函数,可能不包括余弦。

然而,这些方法通常很容易实现,并以实际用例的优化方式实现。

答案 2 :(得分:0)

谷歌和雅虎发布的这两篇研究论文分别详细介绍了聚类类似网址的算法: