用于比较200k字符串的数据结构

时间:2012-12-27 08:54:24

标签: python data-structures string-matching

我有200,000个字符串。我需要在该集合中找到类似的字符串。我希望集合中类似字符串的数量非常少。请帮助提供有效的数据结构。

如果我正在寻找完全匹配的字符串,我可以使用简单的哈希。但是,在我的情况下,“相似性”是自定义的:如果其中80%的字符相同,则两个字符串被视为相似,顺序无关紧要。

我不想将函数称为“相似性”〜(200k * 100k)次。任何建议,如预处理字符串的技术,高效的数据结构是受欢迎的。感谢。

1 个答案:

答案 0 :(得分:1)

我了解到,只有当两个字符串之间的字符串长度差异<= 3时,才可能使用&gt; = 0.85距离比率。这意味着,我们可以将字符串分组,长度差为&lt; = 3。

这大大减少了每组中的字符串数量。因此,在我的数据集中,总体比较的数量减少到略低于50%(200k * 100k)。 此外,将数据集划分为多个小集有助于进行并行处理,这进一步降低了整体运行时间。

减少百分比可能随样本数据集而变化,即最坏情况发生在所有字符串长度差异<= 3时。

[感谢Inbar Rose激发了这种想法]

就我而言,直方图如下所示:

histogram

相关问题