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

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

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

如果A字符串是:“hello world你好吗”

然后

“asdf asdewr你好世界怎么asfrqr你”

比以下更相似:

“h2ll4 w1111 h11 111 111”

对此的通常测量是Levenshtein距离 。 计算从原始距离到每个候选者的Levenshtein距离,并将最小距离作为最可能的候选者。

定义相似性。 可以做到这一点的算法包括:

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

所有这些都可以通过C或C ++实现。 Google可用指标和算法的“字符串相似性”,“重复查找”或“记录链接”。

这通常是通过检查你拥有的字符串的一堆变体来完成的……看看拼写校正算法 – 例如这里