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

时间:2011-05-02 19:44:41

标签: c++ c algorithm string comparison

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

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

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

然后

“asdf asdewr你好世界如何asfrqr你”

比以下更相似:

“h2ll4 w1111 h11 111 111”

3 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:14)

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

  1. Levenshtein / LCS / n-gram距离(将字符串与集合中的每个字符串进行比较,取最小距离的字符串)
  2. tf-idf indexing
  3. Levenshtein automata
  4. Hopfield networks
  5. BK-trees
  6. 所有这些都可以通过C或C ++实现。 Google可用指标和算法的“字符串相似性”,“重复查找”或“记录链接”。

答案 2 :(得分:2)

这通常是通过检查您拥有的字符串的一堆变体来完成的...看一下拼写校正算法 - 例如here

相关问题