比较相似度算法

Ali*_*Ali 39 similarity euclidean-distance jaro-winkler levenshtein-distance

我想使用字符串相似性函数来查找我的数据库中的损坏数据.

我遇到了其中几个:

  • 哈罗,
  • 哈罗,温克勒,
  • 莱文斯坦,
  • 欧几里德和
  • Q-克,

我想知道它们之间的区别以及它们最适合的情况?

MrG*_*mez 38

扩展我在勘误表中的wiki-walk评论,并注意到一些关于适用于类似问题空间的算法可比性的底层文献,让我们在确定它们在数值上是否具有可比性之前,先探讨这些算法的适用性.

来自维基百科,Jaro-Winkler:

在计算机科学和统计学中,Jaro-Winkler距离(Winkler,1990)是两个字符串之间相似性的度量.它是Jaro距离度量(Jaro,1989,1995)的变体,主要用于记录连接(重复检测)领域[引用需要].两个弦的Jaro-Winkler距离越高,弦越相似.Jaro-Winkler距离度量设计最适合短字符串,如人名.对得分进行归一化,使得0等于没有相似性,1等于完全匹配.

Levenshtein距离:

在信息理论和计算机科学中,Levenshtein距离是用于测量两个序列之间差异量的字符串度量.术语编辑距离通常用于特指Levenshtein距离.

两个字符串之间的Levenshtein距离定义为将一个字符串转换为另一个字符串所需的最小编辑数,允许的编辑操作是单个字符的插入,删除或替换.它以弗拉基米尔·莱文施泰因(Vladimir Levenshtein)的名字命名,他在1965年考虑过这个距离.

欧几里德距离:

在数学中,欧几里得距离或欧几里德度量是人们用尺子测量的两点之间的"普通"距离,由毕达哥拉斯公式给出.通过使用该公式作为距离,欧几里德空间(或甚至任何内积空间)成为度量空间.相关的规范称为欧几里德范数.较早的文献将度量指为毕达哥拉斯度量.

Q或n-gram编码:

在计算语言学和概率领域,n-gram是来自给定文本或语音序列的n个项目的连续序列.根据应用,所讨论的项目可以是音素,音节,字母,单词或碱基对.从文本或语音语料库中收集n-gram.

n-gram模型(以及使用它们的算法)的两个核心优势是相对简单,并且通过简单地增加na模型来扩展的能力可用于存储更多具有公认的时空权衡的上下文,从而实现小的实验非常有效地扩大规模.

问题是这些算法解决了在所有可能的算法空间内具有不同适用性的不同问题,以解决最长的常见子序列问题,在您的数据中或在移植其可用度量中.事实上,并非所有这些都是均衡指标,因为其中一些不满足三角不等式.

您可以正确地执行此操作,而不是通过自己的方式来定义检测数据损坏的可疑方案:通过对数据使用校验和和奇偶校验位.当一个更简单的解决方案能做到时,不要试图解决更难的问题.

  • 如果您要验证数据库是否已损坏,请使用校验和和奇偶校验位.如果您正在尝试找出哪些数据已损坏,您需要确定您尝试修复哪种类型的损坏(记录链接,污染数据,丢失数据等). (2认同)