我刚刚写了一些近似字符串匹配的代码。我想将我的幼稚算法与在 JVM 上运行的更成熟的实现进行基准测试。有什么建议么?
2 回答
对于类似问题,我在本网站的其他地方找到了这些答案。
Commons Lang 有一个 Levenshtein distance 的实现。
http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.htmlCommons Codec 有 soundex 和 metaphone 的实现。
http://commons.apache.org/codec/api-release/org/apache/commons/codec/language/Soundex.html
http://commons.apache.org/codec/api-release/org/apache/commons /codec/language/Metaphone.html
(来源)
卢森 (http://lucene.apache.org/)也实现了 Levenshtein 编辑距离。
(来源:zarawesome)
碰巧我在多年前重新发明了这个轮子——在大型机上的 FORTRAN 程序中:)
当我在网上自豪地告诉其他人我的算法时,他们笑着指给我看这个领域的两个(四个?)大牌:
这些是用于比较大量相似字符串的算法。内存需求约为m + n
,其中 m 和 n 是字符串的大小,运行时间约为m * n
。
Gunslinger47 提到了 Levenshtein、Soundex 和 Metaphone。Levenshtein 也是一种计算字符串距离的强大方法,但它更适合“普通”文本。Soundex 和 Metaphone 计算一个短字符串,用于对人类说话时字符串的声音进行编码......它们在大约 3 个音节后变得无效,它们实际上是用于人类语言中的单词而不是基因组字符串等。
编辑
哎呀,我刚刚在你引用的文章的底部找到了我的 4 个大牌。所以你已经知道它们了。我认为,如果您搜索这些名称,“Java”应该会找到您的实现。这是我找到的第一个。