比如有个数组,里面有几千个url。
如何找出相似的url,并分组? 求思路
url1: www.abc.com/xxx/123.html
url2: www.abc.com/xxx/456.html
url3: www.abc.com/xxx/abc.html
url4: www.sina.com
url5: www.baidu.com
url6: www.nanfang.com
。。。。。。。。。。
计算之后:
1、2、3为一组,4、5、6为一组
如果是以一级网址为分组依据的话,直接取前面部分用linq 做group by,然后得到每一组的数量。数量大于1的为一组,等于1的全部分到一组。
非常感谢你的关注,
我指的是相似,而不是相同。
还是有一些区别的,原本的想法是根据站点特征、目录深度、一级目录、尾页等等几个维度
计算出权值,根据权值分组。
请问何为相似,请先提供规则。你不会说看着差不多的就是一组吧?
url本身是包含结构和特征的,比如站点,目录。
我的想法是根据站点特征、目录深度、一级目录、尾页等等几个维度
计算出权值,再分组,
想是这么想,但就是不知怎么动笔写算法。
笔者水平有限,盼大牛帮忙
@keep complex...: 您这是奔图灵奖去的啊,研究出来了可以去百度找吴恩达当他的小伙伴了。
谁能帮上你的忙啊。
@爱编程的大叔: --!
大哥,没要求那么有精度,大致可以就行了,
@keep complex...: 如果要求不高的话,就是PAPER WORK了,无关算法。
1、域名是否相同,.com/.org/.net, 这个看你定义是怎么样,权值大的话,就给个10000,20000这样的,只要是不同顶级域名的,就认为不相近。
2、www.abc.com / wwwwww.adfasdfasdfasdfasdadfasd.com 你当他相近否?
....
一种算法是不管其他的,每个URL自己计算出分值,将分值与URL放在同一个关联空间内,
然后将分值进行比较,
10000~20000分的算同一个区间的,20000~30000分的是另一个区间的,
如果你有10个维度的话,那就是1000000000,没有仔细算有几个零了。
按维度梯级向下,然后你分组的时候,可以看是要卡在8位零还是5位零的位置。
我觉得你这个相似的定义有点模糊,怎么样才能判定为相似?这不是需求决定的吗?
有待研究。
先建立特征空间吧,比如长度,在建立个分类模型,用模型来判断
我有一个想法:可以将URL看成树形结构,域名都作为顶级节点。例如上面的:
www.abc.com/
www.abc.com/xxx
www.abc.com/xxx/123.html
www.abc.com/xxx/456.html
www.abc.com/xxx/abc.html
www.sina.com
www.baidu.com
www.nanfang.com
按照这个设想,可以利用递归方式来把这个分组实现。
给我全部分 我给你算法
呵呵
给我一个豆子,哥来帮顶
感觉可以先进行词法(token)分析,生成词法树,然后根据以下规则进行分析:
1、分析叶子节点,如果叶子节点有相同的父节点则认为相识
2、剔除已完成叶子节点,如果叶子节点有相同的祖父节点则认为相识
3、递归处理完成所有叶子节点都只有根节点是相同的,这时候就根据树的深度从1到到n分析