与最相似字符串的字符串比较

17

有没有人知道是否存在一种算法,可以给定一个字符串A和一个字符串数组B,将A字符串与B中的所有字符串进行比较,输出最相似的结果。

对于“最相似的结果”,我的意思是例如:

如果A字符串是:“hello world how are you”

那么

“asdf asdewr hello world how asfrqr you”

“h2ll4 w1111 h11 111 111”

更相似。


1
既然您对这些答案感到满意,现在可以接受其中一个。 - schnaader
3个回答

21

通常使用的度量标准是Levenshtein距离。计算原始内容与每个候选内容之间的Levenshtein距离,并将最小距离作为最可能的候选内容。


4
这是一个关于Levenshtein距离的便捷链接。http://en.wikipedia.org/wiki/Levenshtein_distance - Null Set

14

定义相似性。能够完成此操作的算法包括:

  1. Levenshtein/LCS/n-gram距离(将字符串与集合中每个字符串进行比较,选择距离最低的那个)
  2. tf-idf索引
  3. Levenshtein自动机
  4. Hopfield网络
  5. BK-trees

所有这些算法都可以在C或C++中实现。搜索“字符串相似性”、“重复查找”或“记录链接”以获取可用的度量和算法。


我认为在开始选择算法之前,最好以适当的方式定义相似性,你是对的。干杯! - malilzap

2

通常情况下,这是通过检查您拥有的字符串的许多变体来完成的...可以查看拼写纠正算法-例如这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接