字符串相似度

本文探讨了在对代码输出字符串进行聚类时,使用Levenshtein距离、最长公共子序列(LCS)和字符串核函数等方法的优缺点。Levenshtein距离对短字符串过于敏感,LCS避免了某些错误聚类,而字符串核函数考虑了子串跨度,但计算量大。实验结果显示,LCS在聚类效果上表现较好。
摘要由CSDN通过智能技术生成

最近要对字符串进行聚类,这些字符串都是代码的输出,尝试了几种字符串相似度度量的方法:

Levenshtein距离

字符串核函数

LCS/max(len(str1,str2))


其中相似度用公式distance=1.0/similarity-1转换为距离.使用层次聚类方法.

下面是要聚类的字符串

    points = ['aabbccdd', 'aaddccbb', 'aaaaccbb', 'bbbbccdd',
              'eeeebbccdd', 'aaeebbeeccdd',
              'aaaaaaaa', 'aabbbbdd', 'bbccdd', 'aabbdd',
              'aabb', 'aadd', 'bbdd', 'aa', 'bb',
              'aabaaabaabaabaaaaba', 'abaaabaaabaabaaaab']

下面看一下使用Levenshtein距离聚类的过程的前几部:

['aabbccdd', 'bbbbccdd'] aabbccdd
['aaddccbb', 'aaaaccbb'] aaddccbb
['aabbbbdd', 'aabbdd'] aabbbbdd
['bbccdd', 'bbdd'] bbccdd
['aabb', 'aa
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值