1

我刚刚写了一些近似字符串匹配的代码。我想将我的幼稚算法与在 JVM 上运行的更成熟的实现进行基准测试。有什么建议么?

4

2 回答 2

2

对于类似问题,我在本网站的其他地方找到了这些答案。

Commons Lang 有一个 Levenshtein distance 的实现。
http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html

Commons 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)

于 2010-07-17T20:46:28.020 回答
0

碰巧我在多年前重新发明了这个轮子——在大型机上的 FORTRAN 程序中:)

当我在网上自豪地告诉其他人我的算法时,他们笑着指给我看这个领域的两个(四个?)大牌:

这些是用于比较大量相似字符串的算法。内存需求约为m + n,其中 m 和 n 是字符串的大小,运行时间约为m * n

Gunslinger47 提到了 Levenshtein、Soundex 和 Metaphone。Levenshtein 也是一种计算字符串距离的强大方法,但它更适合“普通”文本。Soundex 和 Metaphone 计算一个短字符串,用于对人类说话时字符串的声音进行编码......它们在大约 3 个音节后变得无效,它们实际上是用于人类语言中的单词而不是基因组字符串等。

编辑

哎呀,我刚刚在你引用的文章的底部找到了我的 4 个大牌。所以你已经知道它们了。我认为,如果您搜索这些名称,“Java”应该会找到您的实现。这是我找到的第一个

于 2010-07-17T21:27:04.020 回答