相似URL判定及字符串相似度距离

相似URL判定

edit distance缺点 基于结构来判断URL相似度,去掉数字。字符串是否也需要去掉自身只保留结构,或者保留存在长度的结构,可以根据情况来灵活取舍。

抽象一下特征
1、站点特征:如果两个url站点一样,则特征取值1,否则取值0;
2、目录深度特征:特征取值分别是两个url的目录深度是否一致;
3、一级目录特征:在这维特征的取值上,可以采用多种方法,比如如果一级目录名字相同则特征取1,否则取0;或者根据目录名字的编辑距离算出一个特征值;或者根据目录名字的pattern,如是否数字、是否字母、是否字母数字穿插等。这取决于具体需求,这里示例仅仅根据目录名是否相同取1和0;
4、尾页面特征:这维特征的取值同一级目录,可以判断后缀是否相同、是否数字页、是否机器生成的随机字符串或者根据编辑长度来取值,具体也依赖于需求。这里示例仅仅判断最后一级目录的特征是否一致(比如是否都由数字组成、是否都有字母组成等)。

edit distance needleman-wunch或者smith-waterman算法

SimHash+汉明距离

pip install python-Levenshtein

http://www.cnblogs.com/kaituorensheng/archive/2013/05/18/3085653.html

import Levenshtein
str1="abc"
str2="bac"

edit distance Levenshtein距离

一个字串转化成另一个字串最少的操作次数(包括插入、删除、替换)
print Levenshtein.distance(“abc”,”ac”)

计算汉明距离

要求str1和str2必须长度一致 两个等长字串之间对应位置上不同字符的个数
print Levenshtein.hamming(str1, str2)

莱文斯坦比

计算公式 r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离 删除、插入依然+1,但是替换+2
print Levenshtein.ratio(str1, str2)

计算jaro距离

print Levenshtein.jaro(str1, str2)

计算Jaro–Winkler距离

print Levenshtein.jaro_winkler(str1, str2)

Smith-Waterman 局部

Needleman-Wunsch 全局

https://github.com/alevchuk/pairwise-alignment-in-python

LCS最长公共子序列

https://github.com/man1/Python-LCS/blob/master/lcs.py

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值