【问题标题】:string comparison with the most similar string字符串与最相似的字符串比较
【发布时间】:2011-08-17 05:32:50
【问题描述】:

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

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

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

然后

“asdf asdewr 你好,asfrqr 你好”

比:

“h2ll4 w1111 h11 111 111”

【问题讨论】:

  • 既然您似乎对答案很满意,您现在可以接受其中一个。

标签: c++ c algorithm string comparison


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

  1. Levenshtein/LCS/n-gram 距离(将字符串与您的集合中的每个字符串进行比较,取距离最小的那个)
  2. tf-idf 索引
  3. Levenshtein automata
  4. Hopfield networks
  5. BK-trees

所有这些都可以用 C 或 C++ 实现。谷歌“字符串相似度”、“重复查找”或“记录链接”可用的指标和算法。

【讨论】:

  • 我认为在开始选择算法之前最好以适当的方式定义相似性,你是对的。干杯!
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多