string - 是否有 SOUNDEX 或变音位的替代方法来处理冲突较少的名称?

标签 string algorithm text-processing data-processing

我试图通过计算每个字符串的变音位键在大量名称列表中找到接近的重复项,然后在每组可能的重复项中,使用 Levenshtein 距离之类的东西来更精确地估计重复可能性.1

但是,我发现变音位在很大程度上取决于字符串中的第一个字符,因此如果我向它输入一长串人名,我会得到巨大的存储桶,其中每个人的名字都是“Jennifer X”或“Richard” Y”,但在其他方面没有太多共同点。

如果我在生成 key 之前反转字符串,结果会更合理,因为它们按姓氏分组,但我仍然发现名字并不是特别相似。

那么是否有类似的算法可以对更多的输入字符串进行采样以生成声音 key ,也许是通过使用更长的 key 字符串?


[1] 理想情况下,我会直接计算字符串距离,但如果我的列表有 10,000 个名称,那将意味着 100,000,000 次计算,这就是为什么我试图通过声音键控首先且仅对每个名称进行分而治之检查桶内的相似性。但如果有更好的方法,我很想听听!

最佳答案

试试 eudex。

它被描述为“一种极快的语音缩减/哈希算法。”

有许多简单的方法可以使用它,因为它将一个单词编码为一个 64 位整数,具有针对 MSB 的最具辨别力的特征。哈希之间的汉明差异也可用作单词和拼写之间的差异度量。

关于string - 是否有 SOUNDEX 或变音位的替代方法来处理冲突较少的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28113371/

相关文章:

string - 为字符串中的元素分配不同的值

c++ - 整数集之间的映射

java - 取消缩进或线性化 XML

algorithm - 相交线和点阵?

linux - Awk:删除行中最后一个空格后的文本

java - 在java中拆分可视文本 block

替换数据框中每列的每个字符串的前两个字符

python - 在 python 3 中将元组转换为字符串

java - 当 false 不是 XML 中的字段时,XQuery 返回 "false"?

c# - 找到 aike blob 系列的最佳算法