Bitstring相似度得分

时间:2018-03-22 20:47:55

标签: python algorithm bit-manipulation similarity bitstring

我有一个CSV文件,其中包含14000行问卷的数据。调查问卷具有MCQ多重响应(M10,M13)。对于MCQ-MR,与M13类似,有8种选择,如果受访者选择某种选择,则将其表示为1,否则将其表示为0.我想为每个位串生成相似性得分并将其替换为位串。分数应该以{{1​​}}和00010011更相似的方式计算,因为受访者选择了相同的选择,除了第三和第四选择因此得分必须更接近{{1 }和00100011

00010011

This线程提供了一些关于Levenshtein距离的见解,它比较了两个字符串。但对于14000行,这将是巨大的计算负担。还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

Levenshtein编辑距离不是你想要的。它考虑A = 101010和B = 010101非常相似,因为您可以通过在开头添加0并在结尾处删除1来将A转换为B.你可能宁愿认为它们被认为是最大的不同,因为它们在每个位置都不同。

所以你想要的只是位串的对称差异。对两个位串执行按位XOR并对结果中的1位进行计数 - 每个位对应于两者之间不同的位。